learning_ai_common_plat/services/tracker-service/README.md
saravanakumardb1 2738124ab9 feat(services): add tracker-service (items, comments, votes, public roadmap)
- Copied as-is from learning_voice_ai_agent/services/tracker-service
- 45 tests passing (vitest)
- Fastify 5 + Cosmos DB + jose + Zod + @fastify/rate-limit
- Modules: items, comments, votes, public
- Port 4004
2026-02-12 11:39:17 -08:00

58 lines
1.7 KiB
Markdown

# 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
```bash
cp .env .env # fill in values
npm install
npm run dev # starts with tsx watch on port 4004
```
## Testing
```bash
npm test # vitest run (29 tests)
```
## Environment Variables
See `.env` for required variables:
- `COSMOS_ENDPOINT` — Azure Cosmos DB endpoint
- `COSMOS_KEY` — Cosmos DB primary key
- `COSMOS_DATABASE` — Database name
- `JWT_SECRET` — Shared secret for JWT verification (from platform-service)
- `DEFAULT_PRODUCT_ID` — Default product scope (e.g., `lysnrai`)
- `PORT` — Server port (default `4004`)