Phased Roadmap, Key Milestones & Estimated Timelines
This document tracks the development progress of the BackLogAI project.
Current Phase: Phase 8 (Windows Client) 🚧 In Progress
Goal: Establish the monorepo structure, development environment, and core backend infrastructure.
Status:
- Repository Setup (Monorepo)
- Initialize Git repository.
- Structure:
/backend,/shared,/composeApp,/infra.
- Backend Infrastructure (Dockerized)
- Database: Setup PostgreSQL container.
- Backend: Setup Python 3.11+ container with FastAPI and Uvicorn.
- ORM: Configure Tortoise-ORM/SQLAlchemy (Async).
- Migrations: Initialize Aerich or Alembic.
- Authentication (SSO/OAuth)
- Implement OAuth2 flow (Google/GitHub) with
authlib. - Create
Usermodel. - Secure API endpoints (JWT).
- Implement OAuth2 flow (Google/GitHub) with
Goal: Implement the pillars, story generation, and prioritization engines.
Status:
- Input Module & Data Models
- Define Pydantic models for the 5 Key Pillars.
- Create API endpoints to validate project context.
- Story Generation Engine (AI-Powered)
- Integration: Connect to OpenAI API / Claude 3.5.
- Prompt Engineering: Enforce "Why now? Why this? Why us?".
- Logic: Implement Epics → Stories → Tasks decomposition.
- Prioritization Engine
- Implement RICE algorithm.
- Implement WSJF algorithm.
- Implement MoSCoW logic.
- Quality Validation Engine
- Implement INVEST criteria checks.
- Return warnings for vague stories.
Goal: Connect the generated backlog to the real world.
Status:
- JIRA Connector
- Implement Atlassian Python API wrapper.
- Map internal Story models to JIRA Issue types.
- Push Logic: Create/Update issues, link Epics to Stories.
- Pull Logic: Sync status updates.
- API Polish
- Finalize REST API documentation (Swagger/OpenAPI).
- Ensure all endpoints are async.
Goal: Write business logic once, run everywhere.
Status:
- Shared Module Setup
- Configure KMP for Android, iOS, JVM (Desktop), and Wasm (Web).
- Networking & Data
- Ktor Client: Implement API client.
- Serialization:
kotlinx.serialization(JSON). - Repositories: Auth, Backlog, Settings.
- View Models
- Implement shared ViewModels (MVVM).
Goal: Build a beautiful, responsive interface for all targets.
Status:
- Design System
- Implement Material 3 theme.
- Components:
PillarInputCard,StoryCard,PriorityBadge,KanbanBoard.
- Screens Implementation
- Login Screen: SSO handling.
- Dashboard: High-level metrics.
- Wizard/Input: Multi-step form for 5 Pillars.
- Backlog View: List/Kanban, Edit Mode.
- JIRA Sync: Status dashboard.
- Platform Specifics
- Desktop: Window management.
- Mobile: Touch interactions.
- Web: Responsive layout.
Goal: Ensure reliability and correctness.
Status:
- Backend Testing
- Unit tests (
pytest). - Integration tests.
- Unit tests (
- Frontend Testing
- UI tests (Compose).
- Unit tests (Shared KMP).
- Performance
- Verify "under 60 seconds" generation requirement.
Goal: Add Slack as a new client channel for story generation and Jira sync without impacting Android/iOS/macOS behavior.
Status:
-
Slack App & Connectivity
- Create Slack app with scopes (
chat:write,commands, interactivity). - Configure command and interaction callback URLs.
- Setup secure tunnel (Cloudflare Tunnel) to local backend endpoint.
- Validate Slack request signature verification and timestamp replay checks.
- Create Slack app with scopes (
-
Secure Connectivity (Quick Tunnel for Live Local Demo)
- Install
cloudflaredon host machine. - Start quick tunnel for BacklogAI callback host.
- Start quick tunnel for Jira host access.
- Validate callback behavior (
405on GET,401on unsigned POST). - Document URL rotation procedure in
SLACK_QUICK_TUNNEL_CHECKLIST.md.
- Install
-
Production Hardening (Deferred)
- Migrate from quick tunnels to named tunnel + stable DNS.
- Create Cloudflare Access self-hosted app for Jira public hostname.
- Add primary allow policy (team email domain allow-list).
- Confirm authenticated users can access Jira through protected URL.
-
Slack Bypass Policy for Jira Endpoints (Deferred)
- Add bypass policy for Jira Slack integration path:
/rest/slack/latest/*. - Add Slack source IP ranges:
-
3.23.0.0/14 -
3.120.0.0/14 -
35.154.0.0/15 -
44.192.0.0/11 -
52.64.0.0/13 -
54.64.0.0/13
-
- Ensure bypass policy priority is above team access allow policy.
- Add bypass policy for Jira Slack integration path:
-
Jira + Slack Finalization (Local Runtime)
- Keep Jira on local runtime and validate issue creation through Slack flow.
- Add Jira URL host fallback for local non-Docker backend runtime.
- Confirm repeated Slack sync clicks do not create duplicate Jira issues.
-
Backend Slack Adapter Layer
- Implement
POST /slack/commands(launch input modal). - Implement
POST /slack/interactions(modal submit + action buttons). - Add modal key/value parser mapped to
BacklogItemGenerateV2Request. - Build Slack Block Kit responses for Story Preview and actions.
- Add non-blocking command ACK path to avoid Slack
dispatch_unknown_error.
- Implement
-
Story Preview & Jira Sync Flow
- Generate Story Preview using existing v2 generation pipeline.
- Post preview message back to Slack channel.
- Implement "Sync to JIRA" action path reusing existing Jira sync service.
- Post Jira ticket key and URL back to Slack after successful sync.
-
State, Idempotency & Reliability
- Persist Slack session state (input payload, preview payload, sync status).
- Prevent duplicate Jira tickets on repeated sync actions.
- Return existing Jira key/URL for repeated sync clicks.
-
Validation & Regression
- Validate end-to-end Slack flow: input -> preview -> sync -> Jira response.
- Add tests for signature validation, payload mapping, and idempotency.
- Re-verify Android/iOS/macOS flows remain unchanged.
-
Scope Note
- Existing clients remain active: Android, iOS, macOS Desktop.
- Windows client rollout is tracked separately in Phase 8.
-
Documentation & Demos
- Publish Slack live setup guide and quick tunnel checklist.
- Update implementation and architecture docs for Slack runtime behavior.
- Add v3 demo assets for Slack and client app flows under
demo/.
Goal: Deliver a modern Windows desktop client with end-to-end story generation and Jira sync using Kotlin Multiplatform + Compose.
Status:
-
Planning & Scope Baseline
- Confirm architecture path: reuse
desktopMainCompose codebase. - Define distribution strategy: MSI installer + portable ZIP.
- Document Phase 8 plan in project roadmap.
- Confirm architecture path: reuse
-
Windows Runtime UX Modernization
- Improve desktop window defaults (initial size, minimum size, usability baseline).
- Refine desktop-friendly spacing and readability in Input/Result screens.
- Add clear desktop interaction feedback for generate/sync states.
-
Windows Packaging & Distribution
- Build Windows installer artifact (
.msi) using Compose Desktop distribution tasks. - Build portable Windows ZIP package for no-installation usage.
- Publish Windows binaries under
demo/binaries-v3/windows/.
- Build Windows installer artifact (
-
Windows End-to-End Validation
- Validate flow on Windows runtime: health -> generate v2 -> sync v2.
- Verify error handling UX (API unavailable, sync failures, retry behavior).
- Capture Windows demo assets under
demo/windows-e2e-v3/.
-
Cross-Platform Regression
- Re-verify Android, iOS, and macOS behaviors remain unchanged.
- Re-verify Slack client flow remains stable after desktop updates.
-
Documentation Track (Initial)
- Update README support matrix to reflect Windows in-progress status.
- Add Windows setup and release checklist docs.
- Add architecture notes for shared desktop path (macOS + Windows).
-
Documentation Track (Completion)
- Mark Windows client as live after successful E2E validation.
- Link final Windows demos and binaries in README.