Back to Projects
Full-Stack + AI

Todo App → Cloud-Native AI Agent (Spec-Driven Evolution)

5-phase spec-driven evolution from a Python CLI to a full cloud-native AI agent on Kubernetes. Phase 3: OpenAI Agents SDK on Groq with 6 FastMCP tools via MCPServerStdio. Phase 5: Kubernetes on Minikube with Dapr Jobs for natural language reminders and Kafka event streaming.

Todo App → Cloud-Native AI Agent (Spec-Driven Evolution)

// Problem

Demonstrate a complete, documented software evolution — from a console CLI to a production cloud-native AI agent — using Spec-Driven Development as the only discipline at every phase.

// Solution

5 progressive phases: CLI → Full-Stack Web App → AI Chatbot (Groq + MCP) → Local Kubernetes + Dapr Jobs + Kafka. Every phase has its own spec, plan, tasks, and PHR history.

// Screenshots

Live dashboard — 7 tasks with priorities, tags, and due dates. Real data from Murad's account.
Live dashboard — 7 tasks with priorities, tags, and due dates. Real data from Murad's account.
Natural language task creation — 'Add a high priority task: finish the project report by Friday' — done instantly
Natural language task creation — 'Add a high priority task: finish the project report by Friday' — done instantly
Search and filter — 'per' query surfaces Pay electricity bill and Call dentist with priority badges
Search and filter — 'per' query surfaces Pay electricity bill and Call dentist with priority badges
Roman Urdu support — 'Electric bill wali task ko complete mark kar do' — AI responds in Roman Urdu
Roman Urdu support — 'Electric bill wali task ko complete mark kar do' — AI responds in Roman Urdu
Real-time browser notification — OS-level push when a reminder task is due
Real-time browser notification — OS-level push when a reminder task is due
Backend API v3.2.0 — tasks, chat, notifications, Dapr Jobs schedule, and full schema definitions
Backend API v3.2.0 — tasks, chat, notifications, Dapr Jobs schedule, and full schema definitions
Kubernetes pods running on Minikube: app, Dapr, Kafka, PostgreSQL all healthy
Kubernetes pods running on Minikube: app, Dapr, Kafka, PostgreSQL all healthy
Helm chart deployed — todoai revision 9, STATUS: deployed on default namespace
Helm chart deployed — todoai revision 9, STATUS: deployed on default namespace

// Tech Stack

[Python 3.12][Next.js 15][FastAPI][SQLModel][Neon PostgreSQL][OpenAI Agents SDK][FastMCP (MCPServerStdio)][Groq LLaMA 3.3 70B][Alembic][Docker][Minikube][Kubernetes][Kafka][Dapr Jobs API][slowapi]

// Metrics

  • 5 complete evolution phases with individual spec, plan, tasks, and PHR records
  • 6 FastMCP tools: add_task, list_tasks, complete_task, delete_task, update_task, schedule_reminder
  • Singleton MCPServerStdio pattern — avoids 20-second subprocess startup per chat request
  • Dapr Jobs API + dateparser: 'Remind me tomorrow at 9am' → Dapr one-shot job → browser notification

// Highlights

  • 6 FastMCP tools via MCPServerStdio singleton — agent calls CRUD tools through a persistent subprocess, not per-request spawning
  • Dapr Jobs API for reminder scheduling: dateparser converts natural language times to UTC → Dapr fires callback → DB polling delivers browser notification
  • Roman Urdu support — agent detects Roman Urdu input and responds in-kind (e.g. 'Electric bill wali task complete kar do')
  • parallel_tool_calls=False required for Groq llama-3.3-70b tool call stability, max_turns=5 per chat cycle
  • Kafka event streaming via publish_task_event() on every CRUD operation — decouples notification service
  • Alembic migrations for production schema evolution; slowapi rate limiting (chat: 10/min, tasks: 30/min)