Skip to content

🎯 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-app works
  • ✅ Interactive prompts (name, description, template)
  • ✅ Project structure generated
  • ⚠️ BLOCKER: Missing runtime package dependency
  • ⏳ Nice-to-have: npx create-gati-app wrapper (#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.ts runtime initialization (#123)
  • BLOCKER: No @gati-framework/runtime package (#122)
  • BLOCKER: No actual deployment execution (#124)

npx @gati-framework/cli deploy dev Developer can run the app in dev, test, and prod modes

ModeRequirementsStatus
DevHot reload, local system, minimal resources✅ 90% (dev server works, needs runtime)
TestCloud deployment, minimal resources❌ 0% (no cloud deployment)

🚨 Critical Blockers (Must Complete for MVP)

Priority 0 (P0) - BLOCKERS

#IssueTitleEffortDependenciesBlocks
1#122Extract @gati-framework/runtime Package4 daysM1.1 Complete ✅#123, #126
2#123Update Scaffolder to Generate Runnable Projects2 days#122#126
3#124Local Kubernetes Deployment3 days#51, #43#126
4#126MVP End-to-End Integration Test2 days#122, #123, #124MVP 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:

  1. Create packages/runtime/ structure
  2. Move code from src/runtime/packages/runtime/src/
  3. Export createApp(), GatiApp, handler loader
  4. Implement auto-handler discovery
  5. Build, test, publish to npm

Deliverables:

  • @gati-framework/runtime npm package
  • loadHandlers() function for auto-discovery npx @gati-framework/cli create my-app
  • ✅ Integration test

Acceptance:

typescript
// 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:

  1. Add src/index.ts template generation npx @gati-framework/cli dev
  2. Add environment config to gati.config.ts
  3. Add .dockerignore
  4. Test scaffolded project runs immediately

Template:

typescript
// 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 dev

Deliverables:

  • ✅ Updated file-generator templates
  • ✅ Projects runnable immediately after create
  • gati dev works out of the box

Phase 3: Local Deployment (Days 5-7)

Goal: Actually deploy to local Kubernetes

Issue #124: Local Kubernetes Deployment

Tasks:

  1. Detect local K8s cluster (kubectl context)
  2. Execute kubectl apply -f .gati/manifests/
  3. Check deployment status
  4. Port-forward for local access
  5. Add gati undeploy cleanup command

Flow:

bash
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:3000

Deliverables:

  • gati deploy dev deploys to local K8s
  • gati undeploy dev cleans 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:

  1. Create project: gati create test-app
  2. Dev mode: gati dev → verify running
  3. Build: gati build → verify dist/ created
  4. Deploy: gati deploy dev → verify K8s deployment
  5. Access: curl http://localhost:3000/hello → verify response
  6. 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:

  1. Create wrapper package
  2. Publish to npm
  3. Update docs

Benefit:

bash
# 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 deploy command 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

bash
npx @gati-framework/cli create my-blog-api
# Interactive prompts complete
# Project generated successfully

2. Immediate Dev Mode

bash
cd my-blog-api
gati dev
# Server running at http://localhost:3000
# Hot reload working
# Handlers responding

3. Production Build

bash
gati build
# dist/ directory created
# TypeScript compiled
# Build validated

4. Local Deployment

bash
gati deploy dev
# Manifests applied to local K8s
# Deployment successful
# Service accessible at http://localhost:3000

5. End-to-End Test

bash
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:

  1. M2: Cloud Deployment (#47-50)

    • AWS EKS integration
    • Production-ready deployments
  2. M3: API Versioning (#57-67)

    • Timestamp routing
    • Backward compatibility
  3. M4: Control Panel (#69-80)

    • Admin UI
    • Monitoring dashboard
  4. 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:

  1. Package the runtime
  2. Connect the scaffolder
  3. Execute the deployment

Estimated Effort: ~11 focused days to 100% MVP


Next Steps: Start with Issue #122 (Runtime Package Extraction)

Released under the MIT License.