🎯 Gati MVP Roadmap - 100% Completion Plan
Last Updated: 2025-11-09
Status: In Progress (80% Complete)
Target: MVP Launch Ready
✅ npx @gati-framework/cli create my-app works (no global binary conflict) User can scaffold a basic Gati application by a single command with prompts
- ✅
npx @gati-framework/cli create my-appworks - ✅ Interactive prompts (name, description, template)
- ✅ Project structure generated
- ⚠️ BLOCKER: Missing runtime package dependency
- ⏳ Nice-to-have:
npx create-gati-appwrapper (#125)
Requirement 2: Ready-to-Deploy Projects ⚠️ 60%
Generated application should be deployable to dev/test/prod environments out of the box
- ✅ Deployment manifests generated (Dockerfile, K8s YAML, Helm)
- ✅ Environment configuration structure exists
- ❌ BLOCKER: No
src/index.tsruntime initialization (#123) - ❌ BLOCKER: No
@gati-framework/runtimepackage (#122) - ❌ BLOCKER: No actual deployment execution (#124)
npx @gati-framework/cli deploy dev Developer can run the app in dev, test, and prod modes
| Mode | Requirements | Status |
|---|---|---|
| Dev | Hot reload, local system, minimal resources | ✅ 90% (dev server works, needs runtime) |
| Test | Cloud deployment, minimal resources | ❌ 0% (no cloud deployment) |
🚨 Critical Blockers (Must Complete for MVP)
Priority 0 (P0) - BLOCKERS
| # | Issue | Title | Effort | Dependencies | Blocks |
|---|---|---|---|---|---|
| 1 | #122 | Extract @gati-framework/runtime Package | 4 days | M1.1 Complete ✅ | #123, #126 |
| 2 | #123 | Update Scaffolder to Generate Runnable Projects | 2 days | #122 | #126 |
| 3 | #124 | Local Kubernetes Deployment | 3 days | #51, #43 | #126 |
| 4 | #126 | MVP End-to-End Integration Test | 2 days | #122, #123, #124 | MVP Launch |
Total Critical Path: ~11 days (can be parallelized to ~9 days)
Priority 1 (P1) - High Priority (Nice-to-Have)
Goal: Package runtime so projects can execute
Issue #122: Extract @gati-framework/runtime Package
Tasks:
- Create
packages/runtime/structure - Move code from
src/runtime/→packages/runtime/src/ - Export
createApp(),GatiApp, handler loader - Implement auto-handler discovery
- Build, test, publish to npm
Deliverables:
- ✅
@gati-framework/runtimenpm package - ✅
loadHandlers()function for auto-discovery npx @gati-framework/cli create my-app - ✅ Integration test
Acceptance:
// Generated projects can do:
import { createApp } from '@gati-framework/runtime';
const app = createApp({ port: 3000 });
await app.listen();Phase 2: Scaffolder Updates (Days 3-4, Parallel)
Goal: Projects generated with runtime initialization
Issue #123: Update Scaffolder to Generate Runnable Projects
Tasks:
- Add
src/index.tstemplate generation npx @gati-framework/cli dev - Add environment config to
gati.config.ts - Add
.dockerignore - Test scaffolded project runs immediately
Template:
// src/index.ts (auto-generated)
npx @gati-framework/cli build
import { handler as helloHandler } from './handlers/hello.js';
const app = createApp({
port: parseInt(process.env.PORT || '3000'),
});
app.get('/hello', helloHandler);
npx @gati-framework/cli deploy devDeliverables:
- ✅ Updated file-generator templates
- ✅ Projects runnable immediately after create
- ✅
gati devworks out of the box
Phase 3: Local Deployment (Days 5-7)
Goal: Actually deploy to local Kubernetes
Issue #124: Local Kubernetes Deployment
Tasks:
- Detect local K8s cluster (kubectl context)
- Execute
kubectl apply -f .gati/manifests/ - Check deployment status
- Port-forward for local access
- Add
gati undeploycleanup command
Flow:
gati create my-app
cd my-app
gati deploy dev
# → Applies manifests to local cluster
# → Port-forwards to localhost:3000
# → App accessible at http://localhost:3000Deliverables:
- ✅
gati deploy devdeploys to local K8s - ✅
gati undeploy devcleans up - ✅ Error handling for missing cluster
- ✅ Progress reporting
Phase 4: MVP Validation (Days 8-9)
Goal: Prove MVP works end-to-end
Issue #126: MVP E2E Integration Test
Test Flow:
- Create project:
gati create test-app - Dev mode:
gati dev→ verify running - Build:
gati build→ verify dist/ created - Deploy:
gati deploy dev→ verify K8s deployment - Access:
curl http://localhost:3000/hello→ verify response - Cleanup:
gati undeploy dev→ verify cleanup
Deliverables:
- ✅ E2E test suite
- ✅ CI/CD integration
- ✅ Documentation for test setup
Phase 5 (Optional): DX Polish (Day 10)
Goal: Better developer experience
Issue #125: create-gati-app Wrapper
Tasks:
- Create wrapper package
- Publish to npm
- Update docs
Benefit:
# Instead of:
npx @gati-framework/cli create my-app
# Developers can use:
npx create-gati-app my-app✅ What's Already Complete
M1: Foundation & Core Runtime ✅ 100%
- ✅ Handler execution pipeline (#1-5)
- ✅ CLI commands (create, dev, build) (#6-11)
- ✅ Project scaffolding (#12-17)
- ✅ Documentation (getting started, handlers, modules)
M2: Deployment Infrastructure ⚠️ 40%
- ✅ Kubernetes manifest generation (#43-46)
- ✅
gati deploycommand structure (#51) - ⏳ AWS EKS automation (#47-50) - Post-MVP
- ⏳ Environment config system (#52) - Basic exists
Packages Published ✅
- ✅
@gati-framework/core@0.4.1(types, tsconfig) - ✅
@gati-framework/cli@0.2.1(commands, deployment templates)
❌ What's Deferred Post-MVP
These are valuable but NOT required for MVP:
Cloud Deployment
- ⏳ AWS EKS integration (#47-50) - M2
- ⏳ GCP/Azure support - M6
- Reason: Local K8s sufficient for MVP demo
API Versioning
- ⏳ Timestamp routing (#57-67) - M3
- Reason: Single version sufficient for initial launch
Observability
- ⏳ Monitoring dashboard (#74-76) - M4
- ⏳ Logging integration (#75)
- Reason: Basic console logs sufficient initially
Autoscaling
- ⏳ Production autoscaling (#44-45) - M2
- Reason: Config exists, can be manually configured
🎯 MVP Success Criteria
The MVP is complete when:
✅ 1. One Command Setup
npx @gati-framework/cli create my-blog-api
# Interactive prompts complete
# Project generated successfully✅ 2. Immediate Dev Mode
cd my-blog-api
gati dev
# Server running at http://localhost:3000
# Hot reload working
# Handlers responding✅ 3. Production Build
gati build
# dist/ directory created
# TypeScript compiled
# Build validated✅ 4. Local Deployment
gati deploy dev
# Manifests applied to local K8s
# Deployment successful
# Service accessible at http://localhost:3000✅ 5. End-to-End Test
npm test:e2e
# All MVP workflow tests pass📅 Timeline
Optimistic: 9 days (with parallelization)
Realistic: 11 days (sequential)
Conservative: 15 days (with buffer)
Week 1 (Days 1-5)
- Mon-Thu: #122 (Runtime package) + #123 (Scaffolder) in parallel
- Fri: Integration testing
Week 2 (Days 6-10)
- Mon-Wed: #124 (Local K8s deployment)
- Thu-Fri: #126 (E2E tests) + #125 (Wrapper - optional)
Week 3 (Days 11-15)
- Buffer for bugs/issues
- Documentation polish
- MVP demo preparation
🚀 Post-MVP Roadmap
After MVP completion, prioritize:
M2: Cloud Deployment (#47-50)
- AWS EKS integration
- Production-ready deployments
M3: API Versioning (#57-67)
- Timestamp routing
- Backward compatibility
M4: Control Panel (#69-80)
- Admin UI
- Monitoring dashboard
M5: SDK Generation (#81-93)
- Typed client generation
- NPM package publishing
📞 Getting Help
Blockers?
- Check existing issues for solutions
- Review MILESTONES.md for context
- Ask in GitHub Discussions
Contributing:
- See CONTRIBUTING.md
- Follow .github/copilot-instructions.md
- Run tests before committing
📝 Notes
Current State (Nov 9, 2025):
- Core runtime exists but not packaged ✅
- CLI works but scaffolds incomplete projects ⚠️
- Deployment generates manifests but doesn't deploy ⚠️
- 80% of work done, final 20% critical for usability
Key Insight: The framework is architecturally sound. We just need to:
- Package the runtime
- Connect the scaffolder
- Execute the deployment
Estimated Effort: ~11 focused days to 100% MVP
Next Steps: Start with Issue #122 (Runtime Package Extraction)