A high-performance REST API for weekly goal tracking built with Fastify and Drizzle ORM. Create goals, track completions, and get weekly summaries with an optimized PostgreSQL backend.
- Create weekly goals with desired frequency
- Mark daily goal completions
- Get pending goals for the current week
- Weekly completion summary with visual progress
- Swagger/OpenAPI documentation
- Dockerized development environment
| Technology | Version | Purpose |
|---|---|---|
| Fastify | 5.x | High-performance HTTP framework |
| Drizzle ORM | 0.38.x | Type-safe SQL query builder |
| PostgreSQL | 16.x | Relational database |
| Zod | 3.x | Schema validation with type inference |
| TypeScript | 5.x | End-to-end type safety |
| Docker | — | Containerized development |
| Method | Route | Description |
|---|---|---|
POST |
/goals |
Create a new weekly goal |
POST |
/completions |
Mark a goal as completed |
GET |
/pending-goals |
Get pending goals for current week |
GET |
/summary |
Get weekly completion summary |
Interactive Swagger UI available at /docs when running the server.
npx orval # generates typed API client from OpenAPI spec# Clone
git clone https://github.com/rafaumeu/inorbit-api.git
cd inorbit-api
# Install
npm install
# Set up environment
cp .env.example .env
# Run with Docker (PostgreSQL)
docker compose up -d
# Start dev server
npm run devDATABASE_URL=postgresql://docker:docker@localhost:5432/inorbitgoals
├── id (UUID, PK)
├── title (VARCHAR)
├── desiredWeeklyFrequency (INTEGER)
└── createdAt (TIMESTAMP)
goalCompletions
├── id (UUID, PK)
├── goalId (UUID, FK → goals)
└── createdAt (TIMESTAMP)
src/
├── db/
│ ├── connection.ts
│ ├── schema/
│ └── migrations/
├── http/
│ ├── routes/
│ └── server.ts
└── env.ts
MIT

