Featured Project Project

Full-Stack Chat-Bot Framework

Self-hosted, multi-LLM chatbot with a live Admin UI, Telegram adapter, and Dockerized deployment

Python FastAPI Redis Uvicorn Docker Telegram Bot API Pydantic Pytest

TL;DR

An extensible, self-hosted chat-bot that streams responses, supports multiple LLMs (OpenAI, Gemini, Anthropic), runs on Docker with Redis for sessions, and includes a secure Admin UI for personas, config, and rate limits—no code edits required.

The Story

This framework turns a “chat bot” into a manageable application. It connects to Telegram (with a pattern for more channels), streams answers from your chosen LLM, and gives you a live Admin UI to tweak behavior in real time. The demo flow is simple: ask a question in Telegram, then hop into the Admin UI to edit the active persona (e.g., flip to “Pun Master Max”). Ask the same question again—watch the tone, style, and instructions switch instantly. Behind the scenes, a FastAPI backend exposes locked admin endpoints, Redis persists sessions, and Docker Compose keeps everything reproducible. Configuration lives in environment variables and persisted override files, with guardrails like basic auth for the Admin UI, JSON logs, health checks, and rate limiting. It’s modular by design: add LLM clients, drop in new channel adapters, or extend commands—all without unraveling the core.

Key Features

Live Admin UI: edit personas, LLM/provider/model, keys, rate limits, auth

Multi-LLM support: OpenAI, Gemini, Anthropic (plug-in client pattern)

Telegram adapter out of the box; stubs and base classes for more channels

Real-time streaming replies with token-aware conversation trimming

Session persistence via Redis + basic user-level rate limiting

Secure FastAPI admin endpoints with basic auth and locked docs

Config persistence to config_overrides.json and prompt_profiles.json

Dockerized deployment with docker-compose.yml (bot + Redis + volumes)

Health check endpoint (/healthz) and structured JSON logging

Ready for teams: tests via Pytest, clear project structure, env-driven config