101 lines
4.1 KiB
Markdown
101 lines
4.1 KiB
Markdown
# @bytelyst/common-platform
|
||
|
||
Shared packages **and** product-agnostic microservices for the ByteLyst ecosystem — used by [LysnrAI](https://github.com/saravanakumardb1/learning_voice_ai_agent) and [MindLyst](https://github.com/saravanakumardb1/learning_multimodal_memory_agents).
|
||
|
||
## Repository Structure
|
||
|
||
```
|
||
learning_ai_common_plat/
|
||
├── packages/ # Shared libraries (@bytelyst/*)
|
||
│ ├── errors/ # Typed HTTP service errors (400–429)
|
||
│ ├── cosmos/ # Azure Cosmos DB client + container registry
|
||
│ ├── config/ # Zod env loader + product identity
|
||
│ ├── auth/ # JWT, middleware, password hashing
|
||
│ ├── api-client/ # Configurable fetch wrapper
|
||
│ ├── react-auth/ # React auth context factory
|
||
│ └── design-tokens/ # Cross-platform tokens (JSON → CSS/TS/Kotlin/Swift)
|
||
├── services/ # Product-agnostic microservices
|
||
│ ├── platform-service/ # Auth, audit, flags, notifications, blob (port 4003)
|
||
│ ├── billing-service/ # Subscriptions, Stripe, usage, licenses (port 4002)
|
||
│ ├── growth-service/ # Invitations, referrals, promos (port 4001)
|
||
│ ├── tracker-service/ # Items, comments, votes, public roadmap (port 4004)
|
||
│ └── monitoring/ # Loki + Grafana config, health-check
|
||
└── docs/ # Architecture docs, roadmap, analysis
|
||
```
|
||
|
||
## Shared Libraries
|
||
|
||
| Package | Description | Peer Dependencies |
|
||
|---------|-------------|-------------------|
|
||
| `@bytelyst/errors` | Typed HTTP service errors (400–429) | — |
|
||
| `@bytelyst/cosmos` | Azure Cosmos DB client singleton + container registry | `@azure/cosmos` |
|
||
| `@bytelyst/config` | Zod-based env config loader + product identity | `zod` |
|
||
| `@bytelyst/auth` | JWT utilities, auth middleware, password hashing | `jose`, `bcryptjs` |
|
||
| `@bytelyst/api-client` | Configurable fetch wrapper with auth token injection | — |
|
||
| `@bytelyst/react-auth` | React auth context factory (typed provider + hook) | `react` |
|
||
| `@bytelyst/design-tokens` | Cross-platform design tokens (JSON → CSS/TS/Kotlin/Swift) | — |
|
||
|
||
## Shared Services
|
||
|
||
| Service | Port | Description | Tests |
|
||
|---------|------|-------------|-------|
|
||
| `platform-service` | 4003 | Auth, audit, feature flags, notifications, blob storage | 55 |
|
||
| `billing-service` | 4002 | Subscriptions, Stripe webhooks, usage tracking, licenses, plans | 32 |
|
||
| `growth-service` | 4001 | Invitations, referrals, promo codes | 33 |
|
||
| `tracker-service` | 4004 | Feature requests, bugs, tasks, public roadmap | 45 |
|
||
| `monitoring` | — | Loki + Grafana dashboards, health-check script | — |
|
||
|
||
All services are **product-agnostic** — every Cosmos document includes a `productId` field, so a single deployment serves LysnrAI, MindLyst, or any future product.
|
||
|
||
## Quick Start
|
||
|
||
```bash
|
||
# Install dependencies
|
||
pnpm install
|
||
|
||
# Build all packages + services
|
||
pnpm build
|
||
|
||
# Run all tests (165 total across packages + services)
|
||
pnpm test
|
||
|
||
# Type-check all packages
|
||
pnpm typecheck
|
||
|
||
# Run a specific service in dev mode
|
||
pnpm --filter @lysnrai/platform-service dev
|
||
```
|
||
|
||
## Consuming Libraries from Product Repos
|
||
|
||
During development, use `file:` references in consumer `package.json`:
|
||
|
||
```jsonc
|
||
// From a Next.js dashboard at repo root (2 levels up):
|
||
"@bytelyst/errors": "file:../../learning_ai_common_plat/packages/errors"
|
||
|
||
// From MindLyst web (3 levels up — inside mindlyst-native/web/):
|
||
"@bytelyst/design-tokens": "file:../../../learning_ai_common_plat/packages/design-tokens"
|
||
```
|
||
|
||
All repos must be cloned side-by-side under the same parent directory.
|
||
|
||
## Design Tokens
|
||
|
||
Generate platform-specific token files from the canonical JSON:
|
||
|
||
```bash
|
||
cd packages/design-tokens
|
||
pnpm generate
|
||
```
|
||
|
||
Outputs in `packages/design-tokens/generated/`:
|
||
- `tokens.css` — CSS custom properties (`--ml-*`)
|
||
- `tokens.ts` — TypeScript constants
|
||
- `MindLystTokens.kt` — Kotlin object for KMP
|
||
- `MindLystTheme.swift` — Swift structs for SwiftUI
|
||
|
||
## Roadmap
|
||
|
||
See [docs/ROADMAP.md](docs/ROADMAP.md) for the full phased extraction plan.
|