# ByteLyst Common Platform

> Shared packages and microservices for ByteLyst ecosystem products.

## ⚠️ GitHub Actions Temporarily Disabled

CI/CD is currently disabled due to billing issues. Please run manual quality checks before merging:

- See [MANUAL_CI.md](./MANUAL_CI.md) for instructions
- Use `.windsurf/workflows/production-readiness.md` for comprehensive checks

## Quick Start

```bash
# Install dependencies
pnpm install

# Build all packages + services
pnpm build

# Quick quality check (5 min) - run before pushing!
./quick-check.sh

# 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
```

## 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/logger`        | Structured logger factory for services/dashboards         | —                      |
| `@bytelyst/cosmos`        | Azure Cosmos DB client singleton + container registry     | `@azure/cosmos`        |
| `@bytelyst/blob`          | Azure Blob Storage helpers + SAS URL generation           | `@azure/storage-blob`  |
| `@bytelyst/config`        | Zod-based env config loader + product identity            | `zod`                  |
| `@bytelyst/auth`          | JWT utilities, auth middleware, password hashing          | `jose`, `bcryptjs`     |
| `@bytelyst/fastify-core`  | Fastify service bootstrap (request-id, /health, errors)   | `fastify`              |
| `@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) | —                      |
| `@bytelyst/extraction`    | Extraction service client + shared types                  | `@bytelyst/api-client` |
| `@bytelyst/testing`       | Shared test helpers (Fastify inject, schema asserts)      | `vitest`               |
| `@bytelyst/monitoring`    | Health-check aggregation utilities                        | —                      |

## 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

# Quick quality check (5 min) - run before pushing!
./quick-check.sh

# 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.
