docs: add trading monorepo prd and roadmap
This commit is contained in:
commit
abcac4fa5a
465
docs/PRD.md
Normal file
465
docs/PRD.md
Normal file
@ -0,0 +1,465 @@
|
|||||||
|
# Investment Trading Product Monorepo PRD
|
||||||
|
|
||||||
|
## 1. Overview
|
||||||
|
|
||||||
|
`learning_ai_invt_trdg` is the new canonical monorepo for ByteLyst's trading product line. It replaces the current fragmented setup across:
|
||||||
|
|
||||||
|
- `bytelyst-trading-dashboard-web`
|
||||||
|
- `bytelyst-trading-bot-service`
|
||||||
|
- `bytelyst-trading-dashboard-mob`
|
||||||
|
|
||||||
|
The monorepo will consolidate product surfaces into a single product architecture patterned after `learning_ai_fastgap` and integrated deeply with `learning_ai_common_plat`.
|
||||||
|
|
||||||
|
This is not a lift-and-shift repo merge. It is a product and architecture reset with explicit goals:
|
||||||
|
|
||||||
|
- make trading a first-class ByteLyst ecosystem product
|
||||||
|
- remove duplicated auth, configuration, and platform integration code
|
||||||
|
- centralize product identity and operational controls
|
||||||
|
- preserve trading-domain moat locally while moving generic platform concerns to shared packages
|
||||||
|
- create a cleaner foundation for regulated, multi-surface, safety-critical trading workflows
|
||||||
|
|
||||||
|
## 2. Product Vision
|
||||||
|
|
||||||
|
Build a unified AI-assisted trading operating system across web, mobile, and backend that gives users safe, observable, controllable, and explainable trade automation.
|
||||||
|
|
||||||
|
The product should feel like one coherent system, not three separate applications:
|
||||||
|
|
||||||
|
- web is the power surface for setup, monitoring, audit, and advanced control
|
||||||
|
- mobile is the companion surface for secure monitoring, alerts, approvals, and lightweight intervention
|
||||||
|
- backend is the execution and state authority for trading logic, reconciliation, capital controls, and lifecycle correctness
|
||||||
|
- common platform provides the shared ecosystem rails for auth, kill switch, telemetry, flags, diagnostics, licensing, and product governance
|
||||||
|
|
||||||
|
## 3. Problem Statement
|
||||||
|
|
||||||
|
The current trading stack has valuable domain logic but the overall system is structurally fragmented.
|
||||||
|
|
||||||
|
### 3.1 Current fragmentation
|
||||||
|
|
||||||
|
- Web dashboard has custom auth/session handling and direct Supabase-heavy patterns.
|
||||||
|
- Bot service has its own service configuration, runtime control surface, and platform boundary logic.
|
||||||
|
- Mobile app is currently a thin UI shell without real ecosystem integration.
|
||||||
|
- Product identity is not canonical across all surfaces.
|
||||||
|
- Kill switch, maintenance mode, telemetry, and feature control are not treated as shared product infrastructure.
|
||||||
|
- Some integration points between frontend and backend appear inconsistent or partially implemented.
|
||||||
|
|
||||||
|
### 3.2 Why this matters
|
||||||
|
|
||||||
|
This product operates in a high-trust, high-risk domain:
|
||||||
|
|
||||||
|
- trading errors can lose money
|
||||||
|
- stale state can trigger wrong actions
|
||||||
|
- missing kill switches can turn incidents into losses
|
||||||
|
- inconsistent auth boundaries create severe security risk
|
||||||
|
- duplicated operational logic increases regression probability
|
||||||
|
|
||||||
|
The current setup can evolve further, but not safely or efficiently at the velocity expected for a serious multi-surface product.
|
||||||
|
|
||||||
|
## 4. Product Goals
|
||||||
|
|
||||||
|
### 4.1 Primary goals
|
||||||
|
|
||||||
|
1. Create one canonical product monorepo for the trading product.
|
||||||
|
2. Adopt ByteLyst common-platform primitives for auth, kill switch, telemetry, feature flags, diagnostics, config, and product identity.
|
||||||
|
3. Preserve and migrate the existing trading domain capabilities without carrying over architectural duplication.
|
||||||
|
4. Establish backend authority boundaries and surface contracts that are explicit, typed, and testable.
|
||||||
|
5. Support staged migration from the three legacy repos to the new monorepo with minimal production risk.
|
||||||
|
|
||||||
|
### 4.2 Secondary goals
|
||||||
|
|
||||||
|
1. Improve operator experience for support, incident response, and release management.
|
||||||
|
2. Make web and mobile share a common product model and runtime semantics.
|
||||||
|
3. Reduce future engineering cost by eliminating repeated auth/config/bootstrap code.
|
||||||
|
4. Make the repo structurally consistent with mature ByteLyst product repos such as `learning_ai_fastgap`.
|
||||||
|
|
||||||
|
## 5. Non-Goals
|
||||||
|
|
||||||
|
The following are explicitly out of scope for the monorepo foundation phase:
|
||||||
|
|
||||||
|
- rewriting core trading strategy logic for novelty
|
||||||
|
- moving strategy engine, execution logic, reconciliation logic, or capital ledger logic into `learning_ai_common_plat`
|
||||||
|
- replacing proven trading-domain logic unless required by correctness or architecture boundaries
|
||||||
|
- building a marketplace, billing, social layer, or new AI workflow before the platform foundation is stable
|
||||||
|
- merging all legacy history verbatim into the new repo without curation
|
||||||
|
|
||||||
|
## 6. Target Users
|
||||||
|
|
||||||
|
### 6.1 Retail and advanced trading users
|
||||||
|
|
||||||
|
- configure strategies
|
||||||
|
- monitor signals, entries, positions, and history
|
||||||
|
- understand why trades did or did not execute
|
||||||
|
- manage profile-level and account-level risk controls
|
||||||
|
- intervene manually when necessary
|
||||||
|
|
||||||
|
### 6.2 Operators and admins
|
||||||
|
|
||||||
|
- pause or resume trading globally or per scope
|
||||||
|
- inspect runtime health and reconciliation status
|
||||||
|
- monitor telemetry, incidents, and product safety posture
|
||||||
|
- manage maintenance windows, flags, and product rollouts
|
||||||
|
|
||||||
|
### 6.3 Engineering and support teams
|
||||||
|
|
||||||
|
- diagnose auth, sync, and runtime issues quickly
|
||||||
|
- release across surfaces consistently
|
||||||
|
- maintain a shared product contract across web, mobile, and backend
|
||||||
|
|
||||||
|
## 7. Product Principles
|
||||||
|
|
||||||
|
### 7.1 Safety before convenience
|
||||||
|
|
||||||
|
Trading control, capital protection, kill switches, reconciliation integrity, and correct auth boundaries take precedence over UX convenience.
|
||||||
|
|
||||||
|
### 7.2 One product, three surfaces
|
||||||
|
|
||||||
|
Web, mobile, and backend must behave as one product with shared terminology, shared product identity, and consistent control semantics.
|
||||||
|
|
||||||
|
### 7.3 Common where generic, local where differentiated
|
||||||
|
|
||||||
|
Move generic platform concerns into shared packages. Keep trading-domain moat local.
|
||||||
|
|
||||||
|
### 7.4 Backend authority
|
||||||
|
|
||||||
|
The backend is the authority for trade execution, runtime state, safety decisions, and audit-relevant lifecycle truth. Frontends render and request; they do not become safety authorities.
|
||||||
|
|
||||||
|
### 7.5 Migration without chaos
|
||||||
|
|
||||||
|
The new repo should be built as the target system while the old repos remain stable references until cutover.
|
||||||
|
|
||||||
|
## 8. Product Surfaces
|
||||||
|
|
||||||
|
## 8.1 Web
|
||||||
|
|
||||||
|
Primary responsibilities:
|
||||||
|
|
||||||
|
- authenticated dashboard shell
|
||||||
|
- strategy/profile management
|
||||||
|
- configuration and admin control
|
||||||
|
- observability and reconciliation views
|
||||||
|
- lifecycle, entries, positions, history, marketplace, and settings
|
||||||
|
- operator-grade UX for incident triage and runtime understanding
|
||||||
|
|
||||||
|
Must integrate:
|
||||||
|
|
||||||
|
- `@bytelyst/react-auth`
|
||||||
|
- platform-driven kill switch / maintenance mode
|
||||||
|
- feature flags
|
||||||
|
- telemetry and diagnostics
|
||||||
|
- shared product metadata
|
||||||
|
|
||||||
|
## 8.2 Mobile
|
||||||
|
|
||||||
|
Primary responsibilities:
|
||||||
|
|
||||||
|
- secure session restore
|
||||||
|
- launch-time kill switch handling
|
||||||
|
- live overview, alerts, positions, and compact history
|
||||||
|
- secure user actions for manual review/intervention
|
||||||
|
- notification and incident awareness
|
||||||
|
|
||||||
|
Must integrate:
|
||||||
|
|
||||||
|
- `@bytelyst/react-native-platform-sdk`
|
||||||
|
- platform auth and token lifecycle
|
||||||
|
- telemetry and diagnostics
|
||||||
|
- feature flags
|
||||||
|
- kill switch and maintenance gate
|
||||||
|
|
||||||
|
## 8.3 Backend
|
||||||
|
|
||||||
|
Primary responsibilities:
|
||||||
|
|
||||||
|
- market data ingestion
|
||||||
|
- trade decision execution
|
||||||
|
- order lifecycle and history integrity
|
||||||
|
- reconciliation and repair flows
|
||||||
|
- runtime control and operator safety
|
||||||
|
- tenant/user scoping
|
||||||
|
- API and websocket contracts for clients
|
||||||
|
|
||||||
|
Must integrate:
|
||||||
|
|
||||||
|
- common config and product identity conventions
|
||||||
|
- shared auth middleware/contracts where applicable
|
||||||
|
- platform-compatible telemetry and diagnostics
|
||||||
|
- kill switch semantics and maintenance-aware behavior
|
||||||
|
|
||||||
|
## 9. Core Product Capabilities
|
||||||
|
|
||||||
|
### 9.1 Identity and access
|
||||||
|
|
||||||
|
- canonical product identity via `shared/product.json`
|
||||||
|
- user auth through shared ByteLyst platform contracts
|
||||||
|
- role-aware access for admin and non-admin users
|
||||||
|
- device/session aware auth state where applicable
|
||||||
|
|
||||||
|
### 9.2 Safety and kill switches
|
||||||
|
|
||||||
|
- product-wide kill switch
|
||||||
|
- maintenance mode
|
||||||
|
- global trade halt
|
||||||
|
- profile-level or tenant-level trading disable
|
||||||
|
- backend loop safety gates
|
||||||
|
- clear UX behavior when the product is disabled or degraded
|
||||||
|
|
||||||
|
### 9.3 Runtime observability
|
||||||
|
|
||||||
|
- health, loop status, reconciliation status, and operational warnings
|
||||||
|
- client and backend telemetry
|
||||||
|
- correlation IDs across web, mobile, backend, and platform-service
|
||||||
|
- diagnostics hooks for remote support and incident review
|
||||||
|
|
||||||
|
### 9.4 Trading execution and lifecycle integrity
|
||||||
|
|
||||||
|
- authoritative backend trade lifecycle
|
||||||
|
- canonical orders, positions, history, and capital state
|
||||||
|
- reconciliation and recovery flows
|
||||||
|
- deterministic behavior under retries or restart
|
||||||
|
- explicit lifecycle audit model
|
||||||
|
|
||||||
|
### 9.5 Configuration and control
|
||||||
|
|
||||||
|
- typed config schema and validation
|
||||||
|
- environment-aware runtime configuration
|
||||||
|
- feature-gated rollout of risky or incomplete features
|
||||||
|
- admin controls that are secure, auditable, and reversible
|
||||||
|
|
||||||
|
### 9.6 Explainability and trust
|
||||||
|
|
||||||
|
- why a trade executed or did not execute
|
||||||
|
- why a rule blocked action
|
||||||
|
- clear distinction between user-visible summaries and backend authority decisions
|
||||||
|
|
||||||
|
## 10. Product Architecture
|
||||||
|
|
||||||
|
## 10.1 Desired repo structure
|
||||||
|
|
||||||
|
```text
|
||||||
|
learning_ai_invt_trdg/
|
||||||
|
├── app/ or src/ # Expo mobile app
|
||||||
|
├── web/ # Web dashboard
|
||||||
|
├── backend/ # Trading backend / bot service
|
||||||
|
├── shared/
|
||||||
|
│ └── product.json # Canonical product identity
|
||||||
|
├── docs/
|
||||||
|
├── scripts/
|
||||||
|
├── pnpm-workspace.yaml
|
||||||
|
├── package.json
|
||||||
|
├── docker-compose.yml
|
||||||
|
└── .env.example
|
||||||
|
```
|
||||||
|
|
||||||
|
### 10.2 Shared dependency model
|
||||||
|
|
||||||
|
The monorepo will consume `learning_ai_common_plat` packages by local workspace-style file references, following the proven FastGap pattern:
|
||||||
|
|
||||||
|
- `../learning_ai_common_plat/packages/*`
|
||||||
|
|
||||||
|
The product backend remains product-specific. Platform-service remains the shared destination for:
|
||||||
|
|
||||||
|
- auth
|
||||||
|
- feature flags
|
||||||
|
- kill switch
|
||||||
|
- telemetry
|
||||||
|
- diagnostics
|
||||||
|
- licensing/subscription related concerns if needed later
|
||||||
|
|
||||||
|
### 10.3 Domain ownership split
|
||||||
|
|
||||||
|
Keep in product repo:
|
||||||
|
|
||||||
|
- trading strategy logic
|
||||||
|
- execution manager
|
||||||
|
- reconciliation services
|
||||||
|
- capital ledger
|
||||||
|
- lifecycle integrity and safety logic
|
||||||
|
- product-specific API contracts
|
||||||
|
- trading UI and product-specific mobile UX
|
||||||
|
|
||||||
|
Move to common platform or shared package usage:
|
||||||
|
|
||||||
|
- auth bootstrap
|
||||||
|
- shared auth UI/provider patterns
|
||||||
|
- session/token lifecycle helpers
|
||||||
|
- product identity
|
||||||
|
- generic telemetry and diagnostics
|
||||||
|
- kill switch client usage
|
||||||
|
- feature flag client usage
|
||||||
|
- shared config loading patterns
|
||||||
|
|
||||||
|
## 11. Product Identity
|
||||||
|
|
||||||
|
The monorepo must define canonical product identity in `shared/product.json`.
|
||||||
|
|
||||||
|
Minimum required fields:
|
||||||
|
|
||||||
|
- `productId`
|
||||||
|
- `displayName`
|
||||||
|
- `description`
|
||||||
|
- `domain`
|
||||||
|
- `backendPort`
|
||||||
|
- `bundleId`
|
||||||
|
- `platforms`
|
||||||
|
- `primarySurface`
|
||||||
|
- `mobileCompanion`
|
||||||
|
- `licensePrefix`
|
||||||
|
- `configDirName`
|
||||||
|
- `envVarPrefix`
|
||||||
|
- `packageName`
|
||||||
|
- `version`
|
||||||
|
|
||||||
|
Recommended initial stance:
|
||||||
|
|
||||||
|
- one product identity for the whole trading system
|
||||||
|
- web, mobile, and backend are surfaces of the same product, not separate products
|
||||||
|
- sub-surface names can be used operationally, but not as separate top-level product IDs
|
||||||
|
|
||||||
|
## 12. Functional Requirements
|
||||||
|
|
||||||
|
### 12.1 Monorepo bootstrap
|
||||||
|
|
||||||
|
- root package management with pnpm
|
||||||
|
- workspace layout similar to FastGap
|
||||||
|
- common scripts for verify, build, lint, and test
|
||||||
|
- environment examples and local-dev instructions
|
||||||
|
|
||||||
|
### 12.2 Web requirements
|
||||||
|
|
||||||
|
- authenticated web shell
|
||||||
|
- shared auth provider integration
|
||||||
|
- maintenance and kill-switch blocking states
|
||||||
|
- typed API client layer for backend communication
|
||||||
|
- websocket/session handling consistent with auth state
|
||||||
|
- admin/operator views protected by role checks
|
||||||
|
|
||||||
|
### 12.3 Mobile requirements
|
||||||
|
|
||||||
|
- auth bootstrap and restore flow
|
||||||
|
- launch-time kill switch check
|
||||||
|
- shared telemetry startup
|
||||||
|
- feature flag polling or refresh policy
|
||||||
|
- secure token storage and refresh handling
|
||||||
|
- notification-ready architecture
|
||||||
|
|
||||||
|
### 12.4 Backend requirements
|
||||||
|
|
||||||
|
- explicit API contract for frontend and mobile clients
|
||||||
|
- websocket auth and tenant scoping
|
||||||
|
- typed config schema
|
||||||
|
- secure admin controls
|
||||||
|
- kill-switch aware trading loop behavior
|
||||||
|
- audit and observability hooks
|
||||||
|
|
||||||
|
### 12.5 Migration requirements
|
||||||
|
|
||||||
|
- preserve critical trading logic from legacy repos
|
||||||
|
- avoid porting dead code and inconsistent glue
|
||||||
|
- support staged cutover by surface
|
||||||
|
- maintain production continuity during migration
|
||||||
|
|
||||||
|
## 13. Non-Functional Requirements
|
||||||
|
|
||||||
|
### 13.1 Security
|
||||||
|
|
||||||
|
- no unauthenticated trading actions
|
||||||
|
- no stale token trust shortcuts
|
||||||
|
- no product control endpoints without explicit authorization
|
||||||
|
- mobile and web behavior consistent with backend auth authority
|
||||||
|
|
||||||
|
### 13.2 Reliability
|
||||||
|
|
||||||
|
- restart-safe runtime behavior
|
||||||
|
- reconciliation-safe lifecycle recovery
|
||||||
|
- kill-switch behavior must fail safe
|
||||||
|
- degraded platform-service conditions must have defined fallback behavior
|
||||||
|
|
||||||
|
### 13.3 Observability
|
||||||
|
|
||||||
|
- telemetry across all surfaces
|
||||||
|
- structured logs with trace and correlation fields
|
||||||
|
- auditable admin/control actions
|
||||||
|
- backend health and safety metrics exposed consistently
|
||||||
|
|
||||||
|
### 13.4 Maintainability
|
||||||
|
|
||||||
|
- DRY by design for bootstrap logic
|
||||||
|
- no parallel auth systems
|
||||||
|
- no parallel kill-switch implementations
|
||||||
|
- clear module ownership
|
||||||
|
|
||||||
|
### 13.5 Performance
|
||||||
|
|
||||||
|
- web must remain responsive under live updates
|
||||||
|
- mobile must optimize battery/network usage
|
||||||
|
- backend loops must not regress in latency due to platform integration
|
||||||
|
|
||||||
|
## 14. Risks
|
||||||
|
|
||||||
|
### 14.1 Architecture risks
|
||||||
|
|
||||||
|
- carrying too much legacy shape into the new monorepo can preserve old problems
|
||||||
|
- over-extracting domain logic into common platform can blur ownership and weaken trading safety boundaries
|
||||||
|
|
||||||
|
### 14.2 Migration risks
|
||||||
|
|
||||||
|
- partial migration can create double-maintained logic
|
||||||
|
- auth changes can break web and mobile clients if backend boundaries are not stabilized first
|
||||||
|
- kill switch semantics can become ambiguous if app maintenance mode and trade-halt mode are conflated
|
||||||
|
|
||||||
|
### 14.3 Product risks
|
||||||
|
|
||||||
|
- mobile may become a cosmetic mirror instead of a true product surface if not scoped clearly
|
||||||
|
- operator workflows may remain buried in backend or docs unless explicitly designed into the product
|
||||||
|
|
||||||
|
## 15. Success Metrics
|
||||||
|
|
||||||
|
### 15.1 Foundation metrics
|
||||||
|
|
||||||
|
- all three surfaces live in one monorepo
|
||||||
|
- single canonical product identity exists and is used by all surfaces
|
||||||
|
- all surfaces use common-platform auth and kill-switch integration patterns
|
||||||
|
- zero duplicated bootstrap implementations for auth, telemetry, and kill switch
|
||||||
|
|
||||||
|
### 15.2 Engineering metrics
|
||||||
|
|
||||||
|
- no custom auth provider remains in web if shared provider covers the need
|
||||||
|
- no mobile hand-rolled platform bootstrap remains for generic platform concerns
|
||||||
|
- backend config and control boundaries are typed and documented
|
||||||
|
|
||||||
|
### 15.3 Product metrics
|
||||||
|
|
||||||
|
- authenticated user can sign in and restore session consistently across web and mobile
|
||||||
|
- operator can halt product activity through defined control paths
|
||||||
|
- users can understand state, risk, and execution outcomes from surface UX
|
||||||
|
|
||||||
|
## 16. Delivery Strategy
|
||||||
|
|
||||||
|
The new monorepo will be treated as the target system, not a passive archive.
|
||||||
|
|
||||||
|
Recommended migration order:
|
||||||
|
|
||||||
|
1. Define product identity, repo skeleton, and platform integration contracts.
|
||||||
|
2. Stabilize backend contracts and control boundaries.
|
||||||
|
3. Migrate or rebuild web against those contracts.
|
||||||
|
4. Build mobile against the same contracts using the React Native platform SDK.
|
||||||
|
5. Complete validation, observability, and cutover planning.
|
||||||
|
|
||||||
|
## 17. Open Questions
|
||||||
|
|
||||||
|
These must be resolved early:
|
||||||
|
|
||||||
|
1. Will the trading product use one canonical product ID for all surfaces, or is there a real business reason to split mobile/web/backend identity?
|
||||||
|
2. Which auth source remains authoritative during early migration: current Supabase-backed identity or direct platform-service identity flows?
|
||||||
|
3. What exact kill-switch model is required?
|
||||||
|
4. Does mobile support approve/reject/override actions, or is it monitor-first at launch?
|
||||||
|
5. Which existing web tabs are truly product-critical for v1 of the monorepo and which should be deferred behind flags?
|
||||||
|
|
||||||
|
## 18. Immediate PRD Acceptance Criteria
|
||||||
|
|
||||||
|
This PRD is acceptable when the implementation roadmap it drives does all of the following:
|
||||||
|
|
||||||
|
- treats the new monorepo as the source of future product evolution
|
||||||
|
- uses FastGap as the structural template, not as a direct code clone
|
||||||
|
- uses common platform as the shared ecosystem backbone
|
||||||
|
- preserves trading-domain logic as product-owned
|
||||||
|
- explicitly plans migration, safety, auth, kill switch, telemetry, and DRY cleanup
|
||||||
450
docs/ROADMAP.md
Normal file
450
docs/ROADMAP.md
Normal file
@ -0,0 +1,450 @@
|
|||||||
|
# Investment Trading Monorepo Roadmap
|
||||||
|
|
||||||
|
## 1. Purpose
|
||||||
|
|
||||||
|
This roadmap turns the PRD into an execution plan for `learning_ai_invt_trdg`, the new canonical monorepo for the trading product.
|
||||||
|
|
||||||
|
It assumes:
|
||||||
|
|
||||||
|
- `learning_ai_fastgap` is the structural reference monorepo
|
||||||
|
- `learning_ai_common_plat` is the shared ecosystem dependency source
|
||||||
|
- the three current trading repos are migration inputs, not the permanent architecture
|
||||||
|
|
||||||
|
## 2. Guiding Rules
|
||||||
|
|
||||||
|
1. Build the target repo cleanly first.
|
||||||
|
2. Do not duplicate auth, kill switch, telemetry, or config bootstrap.
|
||||||
|
3. Do not move core trading moat into common-platform packages.
|
||||||
|
4. Do not preserve legacy repo boundaries inside the new monorepo if they block clarity.
|
||||||
|
5. Migrate by contract, not by uncontrolled file copying.
|
||||||
|
|
||||||
|
## 3. Target Repository Shape
|
||||||
|
|
||||||
|
```text
|
||||||
|
learning_ai_invt_trdg/
|
||||||
|
├── app/ or src/ # Expo mobile app
|
||||||
|
├── web/ # Web dashboard
|
||||||
|
├── backend/ # Trading backend
|
||||||
|
├── shared/
|
||||||
|
│ └── product.json
|
||||||
|
├── docs/
|
||||||
|
├── scripts/
|
||||||
|
├── pnpm-workspace.yaml
|
||||||
|
├── package.json
|
||||||
|
├── docker-compose.yml
|
||||||
|
└── .env.example
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. Workstreams
|
||||||
|
|
||||||
|
### 4.1 Product and architecture
|
||||||
|
|
||||||
|
- define canonical product identity
|
||||||
|
- define surface boundaries
|
||||||
|
- define backend authority model
|
||||||
|
- define migration/cutover plan
|
||||||
|
|
||||||
|
### 4.2 Shared platform integration
|
||||||
|
|
||||||
|
- auth
|
||||||
|
- kill switch
|
||||||
|
- feature flags
|
||||||
|
- telemetry
|
||||||
|
- diagnostics
|
||||||
|
- config and product metadata
|
||||||
|
|
||||||
|
### 4.3 Backend migration
|
||||||
|
|
||||||
|
- API and websocket contracts
|
||||||
|
- runtime control
|
||||||
|
- reconciliation and lifecycle
|
||||||
|
- observability
|
||||||
|
|
||||||
|
### 4.4 Web migration
|
||||||
|
|
||||||
|
- auth and session handling
|
||||||
|
- dashboard shell
|
||||||
|
- API/websocket client adaptation
|
||||||
|
- operator/admin workflows
|
||||||
|
|
||||||
|
### 4.5 Mobile rebuild
|
||||||
|
|
||||||
|
- auth bootstrap
|
||||||
|
- kill switch
|
||||||
|
- telemetry
|
||||||
|
- core monitor/intervention UX
|
||||||
|
|
||||||
|
### 4.6 Quality and release engineering
|
||||||
|
|
||||||
|
- scripts
|
||||||
|
- verification
|
||||||
|
- docs
|
||||||
|
- rollout readiness
|
||||||
|
|
||||||
|
## 5. Phase Plan
|
||||||
|
|
||||||
|
## Phase 0: Product Definition and Monorepo Foundation
|
||||||
|
|
||||||
|
### Objective
|
||||||
|
|
||||||
|
Create a credible target repository with clear product identity and explicit integration contracts before any code migration starts.
|
||||||
|
|
||||||
|
### Tasks
|
||||||
|
|
||||||
|
- create canonical product identity in `shared/product.json`
|
||||||
|
- define `package.json`, `pnpm-workspace.yaml`, and top-level scripts
|
||||||
|
- define root docs, local-dev model, and environment model
|
||||||
|
- define shared dependency strategy on `../learning_ai_common_plat/packages/*`
|
||||||
|
- define repo conventions based on FastGap where useful
|
||||||
|
- define product IDs, ports, env prefixes, domains, and package naming
|
||||||
|
|
||||||
|
### Deliverables
|
||||||
|
|
||||||
|
- root product metadata
|
||||||
|
- root package/workspace config
|
||||||
|
- initial repo skeleton
|
||||||
|
- environment contract
|
||||||
|
- migration design notes
|
||||||
|
|
||||||
|
### Exit Criteria
|
||||||
|
|
||||||
|
- repo structure is approved
|
||||||
|
- product identity is approved
|
||||||
|
- platform integration boundaries are approved
|
||||||
|
|
||||||
|
## Phase 1: Shared Platform Contract Layer
|
||||||
|
|
||||||
|
### Objective
|
||||||
|
|
||||||
|
Ensure all surfaces adopt one consistent platform model for auth, kill switch, telemetry, flags, and diagnostics.
|
||||||
|
|
||||||
|
### Tasks
|
||||||
|
|
||||||
|
- define web auth pattern using `@bytelyst/react-auth`
|
||||||
|
- define mobile auth pattern using `@bytelyst/react-native-platform-sdk`
|
||||||
|
- define backend auth boundary and middleware strategy
|
||||||
|
- define kill-switch semantics across web, mobile, and backend
|
||||||
|
- define telemetry envelope fields
|
||||||
|
- define correlation ID and request propagation strategy
|
||||||
|
- define feature flag ownership and evaluation model
|
||||||
|
|
||||||
|
### Deliverables
|
||||||
|
|
||||||
|
- auth integration spec
|
||||||
|
- kill-switch behavior spec
|
||||||
|
- telemetry/diagnostics contract
|
||||||
|
- shared config conventions
|
||||||
|
|
||||||
|
### Exit Criteria
|
||||||
|
|
||||||
|
- there is no ambiguity about platform-service versus product-backend responsibilities
|
||||||
|
- all three surfaces have approved integration patterns
|
||||||
|
|
||||||
|
## Phase 2: Backend First Migration
|
||||||
|
|
||||||
|
### Objective
|
||||||
|
|
||||||
|
Make backend the stable authority before web and mobile migrate heavily onto it.
|
||||||
|
|
||||||
|
### Why backend first
|
||||||
|
|
||||||
|
The trading product is safety-critical. Web and mobile must align around a stable backend authority model rather than dragging legacy assumptions forward.
|
||||||
|
|
||||||
|
### Tasks
|
||||||
|
|
||||||
|
- create `backend/` workspace
|
||||||
|
- migrate core trading service modules selectively
|
||||||
|
- define typed API contract for status, alerts, config, lifecycle, trade, admin control, and health
|
||||||
|
- define websocket auth and scoping model
|
||||||
|
- normalize config loading and schema validation
|
||||||
|
- integrate platform-aware telemetry and diagnostics
|
||||||
|
- integrate explicit kill-switch and maintenance semantics
|
||||||
|
- standardize admin controls and audit logging
|
||||||
|
- document deprecated endpoints and legacy compatibility strategy
|
||||||
|
|
||||||
|
### Keep local
|
||||||
|
|
||||||
|
- trade execution
|
||||||
|
- strategy logic
|
||||||
|
- lifecycle and reconciliation
|
||||||
|
- capital ledger
|
||||||
|
- market/exchange integration
|
||||||
|
|
||||||
|
### Reuse from common platform
|
||||||
|
|
||||||
|
- auth middleware patterns
|
||||||
|
- config conventions
|
||||||
|
- telemetry infrastructure
|
||||||
|
- diagnostics patterns
|
||||||
|
|
||||||
|
### Exit Criteria
|
||||||
|
|
||||||
|
- backend has stable typed contracts
|
||||||
|
- auth is enforced consistently
|
||||||
|
- kill-switch and control semantics are defined and testable
|
||||||
|
|
||||||
|
## Phase 3: Web Dashboard Migration
|
||||||
|
|
||||||
|
### Objective
|
||||||
|
|
||||||
|
Move the web dashboard onto the new repo and onto shared platform bootstrap patterns.
|
||||||
|
|
||||||
|
### Tasks
|
||||||
|
|
||||||
|
- create `web/` workspace
|
||||||
|
- migrate UI modules by priority, not blindly
|
||||||
|
- replace custom auth provider with shared auth pattern
|
||||||
|
- move runtime config to common conventions
|
||||||
|
- standardize API client and websocket token propagation
|
||||||
|
- integrate maintenance and kill-switch UX states
|
||||||
|
- gate unfinished tabs/features behind flags
|
||||||
|
- define admin/operator routes and role-based controls
|
||||||
|
- normalize terminology, models, and UI behavior around backend authority
|
||||||
|
|
||||||
|
### Priority order
|
||||||
|
|
||||||
|
1. auth shell and session restore
|
||||||
|
2. overview, positions, history
|
||||||
|
3. config and settings
|
||||||
|
4. admin and runtime controls
|
||||||
|
5. advanced tabs such as marketplace and backtesting
|
||||||
|
|
||||||
|
### Exit Criteria
|
||||||
|
|
||||||
|
- web is no longer dependent on legacy custom auth context
|
||||||
|
- web contracts align with new backend
|
||||||
|
- kill-switch and maintenance states are integrated
|
||||||
|
|
||||||
|
## Phase 4: Mobile Rebuild
|
||||||
|
|
||||||
|
### Objective
|
||||||
|
|
||||||
|
Build mobile as a real ecosystem surface, not a mock UI shell.
|
||||||
|
|
||||||
|
### Tasks
|
||||||
|
|
||||||
|
- create Expo app structure following FastGap-style monorepo conventions
|
||||||
|
- add product config bootstrap
|
||||||
|
- integrate `@bytelyst/react-native-platform-sdk`
|
||||||
|
- implement auth flow and session restore
|
||||||
|
- implement launch-time kill-switch and maintenance handling
|
||||||
|
- add telemetry startup and error capture
|
||||||
|
- define initial mobile scope
|
||||||
|
- connect to backend and websocket/status contracts
|
||||||
|
- add push-notification-ready architecture
|
||||||
|
|
||||||
|
### Mobile v1 scope recommendation
|
||||||
|
|
||||||
|
- sign in / restore session
|
||||||
|
- portfolio overview
|
||||||
|
- alerts and critical incidents
|
||||||
|
- positions
|
||||||
|
- recent history
|
||||||
|
- settings and sign out
|
||||||
|
- safe operator controls limited to explicitly approved actions
|
||||||
|
|
||||||
|
### Do not do in mobile v1
|
||||||
|
|
||||||
|
- full parity with advanced web configuration
|
||||||
|
- highly complex strategy editing
|
||||||
|
- admin-only deep diagnostics UI unless clearly justified
|
||||||
|
|
||||||
|
### Exit Criteria
|
||||||
|
|
||||||
|
- mobile is integrated with platform auth and kill switch
|
||||||
|
- mobile consumes the same product contracts as web
|
||||||
|
|
||||||
|
## Phase 5: Cross-Repo DRY Consolidation
|
||||||
|
|
||||||
|
### Objective
|
||||||
|
|
||||||
|
Remove duplicated implementation patterns exposed during migration.
|
||||||
|
|
||||||
|
### Tasks
|
||||||
|
|
||||||
|
- consolidate auth/session bootstrap
|
||||||
|
- consolidate product config resolution
|
||||||
|
- consolidate request headers and token propagation helpers
|
||||||
|
- consolidate telemetry boot and event fields
|
||||||
|
- consolidate kill-switch UX and service-state handling
|
||||||
|
- consolidate shared types for product contracts
|
||||||
|
|
||||||
|
### Guardrail
|
||||||
|
|
||||||
|
Only extract code reused by at least two surfaces or clearly generic across ByteLyst products.
|
||||||
|
|
||||||
|
### Exit Criteria
|
||||||
|
|
||||||
|
- no duplicate platform bootstrap flows remain
|
||||||
|
- common code lives in the right place with clear ownership
|
||||||
|
|
||||||
|
## Phase 6: Verification, Release Readiness, and Cutover
|
||||||
|
|
||||||
|
### Objective
|
||||||
|
|
||||||
|
Validate that the new monorepo is safer and more coherent than the legacy setup before full adoption.
|
||||||
|
|
||||||
|
### Tasks
|
||||||
|
|
||||||
|
- add root verify scripts
|
||||||
|
- add backend contract tests
|
||||||
|
- add web auth and kill-switch smoke tests
|
||||||
|
- add mobile launch/auth/kill-switch smoke coverage
|
||||||
|
- add docs for local dev, CI, Docker, and fallback behaviors
|
||||||
|
- define cutover sequencing from legacy repos
|
||||||
|
- define rollback paths
|
||||||
|
|
||||||
|
### Exit Criteria
|
||||||
|
|
||||||
|
- new monorepo is production-ready for staged adoption
|
||||||
|
- rollback and cutover are documented
|
||||||
|
|
||||||
|
## 6. Detailed Work Breakdown
|
||||||
|
|
||||||
|
## 6.1 Root / repository tasks
|
||||||
|
|
||||||
|
- create root `package.json`
|
||||||
|
- create `pnpm-workspace.yaml`
|
||||||
|
- create `.env.example`
|
||||||
|
- create `shared/product.json`
|
||||||
|
- create `scripts/verify.sh` or equivalent
|
||||||
|
- create root README
|
||||||
|
- create docker/dev orchestration model
|
||||||
|
|
||||||
|
## 6.2 Backend tasks
|
||||||
|
|
||||||
|
- define module layout under `backend/src`
|
||||||
|
- split generic lib concerns from trading-domain modules
|
||||||
|
- add typed request/response schemas
|
||||||
|
- add websocket session/auth model
|
||||||
|
- add runtime control endpoints
|
||||||
|
- add telemetry and health integration
|
||||||
|
- add reconciliation and safety docs
|
||||||
|
|
||||||
|
## 6.3 Web tasks
|
||||||
|
|
||||||
|
- define app shell
|
||||||
|
- define auth bootstrap
|
||||||
|
- define product config
|
||||||
|
- define API client and websocket client
|
||||||
|
- port prioritized UI modules
|
||||||
|
- integrate admin/operator states and surface messaging
|
||||||
|
|
||||||
|
## 6.4 Mobile tasks
|
||||||
|
|
||||||
|
- define Expo structure
|
||||||
|
- define navigation shell
|
||||||
|
- define auth bootstrap and secure storage
|
||||||
|
- define status polling/live update strategy
|
||||||
|
- define alert/incident UX
|
||||||
|
- define operator-safe interventions
|
||||||
|
|
||||||
|
## 7. Sequencing Recommendations
|
||||||
|
|
||||||
|
### Recommended commit order at implementation time
|
||||||
|
|
||||||
|
1. repo scaffold and product identity
|
||||||
|
2. backend skeleton and config/auth contracts
|
||||||
|
3. backend runtime control and health contracts
|
||||||
|
4. web shell and auth migration
|
||||||
|
5. web dashboard migration by tab priority
|
||||||
|
6. mobile bootstrap and auth
|
||||||
|
7. mobile overview/alerts/positions/history
|
||||||
|
8. DRY cleanup
|
||||||
|
9. verification and cutover docs
|
||||||
|
|
||||||
|
### Recommended rollout order
|
||||||
|
|
||||||
|
1. backend internal validation
|
||||||
|
2. web internal adoption
|
||||||
|
3. mobile internal beta
|
||||||
|
4. external/staged rollout
|
||||||
|
|
||||||
|
## 8. Risks and Mitigations
|
||||||
|
|
||||||
|
### Risk: legacy assumptions leak into the new architecture
|
||||||
|
|
||||||
|
Mitigation:
|
||||||
|
|
||||||
|
- define contracts first
|
||||||
|
- migrate by module and purpose
|
||||||
|
- reject dead or duplicate bootstrap code
|
||||||
|
|
||||||
|
### Risk: auth model becomes split between Supabase-specific flows and platform-service flows
|
||||||
|
|
||||||
|
Mitigation:
|
||||||
|
|
||||||
|
- use an adapter strategy during migration
|
||||||
|
- define one authoritative session model early
|
||||||
|
- document transitional behavior explicitly
|
||||||
|
|
||||||
|
### Risk: kill switch becomes semantically overloaded
|
||||||
|
|
||||||
|
Mitigation:
|
||||||
|
|
||||||
|
- define separate concepts for:
|
||||||
|
- product maintenance mode
|
||||||
|
- product-level access disable
|
||||||
|
- trade-halt control
|
||||||
|
- profile-level disable
|
||||||
|
|
||||||
|
### Risk: mobile becomes a weak afterthought
|
||||||
|
|
||||||
|
Mitigation:
|
||||||
|
|
||||||
|
- scope it honestly as monitor/intervene-first
|
||||||
|
- wire full platform integration from day one
|
||||||
|
|
||||||
|
### Risk: over-extraction into common platform
|
||||||
|
|
||||||
|
Mitigation:
|
||||||
|
|
||||||
|
- keep trading logic local unless there is proven reuse
|
||||||
|
|
||||||
|
## 9. Decision Log
|
||||||
|
|
||||||
|
### Decision 1
|
||||||
|
|
||||||
|
Use a new monorepo instead of incremental retrofitting of three existing repos.
|
||||||
|
|
||||||
|
Reason:
|
||||||
|
|
||||||
|
- lower long-term complexity
|
||||||
|
- cleaner product identity
|
||||||
|
- fewer transitional glue layers
|
||||||
|
|
||||||
|
### Decision 2
|
||||||
|
|
||||||
|
Use `learning_ai_fastgap` as structural reference, not as a cloning template.
|
||||||
|
|
||||||
|
Reason:
|
||||||
|
|
||||||
|
- the surface layout pattern is proven
|
||||||
|
- the domain is different and must not inherit unrelated product assumptions
|
||||||
|
|
||||||
|
### Decision 3
|
||||||
|
|
||||||
|
Use `learning_ai_common_plat` as ecosystem backbone for generic platform concerns.
|
||||||
|
|
||||||
|
Reason:
|
||||||
|
|
||||||
|
- avoids duplicated auth, kill switch, telemetry, config, and diagnostics work
|
||||||
|
|
||||||
|
## 10. Acceptance Criteria for This Roadmap
|
||||||
|
|
||||||
|
This roadmap is successful if it can guide implementation without ambiguity on:
|
||||||
|
|
||||||
|
- repo structure
|
||||||
|
- product identity
|
||||||
|
- platform integration boundaries
|
||||||
|
- backend authority model
|
||||||
|
- migration sequence
|
||||||
|
- DRY extraction rules
|
||||||
|
- risk controls
|
||||||
|
|
||||||
|
## 11. Recommended Immediate Next Steps
|
||||||
|
|
||||||
|
1. Approve PRD and roadmap direction.
|
||||||
|
2. Scaffold the root monorepo structure.
|
||||||
|
3. Add `shared/product.json`, root `package.json`, `pnpm-workspace.yaml`, and `.env.example`.
|
||||||
|
4. Define backend contract skeleton before porting large amounts of legacy code.
|
||||||
Loading…
Reference in New Issue
Block a user