{"id":15665446,"url":"https://github.com/marcoshuck/typescript-express-firestore","last_synced_at":"2025-05-06T19:43:26.045Z","repository":{"id":110879190,"uuid":"163991745","full_name":"marcoshuck/typescript-express-firestore","owner":"marcoshuck","description":"An API REST created with Typescript, using Express and Firestore modules","archived":false,"fork":false,"pushed_at":"2019-01-14T06:35:07.000Z","size":512,"stargazers_count":12,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-31T02:13:40.863Z","etag":null,"topics":["api","express","firebase","firestore","nodejs","rest","typescript"],"latest_commit_sha":null,"homepage":"https://marcoshuck.github.io/typescript-express-firestore/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marcoshuck.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2019-01-03T15:41:55.000Z","updated_at":"2022-05-07T05:12:13.000Z","dependencies_parsed_at":"2023-03-13T03:01:37.279Z","dependency_job_id":null,"html_url":"https://github.com/marcoshuck/typescript-express-firestore","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcoshuck%2Ftypescript-express-firestore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcoshuck%2Ftypescript-express-firestore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcoshuck%2Ftypescript-express-firestore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcoshuck%2Ftypescript-express-firestore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcoshuck","download_url":"https://codeload.github.com/marcoshuck/typescript-express-firestore/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252755941,"owners_count":21799400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","express","firebase","firestore","nodejs","rest","typescript"],"created_at":"2024-10-03T13:46:12.392Z","updated_at":"2025-05-06T19:43:26.015Z","avatar_url":"https://github.com/marcoshuck.png","language":"TypeScript","readme":"# TypeScript + Express + Firestore\nAn API REST created with Typescript and using Express and Firestore modules\n\n[![](https://travis-ci.org/marcoshuck/typescript-express-firestore.svg?branch=master)](https://travis-ci.org/marcoshuck/typescript-express-firestore) [![](https://david-dm.org/marcoshuck/typescript-express-firestore.svg)](https://david-dm.org/marcoshuck/typescript-express-firestore) ![](https://img.shields.io/github/forks/marcoshuck/typescript-express-firestore.svg) ![](https://img.shields.io/github/stars/marcoshuck/typescript-express-firestore.svg) ![](https://img.shields.io/github/license/marcoshuck/typescript-express-firestore.svg) ![](https://img.shields.io/github/issues/marcoshuck/typescript-express-firestore.svg)\n\n## Features\nThis project has or uses the following features:\n- Typescript.\n- Express.\n- Google Firestore.\n- Linting\n- Model - View - Controller pattern.\n- SOLID principles.\n- Class validation.\n- CI/CD with Travis.\n- Tests with mocha and chai.\n- Autogenerated documentation with typedoc.\n\n## Getting started\nThis application was created using NodeJS, you can look at the package.json file for more information about what packages have been used.\n\nYou need to create a keys folder in the application root directory, and inside of it, you should move the .json file provided by Google Firestore. Read more information about this: [Google Firestore SDK documentation](https://firebase.google.com/docs/admin/setup?authuser=0). This file is required in [db.ts](https://github.com/marcoshuck/typescript-express-firestore/blob/master/src/db.ts#L3)\n\n\n### Before start working on code\n`yarn install` or `npm install`\n\n### Building\n`npm run build`\nGets the ./build directory with js files.\n\n### Source code analysis\n`npm run lint`\nUses lint to analyze the source code.\n\n### Starting the application\n`npm run start`\nRuns the application in a node instance.\n\n### Watch mode (build)\n`npm run build-watch`\nCompiles the application every time some change has been made.\n\n### Watch mode (start)\n`npm run start-watch`\nRuns the application every time some change has been made. Should be run in parallel with Build watch mode.\n\n### Documentation\n`npm run doc`\nGenerates the project's documentation using typedoc.\n\n## API Endpoint\nIn this application there is only one endpoint available, it's the [examples](https://github.com/marcoshuck/typescript-express-firestore/blob/master/src/routes/index.ts#L7) endpoint.\nYou can check how any route works reading its specific controller class. For further information about the examples route, you can read the [ExampleController](https://github.com/marcoshuck/typescript-express-firestore/blob/master/src/controllers/example.controller.ts) class.\n\n## Test\nThe firestore test is related to my own firestore database. You can play around with the source file to understand mocha and chai modules. Be sure to check and change the id argument in both read and update methods.\n\n## Project structure\n```\n|   .env.example\n|   .gitignore\n|   .travis.yml\n|   LICENSE\n|   package.json\n|   README.md\n|   tsconfig.json\n|   tslint.json\n|   yarn.lock\n|            \n+---src\n|   |   app.ts\n|   |   db.ts\n|   |   env.ts\n|   |   index.ts\n|   |   \n|   +---controllers\n|   |   |   controller.ts\n|   |   |   example.controller.ts\n|   |   |   \n|   |   \\---interfaces\n|   |           controller.interface.ts\n|   |           \n|   +---middleware\n|   |       error.middleware.ts\n|   |       \n|   +---models\n|   |   |   example.model.ts\n|   |   |   \n|   |   \\---interfaces\n|   |           example.interface.ts\n|   |           \n|   +---repositories\n|   |   |   firestore.repository.ts\n|   |   |   \n|   |   \\---interfaces\n|   |           firestore.interface.ts\n|   |           \n|   +---routes\n|   |       example.routes.ts\n|   |       index.ts\n|   |       \n|   \\---utils\n|           error.interface.ts\n|           \n+---tests\n|   \\---repositories\n|           firestore.test.ts\n|           \n\\---views\n        error.pug\n```\n\n## ToDo\n- JWT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcoshuck%2Ftypescript-express-firestore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcoshuck%2Ftypescript-express-firestore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcoshuck%2Ftypescript-express-firestore/lists"}