{"id":21010769,"url":"https://github.com/hoganb/fastify-todo-api","last_synced_at":"2026-04-15T06:39:26.248Z","repository":{"id":161632917,"uuid":"636190733","full_name":"hoganb/fastify-todo-api","owner":"hoganb","description":"Fastify TODO API [typescript, fastify, rest, swagger, nodemon, typebox, crud]","archived":false,"fork":false,"pushed_at":"2023-05-04T15:12:35.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-01T00:28:55.896Z","etag":null,"topics":["crud","fastify","nodemon","rest","swagger","typebox","typescript"],"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/hoganb.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}},"created_at":"2023-05-04T10:02:08.000Z","updated_at":"2023-05-04T16:16:15.000Z","dependencies_parsed_at":"2023-06-13T23:54:54.387Z","dependency_job_id":null,"html_url":"https://github.com/hoganb/fastify-todo-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hoganb/fastify-todo-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoganb%2Ffastify-todo-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoganb%2Ffastify-todo-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoganb%2Ffastify-todo-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoganb%2Ffastify-todo-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hoganb","download_url":"https://codeload.github.com/hoganb/fastify-todo-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoganb%2Ffastify-todo-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31830157,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"online","status_checked_at":"2026-04-15T02:00:06.175Z","response_time":63,"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":["crud","fastify","nodemon","rest","swagger","typebox","typescript"],"created_at":"2024-11-19T09:23:35.835Z","updated_at":"2026-04-15T06:39:26.240Z","avatar_url":"https://github.com/hoganb.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fastify-todo-api\n\nThis is a RESTful Todo API built with Fastify, a popular web framework for Node.js, and uses in-memory as a data storage. The API provides basic CRUD (Create, Read, Update, Delete) operations for Todo items.\n\n## Requirements\n\nTo run this application, you'll need to have the following installed on your machine:\n\n- Node.js (v16 or higher)\n\n## Getting started\n\n1. Clone this repository:\n\n```bash\ngit clone https://github.com/hoganb/fastify-todo-api.git\n```\n\n2. Navigate to the project directory:\n\n```bash\ncd fastify-todo-api\n```\n\n3. Install the dependencies:\n\n```bash\nnpm ci\n```\n\n4. Start the server:\n\n```bash\nnpm start\n```\n\nThe server will start running at **http://localhost:3000**.\n\n## API endpoints\n\nThe following endpoints are available:\n\n| Method     | URL          | Description              |\n| ---------- | ------------ | ------------------------ |\n| **GET**    | `/todos`     | Get all Todo items       |\n| **GET**    | `/todos/:id` | Get a Todo item by id    |\n| **POST**   | `/todos`     | Create a new Todo item   |\n| **PUT**    | `/todos/:id` | Update a Todo item by id |\n| **DELETE** | `/todos/:id` | Delete a Todo item by id |\n\n# Features\n\n- **Fastify framework**: Designed for high performance and can handle a large number of requests, making the API scalable\n- **TypeScript**: The project is written in TypeScript, which provides static type checking and improves code maintainability\n- **RESTful API**: The API follows REST (Representational State Transfer) principles and uses HTTP methods like GET, POST, PUT, and DELETE to manage Todo items\n- **CRUD operations**: The API supports basic CRUD (Create, Read, Update, Delete) operations for Todo items\n- **In-memory storage**: The API uses in-memory storage to store and retrieve data for Todo items\n- **Input/Output Validation**: Using `@sinclair/typebox` JSON Schema\n- **Error handling**: For invalid requests and missing resources, to provide a better user experience using `@fastify/sensible`\n- **Swagger/OpenAPI**: Documentation using `@fastify/swagger` and `@fastify/swagger-ui`\n- **Nodemon**: For developer efficiency by automatically restarting the server on changes\n- **Logging**: Requests \u0026 responses using built-in `pino` logger\n\n# Next Steps\n\n- Implement unit tests using `jest` from files `/test/**/*.test.ts` (utilize `fastify-mock`)\n- Implement integration tests using `jest` from files `/test/**/*.integration.test.ts` (utilize `supertest`)\n- API security: rate limiting, authentication, authorization, CORS, CSRF protection, helmet\n- API tracing using tools like `opentracing`\n- Handle aborted requests\n- Graceful service termination\n\n# Skills\n\nRequires a good understanding of the Node.js runtime environment, as well as proficiency in TypeScript and the Fastify web framework. Some of the skills required and developed in this project include:\n\n- Knowledge of Node.js and its ecosystem\n- Understanding of TypeScript and its features\n- Proficiency in the Fastify web framework and its APIs\n- Understanding of in-memory storage and its limitations\n- Proficiency in using npm as a package manager\n- Familiarity with RESTful APIs and CRUD operations\n- Knowledge of error handling and testing practices in web applications\n- Familiarity with Git and version control\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoganb%2Ffastify-todo-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhoganb%2Ffastify-todo-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoganb%2Ffastify-todo-api/lists"}