Personal Lifecycle Tracker manages Renewals, Maintenance, and Warranties for independent users and shared collaborative groups, providing instant action summaries, in-app notifications, and scheduled daily morning email digests.
๐ Live Cloud Deployment & Reviewer Demo (Course Rubric Criterion 8 โ 2 Points):
- Web Application (React 19 SPA): https://d1ca9upoitnq9b.cloudfront.net/ (Global CloudFront CDN)
- Backend API Health: https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/health (AWS Lambda + Neon DB)
- Interactive Swagger UI: https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/docs
- Interactive ReDoc Documentation: https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/redoc
- OpenAPI 3.1.0 Contract Schema: https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/openapi.json
- Pre-Seeded Reviewer Credentials:
alex@example.com/password123(or click Sign Up for a fresh account)- See the complete Live Cloud Deployment & Peer Reviewer Demo Guide below for the step-by-step walkthrough and instant terminal verification commands.
Modern households, individuals, and small teams struggle to track scattered recurring commitments:
bcrypt), and stateless JWT token authorization.Full specification is frozen in product-spec.md and task breakdown in backlog.md.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Production โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Caddy 2 Reverse Proxy (Frontend Container) :80 โ โ
โ โ โโโ / -> React 19 SPA (Static Dist) โ โ
โ โ โโโ /api/* -> Reverse proxy to Backend :8000 โ โ
โ โ โโโ /health -> Reverse proxy to Backend :8000 โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ FastAPI Backend Service (Python 3.11) :8000 โ โ
โ โ โโโ Auth & Multi-User JWT Engine โ โ
โ โ โโโ Lifecycle Items (Renewals, Warranties, Maint)โ โ
โ โ โโโ Groups & Invitation Engine โ โ
โ โ โโโ Reminders & Daily Digest Service โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ PostgreSQL 16 Database :5432 โ โ
โ โ โโโ Automatic schema migration & pooling โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
contracts/openapi.yaml and openapi.yaml.docker-compose.yaml).k8s/ for Kind.observability/).The project followed a disciplined AI-native lifecycle using interactive agents (Antigravity, Claude Code, Cursor) and headless operational loops:
product-spec.md and _docs/plan.md.backlog.md and _docs/tasks.md.frontend/ with centralized mock services layer (src/services/api.ts).contracts/openapi.yaml.backend/ with in-memory fallback, then migrated to PostgreSQL.docker-compose.yaml).k8s/.observability/.on-call-engineer/ with code-enforced autonomy policy (autonomy-policy.json).Complete prompt transcripts, context injection strategies, and human verification gates are documented in docs/ai-tools-usage-and-review.md.
Run the full stack with hot reloading (zero host runtime dependencies required, powered entirely by Docker):
# Start full development cluster (PostgreSQL on :5434, Backend on :8003, Frontend on :3003)
make up
# Verify container status
make ps
# Stream logs
make logs
# Tear down containers
make down
Access endpoints:
Deploy the entire stack to a local Kubernetes cluster using Kind (Kubernetes in Docker):
# 1. Create a local Kind cluster
make kind-up
# 2. Build local images and load them into the Kind cluster
make kind-load
# 3. Apply declarative manifests (PostgreSQL PVC + Backend + Caddy Gateway)
make kind-deploy
# 4. Wait for pod readiness and verify rollout status
make kind-verify
# 5. Tear down Kind cluster when finished
make kind-down
For manifest specifications and port forwarding instructions, see k8s/README.md.
Test the unified production build locally on port 8088 (single port, Caddy reverse-proxying API & static SPA):
# Build and start production stack
make prod-up
# Verify health via reverse proxy
curl -f http://localhost:8088/health
# Stop production stack
make prod-down
All verification commands execute in isolated container environments:
# Run full test suite (Backend unit + integration, Frontend Vitest, E2E Playwright)
make test
# Run backend tests only (FastAPI unit tests)
make test-backend
# Run PostgreSQL integration tests (multi-user collaboration, DB transactions)
make test-integration
# Run frontend unit tests (Vitest)
make test-frontend
# Run frontend static typecheck & lint
make lint
# Run Playwright E2E browser tests (17 multi-user journeys)
make test-e2e
Personal Lifecycle Tracker includes a decoupled, containerized observability stack in observability/ featuring OpenTelemetry Collector, Prometheus, Loki, Tempo, and Grafana:
# Start observability stack
make obs-up
# Check container status
make obs-ps
# View live telemetry logs
make obs-logs
# Stop observability stack
make obs-down
admin / admin)http://localhost:4328http://localhost:3201http://localhost:3101Detailed metrics, logs, and trace pipelines are documented in observability/README.md and _docs/telemetry.md.
An autonomous monitoring and incident remediation pipeline under on-call-engineer/:
on-call-engineer/poll-alerts.py): Continuously polls Prometheus alert rules every minute.payload-schema.json and wakes up a headless coding agent.autonomy-policy.json and authorize-action.ops/diagnosis.md and ops/runbook.md.# Run continuous alert poller
make on-call-poll
# Run verification suite proving alert detection, prompt rendering, and agent dispatch
make on-call-verify
We maintain two independent copies of our infrastructure across Render and AWS:
dev): Isolated non-overlapping VPC networks (10.1.0.0/16) and free-tier plans.production): A second, independent copy of the infrastructure provisioned for high availability (10.0.0.0/16 VPC).| Cloud Platform | Dev Environment | Production Copy | Architecture |
|---|---|---|---|
| Render | render.yaml |
render.prod.yaml |
Managed PostgreSQL + FastAPI + React/Caddy |
| Render (Terraform) | terraform/render/ |
terraform/render-prod/ |
Declarative IaC via Render Terraform Provider |
| AWS (Terraform) | terraform/aws/ (10.1.0.0/16) |
terraform/aws-prod/ (10.0.0.0/16) |
EC2 (t3.micro/Free Tier) + Elastic IP + SSM |
| AWS (CloudFormation) | cloudformation/aws-serverless-lambda.yaml |
cloudformation/aws-serverless-lambda-prod.yaml |
1-Click AWS Serverless Stack (Lambda + S3 + CloudFront + OTel) |
The application is fully deployed and continuously reachable at public production URLs backed by AWS CloudFront CDN, AWS Lambda (with Lambda Web Adapter), and Neon Serverless PostgreSQL over TLS:
| Service / Interface | Public URL | Description | Expected Status / Output |
|---|---|---|---|
| Production Web Application | https://d1ca9upoitnq9b.cloudfront.net/ | React 19 SPA deployed on AWS CloudFront CDN edge with private S3 origin | HTTP/2 200 (Interactive Dashboard) |
| Backend API Gateway & Health | https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/health | FastAPI running on AWS Lambda with container adapter & pooled Neon Postgres | {"status":"healthy","database":"connected","version":"1.0.0"} |
| Interactive API Docs (Swagger UI) | https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/docs | Interactive Swagger UI testing live API endpoints directly in browser | HTTP 200 (Swagger UI) |
| Interactive ReDoc Documentation | https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/redoc | Searchable API contract reference matching frozen OpenAPI 3.0.3 spec | HTTP 200 (ReDoc UI) |
| OpenAPI 3.1.0 Contract Schema | https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/openapi.json | Raw machine-readable schema dynamically served by FastAPI | Valid OpenAPI 3.1.0 JSON |
| Local Development Web App | http://localhost:3003 | Local development Vite React frontend (via make up) |
HTTP 200 |
| Local Development API Health | http://localhost:8003/health | Local development FastAPI backend (via make up) |
{"status":"healthy","database":"connected","version":"1.0.0"} |
| Containerized Production Gateway | http://localhost:8088 | Local Caddy 2 reverse-proxying frontend and backend (via make prod-up) |
HTTP 200 |
The database is pre-seeded with accounts and 12 sample lifecycle items across all three categories (Renewals, Warranties, Maintenance):
| Password | Role / Account Type | Pre-Seeded Data Available | |
|---|---|---|---|
alex@example.com |
password123 |
Primary User (Alex Taylor) | 12 items: Passports, Car Insurance, Home Maintenance, TV Warranty, "Home Life" shared items |
sarah@example.com |
password123 |
Collaborator (Sarah Miller) | Shared group collaborator in "Home Life" |
jordan@example.com |
password123 |
Collaborator (Jordan Lee) | Shared group collaborator in "Apartment 4B" |
| New Registration | Any Password | Clean Account | Click "Sign Up" in top header to test zero-state registration |
Peer reviewers can validate the live public application in 2 minutes:
alex@example.com and password123 (or click "Sign Up" to create a fresh user).Car Insurance Renewal, Type: Renewal, Due Date: select a date 14 days from today, Estimated Cost: $120.00.Personal to Home Life.sarah@example.com), proving group-scoped multi-user access control.POST /api/v1/reminders/digest/send), aggregates all due items across user and group memberships, and renders a formatted preview of the scheduled morning digest email.Verify the live cloud endpoints from your terminal in seconds:
# 1. Verify CloudFront CDN distribution (Expected: HTTP/2 200 OK from CloudFront edge)
curl -sI https://d1ca9upoitnq9b.cloudfront.net/ | grep -E "HTTP|server|via|x-cache"
# 2. Verify Live Backend API Health on AWS Lambda (Expected: {"status":"healthy","database":"connected","version":"1.0.0"})
curl -s https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/health
# 3. Verify Live Authentication & JWT Generation via API
curl -s -X POST https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"alex@example.com","password":"password123"}' | grep -o '"email":"alex@example.com"'
# 4. Verify Interactive API Documentation (Expected: HTTP 200 OK)
curl -sI https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/docs | head -n 1
curl -sI https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/redoc | head -n 1
# 5. Verify Machine-Readable OpenAPI Schema (Expected: Valid OpenAPI 3.1.0 JSON)
curl -s https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/openapi.json | head -c 80
docs/deployment/README.md (AWS Terraform, CloudFormation, Render).# Validate ALL Terraform environments simultaneously (Dockerized)
make tf-validate
# Validate CloudFormation templates
make cf-validate
The automated GitHub Actions workflow (.github/workflows/ci.yml) provides test-gated delivery structured into two distinct stages:
YYYYMMDD-HHMMSS-shortsha pattern (e.g. 20260818-163457-83242da), and pushes them to Amazon ECR.docker compose -f docker-compose.prod.yml up -d --no-build), completely eliminating image building during deployment.id-token: write) to assume an AWS IAM role (terraform/aws/oidc.tf) to authenticate with ECR and AWS SSM.The manual workflow (.github/workflows/promote-dev-to-prod.yml) promotes verified dev versions to main:
vX.Y.Z, prod-latest), pushes to ECR, and serves on production without building from source.Personal Lifecycle Tracker packages an Agent Extension Pack conforming to the Agent Plugins 1.0/1.1 Open Standard (agent-plugins.org / AAIF):
plugin.json (closed schema, semantic versioning).mcp.json & mcp-server/server.py (stdio transport).skills/ and agent-capabilities/ (domain-workflow, review-api-change, debug-ci-failure).agent-hooks/ and com.google.antigravity/hooks/ (pre-tool-guardrail.sh, post-tool-audit.sh).custom-agent/specialist.md and custom-agent/agent.py.docs/permissions.md.docs/demo.md._docs/agent-extension-pack-evaluation.md (100% Score โ 56/56 checks passed).Comprehensive security audits and hardening artifacts under security/ and ops/:
security/pr-audit.md: PR Security Audit across OWASP API Top 10 risks.security/deterministic-scan.md: Deterministic SAST (Semgrep, Bandit, npm audit, Trufflehog - 0 High / 0 Critical).security/agent-extension-security.md: Security analysis of MCP tools, subagents, and hooks.security/ai-tool-data-policy.md: AI tool governance, human review gates, and zero data leakage.ops/diagnosis.md: Operational diagnosis output with Loki logs, Tempo traces, and metric resolution.ops/runbook.md: Production on-call triage procedures, disaster recovery, and rollbacks.This project adheres strictly to the official DataTalksClub AI Dev Tools Zoomcamp Final Project Rubric. Below is the 1:1 criteria mapping, points earned, and practical verification commands for peer reviewers:
| # | Criterion | Score | Max | Rubric Requirement | Verification Command / Evidence Link |
|---|---|---|---|---|---|
| 1 | Problem Description | 2 |
2 | README clearly describes the problem, system functionality, and expected behavior. | README Section 1, product-spec.md |
| 2 | Product Specification | 2 |
2 | Specification exists, public task tracker defines acceptance criteria, evidence agents used tracker. | product-spec.md, backlog.md, docs/ai-tools-usage-and-review.md |
| 3 | Agent Team Specification | 2 |
2 | Project defines the agent team and process of how they work together. | _docs/team.md, _docs/process.md, custom-agent/specialist.md |
| 4 | Context Management | 2 |
2 | AGENTS.md exists and points to modular docs (process, teams, architecture, etc.). | AGENTS.md, _docs/ |
| 5 | Application | 2 |
2 | Full-stack app works end to end (frontend, backend, database), runs locally with a single command. | make up -> open http://localhost:3003 & http://localhost:8003/health |
| 6 | Testing | 2 |
2 | Both unit and integration tests exist, run with a single command, and pass. | make test-backend (34 passed), make test-frontend (42 passed), make test-integration (27 passed), make test-e2e (22 passed) |
| 7 | Containerization | 2 |
2 | Full system, including database, runs via Docker/Compose and starts with a single command. | docker-compose.yaml, docker-compose.prod.yml, make up (docker compose ps) |
| 8 | Deployment | 2 |
2 | Application is deployed and reachable at a public URL, or clear demo with deployment. | Live Web App: https://d1ca9upoitnq9b.cloudfront.net/ Live Backend Health: https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/health Interactive Swagger Docs: https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/docs Interactive ReDoc: https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/redoc Walkthrough: 7-Step Live Demo Guide |
| 9 | CI/CD | 3 |
3 | CI runs tests, CD deploys to dev, and there's a manual deploy to production. | .github/workflows/ci.yml (auto-test + dev deploy), .github/workflows/promote-dev-to-prod.yml (manual release promotion) |
| 10 | Observability | 2 |
2 | Key user journey instrumented with metrics, traces, structured logs with trace ID; signals in UI. | make obs-up -> http://localhost:3004 (Grafana), backend/app/telemetry.py, _docs/telemetry.md |
| 11 | Alerting on User Impact | 1 |
1 | At least one alert exists alerting on user impact instead of CPU graphs. | observability/alert_rules.yml (HighHttpErrorRate, DailyDigestFailures, RepeatedItemCreationFailures) |
| 12 | On-Call Agent | 2 |
2 | An agent wakes up on an alert and fixes the issue. | on-call-engineer/poll-alerts.py, on-call-engineer/scripts/run-code-fix-drill (make on-call-code-fix-drill) |
| Total | 24 | 24 | (Passing threshold: 10 points) | Exceeds requirements across all 12 criteria |
Peer reviewers can verify every criterion in under 5 minutes using these reproducible steps:
# 1. Start the full application (Criteria 5 & 7)
make up
curl -s http://localhost:8003/health
# Expected: {"status":"healthy","database":"connected","version":"1.0.0"}
# 2. Run backend and frontend unit tests (Criterion 6)
make test-backend # 34 passed
make test-frontend # 42 passed
# 3. Run multi-user PostgreSQL integration tests (Criterion 6)
make test-integration # 27 passed
# 4. Verify live public cloud deployment (Criterion 8)
curl -sI https://d1ca9upoitnq9b.cloudfront.net/ | grep -E "HTTP|server|via"
# Expected: HTTP/2 200 (CloudFront CDN)
curl -s https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/health
# Expected: {"status":"healthy","database":"connected","version":"1.0.0"}
curl -sI https://7ksomsylvke2uawuhhccbfr6hy0agzyb.lambda-url.ap-south-1.on.aws/docs | head -n 1
# Expected: HTTP/1.1 200 OK (Interactive Swagger UI)
# 5. Verify Prometheus alert rules & user impact alerting (Criterion 11)
curl -s http://localhost:9091/api/v1/rules | grep "HighHttpErrorRate"
# Expected: Rule definition matches 5xx user error rate > 5%
# 6. Verify autonomous on-call agent polling & self-healing drill (Criterion 12)
bash on-call-engineer/scripts/verify
# Expected: All 8 stages verified (normalization, polling, agent trigger, evidence, policy authorization)