# @tara/api

Tara Meditation REST API - Backend services for the Tara meditation platform

Backend service. See the `Dockerfile` / `docker-compose.yml` in the repo for
production-like local runs, or use the dev script below for in-process
iteration.

## Scripts

| Command                       | Definition                                                     |
| ----------------------------- | -------------------------------------------------------------- |
| `pnpm build`                  | tsc                                                            |
| `pnpm start`                  | node dist/index.js                                             |
| `pnpm dev`                    | tsx watch src/index.ts                                         |
| `pnpm test`                   | vitest run                                                     |
| `pnpm test:watch`             | vitest                                                         |
| `pnpm test:integration`       | vitest run --config vitest.integration.config.ts               |
| `pnpm test:integration:watch` | vitest --config vitest.integration.config.ts                   |
| `pnpm test:all`               | vitest run && vitest run --config vitest.integration.config.ts |
| `pnpm lint`                   | eslint src/                                                    |
| `pnpm db:generate`            | drizzle-kit generate                                           |
| `pnpm db:migrate`             | drizzle-kit migrate                                            |
| `pnpm db:push`                | drizzle-kit push                                               |
| `pnpm db:studio`              | drizzle-kit studio                                             |
| `pnpm db:drop`                | drizzle-kit drop                                               |
| `pnpm load-test`              | k6 run test/load/api-load.k6.js                                |

## Layout

- `drizzle/`
- `src/`
- `test/`

## Working on this package

The fastest local loop is via Nx:

```bash
pnpm nx test tara-api
pnpm nx lint tara-api
pnpm nx build tara-api
```

When Nx is unhappy (usually because another worktree has duplicate project
names), bypass it with the underlying tools from this directory:

```bash
npx tsc --noEmit
npx vitest run
```

See the [root README](../../../README.md) for monorepo-wide conventions (catalog
deps, commit format, git workflow). See the
[Contributor Guide](../../../docs/CONTRIBUTING.md) for the full PR workflow.
