Rewired all 4 services: - lib/errors.ts → re-exports from @bytelyst/errors - lib/cosmos.ts → re-exports from @bytelyst/cosmos - lib/product-config.ts → uses loadProductIdentity()/getProductId() from @bytelyst/config - lib/config.ts → kept self-contained (zod v3/v4 type mismatch with loadConfig) Added workspace deps (@bytelyst/errors, @bytelyst/cosmos, @bytelyst/config) to all 4 services. Added docker-compose.yml with Loki, Grafana, Traefik, and all 4 services. Added .env.example with required env vars. Added passWithNoTests to vitest.config.ts. Pinned root zod to ^3.24.0 to match service zod versions. All 12 projects build. 175 tests passing. |
||
|---|---|---|
| .. | ||
| src | ||
| .gitignore | ||
| Dockerfile | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
Tracker Service
Product-agnostic issue tracker for feature requests, bugs, and task management. Built with Fastify + TypeScript + Azure Cosmos DB.
Port
4004 (configurable via PORT env var)
Modules
- items — CRUD for tracker items (bugs, features, tasks) with filtering, pagination, and stats
- comments — Threaded discussion on items
- votes — Upvote toggle (1 per user per item)
API Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /items |
List/filter/search items |
| POST | /items |
Create item |
| GET | /items/stats |
Aggregate counts by type/status/priority |
| GET | /items/:id |
Get single item |
| PUT | /items/:id |
Update item |
| PATCH | /items/:id/status |
Quick status transition |
| DELETE | /items/:id |
Delete item |
| GET | /items/:itemId/comments |
List comments |
| POST | /items/:itemId/comments |
Add comment |
| PUT | /items/:itemId/comments/:id |
Edit comment |
| DELETE | /items/:itemId/comments/:id |
Delete comment |
| POST | /items/:itemId/vote |
Toggle upvote |
| GET | /items/:itemId/votes |
List voters |
| GET | /health |
Health check |
Setup
cp .env .env # fill in values
npm install
npm run dev # starts with tsx watch on port 4004
Testing
npm test # vitest run (29 tests)
Environment Variables
See .env for required variables:
COSMOS_ENDPOINT— Azure Cosmos DB endpointCOSMOS_KEY— Cosmos DB primary keyCOSMOS_DATABASE— Database nameJWT_SECRET— Shared secret for JWT verification (from platform-service)DEFAULT_PRODUCT_ID— Default product scope (e.g.,lysnrai)PORT— Server port (default4004)