DV
Back to all projects

Team Management Platform

Collaboration Portal for 20+ Users

Full-stack platform with dual interface (Telegram Bot + Web). 6 modules: Kanban tasks, Zoom-integrated meetings with AI summaries, GetCourse analytics with KPI dashboard, Telegram channel monitoring with LLM analysis, scheduled broadcasts, and RBAC team management. Multi-provider AI (OpenAI, Anthropic, Gemini).

Authentication required — hosted on Vercel + Railway

FastAPI Next.js PostgreSQL Telegram API Zoom API OpenAI Anthropic
Team Management Platform

Overview

Oncoschool Team Portal is a full-stack team management system with dual entry points: a web interface and a Telegram bot. It combines task management, meeting planning, analytics, and integrations with external services (GetCourse, Zoom, Telegram) into a single platform for a team of ~20 people.

Architecture

┌─────────────────────────────────────────────────────┐
│              Frontend (Vercel)                        │
│  Next.js 14 · TypeScript · Tailwind CSS · shadcn/ui  │
│            Recharts · Lucide React                    │
└──────────────────────┬──────────────────────────────┘
                       │  REST API + JWT Auth + SSE
┌──────────────────────▼──────────────────────────────┐
│              Backend (Railway)                        │
│  FastAPI · Python 3.12 · SQLAlchemy 2.0 · Alembic   │
│            aiogram 3.x · APScheduler                  │
├──────────┬───────────┬───────────┬──────────────────┤
│PostgreSQL│ Zoom API  │ Telegram  │ AI Providers      │
│ (Supabase│ S2S OAuth │ Bot API + │ OpenAI / Anthropic│
│  asyncpg)│           │ Pyrofork  │ / Gemini          │
│          │           │           │                   │
│          │ GetCourse │ Whisper   │                   │
│          │ API       │ STT       │                   │
└──────────┴───────────┴───────────┴──────────────────┘

Key Features

Technical Highlights

ChallengeSolution
Dual entry point (Web + Telegram)Shared service layer between FastAPI and aiogram — business logic written once
Multi-provider AIStrategy pattern with per-feature config table; switch models without restart
Voice command processingWhisper STT → AI structured parsing → interactive preview before commit
Zoom transcript analysisVTT parsing with timestamps, LLM summarization, automatic task extraction
Department-scoped RBACThree roles (admin/moderator/member) with field-level control via PermissionService
Real-time updatesSSE with JWT via query parameter, heartbeat handling for reverse proxies

Tech Stack

LayerTechnology
FrontendNext.js 14, TypeScript, Tailwind CSS, shadcn/ui
ChartsRecharts
BackendFastAPI, Python 3.12, aiogram 3.x
ORMSQLAlchemy 2.0 (async), Alembic
DatabasePostgreSQL (Supabase, asyncpg)
AuthJWT + bcrypt, role-based access
AIOpenAI, Anthropic, Google Gemini (multi-provider)
STTOpenAI Whisper
IntegrationsZoom (S2S OAuth), Telegram (Bot + Pyrofork), GetCourse
SchedulingAPScheduler (AsyncIO)
DeployVercel (frontend), Railway (backend), Docker