{"id":51464462,"url":"https://github.com/rafaumeu/inorbit-api","last_synced_at":"2026-07-06T09:30:40.846Z","repository":{"id":272678547,"uuid":"917407761","full_name":"rafaumeu/inorbit-api","owner":"rafaumeu","description":"🚀 InOrbit REST API — Fastify + Drizzle ORM + PostgreSQL + JWT auth + Docker + Swagger. Clean Architecture \u0026 comprehensive testing.","archived":false,"fork":false,"pushed_at":"2026-05-05T00:06:11.000Z","size":284,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-05T00:27:18.021Z","etag":null,"topics":["api-docs","backend","biomejs","ci-cd","cuid","database-migrations","docker","drizzle","fastify","gamification","high-performance","jwt-authentication","nodejs","orm","postgresql","rest-api","swagger","test-coverage","typescript","zod"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rafaumeu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-15T23:26:11.000Z","updated_at":"2026-05-05T00:03:26.000Z","dependencies_parsed_at":"2025-08-01T18:31:57.365Z","dependency_job_id":null,"html_url":"https://github.com/rafaumeu/inorbit-api","commit_stats":null,"previous_names":["rafaumeu/pocket-api","rafaumeu/inorbit-api"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rafaumeu/inorbit-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaumeu%2Finorbit-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaumeu%2Finorbit-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaumeu%2Finorbit-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaumeu%2Finorbit-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rafaumeu","download_url":"https://codeload.github.com/rafaumeu/inorbit-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaumeu%2Finorbit-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35185688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-docs","backend","biomejs","ci-cd","cuid","database-migrations","docker","drizzle","fastify","gamification","high-performance","jwt-authentication","nodejs","orm","postgresql","rest-api","swagger","test-coverage","typescript","zod"],"created_at":"2026-07-06T09:30:34.410Z","updated_at":"2026-07-06T09:30:40.784Z","avatar_url":"https://github.com/rafaumeu.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"100%\" src=\"https://capsule-render.vercel.app/api?type=waving\u0026color=FFCA28\u0026height=180\u0026section=header\u0026text=InOrbit%20API\u0026fontSize=42\u0026fontColor=fff\u0026animation=fadeIn\u0026fontAlignY=35\u0026desc=Goal%20Tracking%20REST%20API\u0026descSize=18\u0026descAlignY=52\"/\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Node-22-green\" alt=\"Node\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Fastify-5-000000?style=for-the-badge\u0026logo=fastify\" alt=\"Fastify\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/TypeScript-5-3178C6?style=for-the-badge\u0026logo=typescript\" alt=\"TypeScript\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Drizzle_ORM-0.38-C5F74F?style=for-the-badge\" alt=\"Drizzle ORM\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/PostgreSQL-16-4169E1?style=for-the-badge\u0026logo=postgresql\" alt=\"PostgreSQL\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Vitest-4-6E9F18\" alt=\"Vitest\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Docker-ready-2496ED?style=for-the-badge\u0026logo=docker\" alt=\"Docker\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Swagger-UI-85EA2D?style=for-the-badge\u0026logo=swagger\" alt=\"Swagger\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Biome-ready-60A5FA?style=for-the-badge\u0026logo=biome\" alt=\"Biome\"/\u003e\n\u003c/p\u003e\n\n## Overview\n\nA 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.\n\n## Features\n\n- Create weekly goals with desired frequency\n- Mark daily goal completions\n- Get pending goals for the current week\n- Weekly completion summary with visual progress\n- Swagger/OpenAPI documentation\n- Dockerized development environment\n\n## Tech Stack\n\n| Technology | Version | Purpose |\n|---|---|---|\n| **Fastify** | 5.x | High-performance HTTP framework |\n| **Drizzle ORM** | 0.38.x | Type-safe SQL query builder |\n| **PostgreSQL** | 16.x | Relational database |\n| **Zod** | 3.x | Schema validation with type inference |\n| **TypeScript** | 5.x | End-to-end type safety |\n| **Docker** | — | Containerized development |\n\n## API Endpoints\n\n| Method | Route | Description |\n|---|---|---|\n| `POST` | `/goals` | Create a new weekly goal |\n| `POST` | `/completions` | Mark a goal as completed |\n| `GET` | `/pending-goals` | Get pending goals for current week |\n| `GET` | `/summary` | Get weekly completion summary |\n\n## API Documentation\n\nInteractive Swagger UI available at `/docs` when running the server.\n\n![Swagger UI](screenshots/swagger-ui-expanded.png)\n\n### Endpoints\n\n| Method | Route | Description |\n|---|---|---|\n| `POST` | `/goals` | Create a new weekly goal |\n| `POST` | `/completions` | Mark a goal as completed |\n| `GET` | `/pending-goals` | Get pending goals for current week |\n| `GET` | `/summary` | Get weekly completion summary |\n| `GET` | `/stats` | Get goal statistics |\n\n### Generate Typed Client\n\n```bash\nnpx orval  # generates typed API client from OpenAPI spec\n```\n\n## Getting Started\n\n```bash\n# Clone\ngit clone https://github.com/rafaumeu/inorbit-api.git\ncd inorbit-api\n\n# Install\nnpm install\n\n# Set up environment\ncp .env.example .env\n\n# Run with Docker (PostgreSQL)\ndocker compose up -d\n\n# Start dev server\nnpm run dev\n```\n\n### Environment Variables\n\n```env\nDATABASE_URL=postgresql://docker:docker@localhost:5432/inorbit\n```\n\n## Database Schema\n\n```\ngoals\n├── id (UUID, PK)\n├── title (VARCHAR)\n├── desiredWeeklyFrequency (INTEGER)\n└── createdAt (TIMESTAMP)\n\ngoalCompletions\n├── id (UUID, PK)\n├── goalId (UUID, FK → goals)\n└── createdAt (TIMESTAMP)\n```\n\n## Project Structure\n\n```\nsrc/\n├── db/\n│   ├── connection.ts\n│   ├── schema/\n│   └── migrations/\n├── http/\n│   ├── routes/\n│   └── server.ts\n└── env.ts\n```\n\n## License\n\nMIT\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"100%\" src=\"https://capsule-render.vercel.app/api?type=waving\u0026color=FFCA28\u0026height=100\u0026section=footer\"/\u003e\n  \u003cbr/\u003e\n  \u003csub\u003eBuilt with ❤️ by \u003ca href=\"https://github.com/rafaumeu\"\u003eRafael Zendron\u003c/a\u003e\u003c/sub\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/rafaumeu/inorbit-api/generate\"\u003e\u003cimg src=\"https://img.shields.io/badge/Use_This_Template-FFCA28?style=for-the-badge\u0026logo=github\u0026logoColor=white\" alt=\"Use this template\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frafaumeu%2Finorbit-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frafaumeu%2Finorbit-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frafaumeu%2Finorbit-api/lists"}