learning_ai_common_plat/README.md
saravanakumardb1 90b9cf93d8 fix(common): configure ESLint 9 and fix lint issues
- Added @eslint/js dependency
- Updated eslint.config.js for ESLint 9 compatibility
- Added required globals (crypto, localStorage, React, etc.)
- Fixed unused imports and variables
- Disabled sort-imports temporarily
- Formatted all files with Prettier
2026-02-12 16:37:30 -08:00

102 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# @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 (400429)
│ ├── 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 (400429) | — |
| `@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.