A toolkit for managing users: REST API powered by Hono + TypeORM, PostgreSQL, and Docker.
- Node.js + TypeScript
- Hono, Zod, OpenAPI
- TypeORM, PostgreSQL
- pnpm workspace
- Docker Compose
apps/
api/ # API source code
docker-compose.yml # Docker services entry point
.infastructure.env # infrastructure environment variables
.infastructure.env (shared by Docker and the API):
DOCKER_POSTGRES_USER=...
DOCKER_POSTGRES_PASSWORD=...
DOCKER_POSTGRES_DB=...
DOCKER_POSTGRES_PORT=5432
USER_MANAGEMENT_API_PORT=3000
apps/api/.env (local API configuration):
USER_MANAGEMENT_API_PORT=3000
USER_MANAGEMENT_API_PREFIX=/api
USER_MANAGEMENT_API_VERSION=v1
src/database/data-source.ts loads .infastructure.env automatically, so keep it up to date for local and container runs.
pnpm install
pnpm --filter api devMake sure PostgreSQL is running with credentials from .infastructure.env.
docker compose --env-file .infastructure.env up -d --build
docker compose logs -f apipnpm typeorm-ts-node-esm migration:generate ./src/database/migrations/<name> -d ./src/database/data-source.ts
pnpm typeorm-ts-node-esm migration:run -d ./src/database/data-source.ts| Method | Path | Description | Access |
|---|---|---|---|
| POST | /auth/register |
Register a user | Guest |
| POST | /auth/login |
Authenticate a user | Guest |
| GET | /users/:id |
Get user by ID | Admin or resource owner |
| GET | /users |
List users | Admin |
| POST | /users/:id/block |
Block a user | Admin or resource owner |
Send the token via Authorization: Bearer <token> header.
pnpm --filter api build
pnpm --filter api start
pnpm --filter api openapi # generate OpenAPI spec
pnpm lint
pnpm test