1a244f8f3d535ba1ae7cfca9a2cab6de9a5da20f
Implement full chat functionality with persistent sessions and messages stored in MongoDB, LLM completion via Ollama (with multi-provider dispatch support), markdown rendering, and a model selector. - Add ChatSession/ChatMessage models with serde attributes for MongoDB ObjectId handling (skip_serializing_if empty, alias _id) - Add CRUD server functions: list/create/rename/delete sessions, list/save messages, non-streaming chat completion - Add raw Document collection accessor for BSON ObjectId -> String conversion in read paths - Add SSE streaming endpoint (Axum handler) for future streaming support - Add provider dispatch client (Ollama, OpenAI, Anthropic, HuggingFace) - Add frontend components: ChatSidebar with namespace grouping, ChatModelSelector, ChatMessageList, ChatInputBar, ChatBubble with pulldown-cmark markdown rendering and StreamingBubble thinking indicator - Rewrite ChatPage with full signal-based state management - Add comprehensive CSS for chat UI, markdown prose, animations Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CERTifAI
Self-hosted, GDPR-compliant GenAI infrastructure dashboard
About
CERTifAI is a SaaS dashboard for administering self-hosted private GenAI infrastructure. It gives companies and individuals a single pane of glass to manage LLMs, Agents, MCP Servers, and other GenAI-related services -- without sending data to non-EU cloud providers.
Why? Protect your intellectual property from being used as training data. Stay fully GDPR-compliant with infrastructure you own.
Features
| Area | Capabilities |
|---|---|
| User Management | Add, remove, set roles, permissions, and restrictions |
| SSO / OAuth / LDAP | Connect to company identity providers and sync users |
| Feature Flags | Toggle GenAI features on or off per-org |
| Billing | View seat usage and token consumption per billing cycle |
| Support | Request support or new features via feedback form |
| GenAI Tools | Manage LLMs, Agents, MCP Servers; launch Langchain, Langfuse, Tavily; view endpoints and generate API keys |
Dashboard
The main dashboard provides a news feed powered by SearXNG and Ollama:
- Topic-based search -- Browse AI, Technology, Science, Finance, and custom topics. Add or remove topics on the fly; selections persist in localStorage.
- Article detail + AI summary -- Click any card to open a split-view panel. The full article is fetched, summarized by Ollama, and a follow-up chat lets you ask questions.
- Sidebar (visible when no article is selected):
- Ollama Status -- green/red indicator with the list of loaded models
- Trending -- keywords extracted from recent news headlines via SearXNG
- Recent Searches -- last 10 topics you searched, persisted in localStorage
Tech Stack
| Layer | Technology |
|---|---|
| Frontend | Dioxus 0.7 (fullstack + router), Tailwind CSS 4, DaisyUI 5 |
| Backend | Axum, tower-sessions, Dioxus server functions |
| Database | MongoDB |
| Auth | Keycloak 26+ (OAuth2 + PKCE, Organizations) |
| Search | SearXNG (meta-search) |
| LLM | Ollama (local inference) |
Getting Started
Prerequisites
- Rust 1.89+
- Dioxus CLI (
dx) - MongoDB
- Keycloak
- SearXNG (optional)
- Ollama (optional)
Setup
# Clone the repository
git clone https://gitea.meghsakha.com/sharang/certifai.git
cd certifai
# Configure environment
cp .env.example .env
# Edit .env with your Keycloak, MongoDB, and service URLs
# Run the dev server
dx serve
External Services
| Service | Purpose | Default URL |
|---|---|---|
| Keycloak | Identity provider / SSO | http://localhost:8080 |
| MongoDB | User data and preferences | mongodb://localhost:27017 |
| SearXNG | Meta-search engine for news | http://localhost:8888 |
| Ollama | Local LLM for summarization | http://localhost:11434 |
Project Structure
src/
components/ Frontend-only reusable UI components
infrastructure/ Server-side: auth, config, DB, server functions
models/ Shared data models (web + server)
pages/ Full page views composing components + models
assets/ Static assets (CSS, icons, manifest)
styles/ Tailwind/DaisyUI input stylesheet
bin/ Binary entrypoint
Git Workflow
We follow the feature branch workflow. The main branch is the default and protected branch.
- Conventional Commits are required for all commit messages
- We follow SemVer for versioning
CI
CI runs on Gitea Actions with runner tag docker.
Built with Rust, Dioxus, and a commitment to data sovereignty.
Description
The purpose of
https://dash-dev.meghsakha.com
CERTifAIis to provide self-hosted and GDPR-Compliant GenAI infrastructure to companies who do not wish to subscribe to non-EU cloud providers to protect their intellectual property from being used as training data.
Languages
Rust
47.4%
CSS
26.3%
HTML
18.9%
JavaScript
4%
TypeScript
3.1%
Other
0.3%