{"id":25812370,"url":"https://github.com/codeekage/firebase-cloud-functions-microservice","last_synced_at":"2025-07-30T03:32:57.772Z","repository":{"id":41793743,"uuid":"187324777","full_name":"codeekage/firebase-cloud-functions-microservice","owner":"codeekage","description":"Microservice designed with Firebase Cloud Functions and Firestore","archived":false,"fork":false,"pushed_at":"2023-01-09T11:40:12.000Z","size":476,"stargazers_count":14,"open_issues_count":11,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-18T05:41:40.209Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/codeekage.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}},"created_at":"2019-05-18T06:54:12.000Z","updated_at":"2024-01-16T11:54:00.000Z","dependencies_parsed_at":"2023-02-08T10:15:14.700Z","dependency_job_id":null,"html_url":"https://github.com/codeekage/firebase-cloud-functions-microservice","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/codeekage/firebase-cloud-functions-microservice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeekage%2Ffirebase-cloud-functions-microservice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeekage%2Ffirebase-cloud-functions-microservice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeekage%2Ffirebase-cloud-functions-microservice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeekage%2Ffirebase-cloud-functions-microservice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codeekage","download_url":"https://codeload.github.com/codeekage/firebase-cloud-functions-microservice/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeekage%2Ffirebase-cloud-functions-microservice/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267803984,"owners_count":24146527,"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","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"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":[],"created_at":"2025-02-28T01:53:43.987Z","updated_at":"2025-07-30T03:32:57.733Z","avatar_url":"https://github.com/codeekage.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Firestore Bookstore (firebase-cloud-functions-microservice)\nMicroservice designed with Firebase Cloud Functions and Firestore \n\n\n## Features \n\n- Authentication\n- Email Verification on new sign ups\n- Unverified emails should deny read and write access\n- Email Notification on new books arrival\n- The email should also contain details and a link to view the newly added book\n\n## Setups\n\n### Installations\n\nEnsure you have the following installed before running `npm install`\n- Node.js\n- NPM\n- Firebase Tools\n\n## API_KEY \n \n Obtain **Application API_KEY** from Firebase Configs and create `keys.ts` in the root directory of the `functions` folder\n \n ```javascript \n \n export const firebaseConfig = {\n    apiKey: \"AXXXXXXXXXXXXXXXXXXXXXXXQ\",\n    authDomain: \"\u003cAPP_NAME\u003e.firebaseapp.com\",\n    databaseURL: \"https://\u003cAPP_NAME\u003e.firebaseio.com\",\n    projectId: \"\u003cPROJECT_ID\u003e\",\n    storageBucket: \"\u003cAPP_NAME\u003e.appspot.com\",\n    messagingSenderId: \"XXXXXXXXXX\",\n    appId: \"XXXXXXXXXXXXXXXXXXXXXXXXX\"\n}\n \n ```\n\n## Upgrade Firebase Account\nYou'd want to upgrade your Firebase Project from the Free Tier to Blaze. Without the upgrade the application will resolve to a _netwowrk outofbound ERROR_\n\n## Testing Application \n- Run `npm run deploy` to Deploy or `npm run serve` to test the Cloud Functions \n\u003e NB: If the emulator fails to run please ensure you are running  `firebase-tools 6.9.3`\n\n## Setup Twilio SendGrid\n\nTo send emails when a new book is added to your users\n- Create a Twilio SendGrid Account https://sendgrid.com\n- Obtain API_KEY from `sendgrid`\n- Update `keys.ts` in the root directory of the `functions` folder \n\n```javascript\n......\n\nexport const SG_APIKEY  = 'SG.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n\n````\n\n## Existing Functionalities\n\n#### Routes \n- **auth** `/auth`\n - [POST] `/login` - Assigns User-Token for `firebase security rules`\n - [POST] `/signup` - Creates a new user\n - [GET] `/logout` - Remove User-Token \n \n- **user** `/user`\n  - [GET] `/profile` - Retrives currently logged-in user's profile\n  - [PUT] `/update` - Update Currently logged in user's profile\n \n -**book** `/book`\n - [POST] `/add` - Add a new book to Firestore\n  - [GET] `/fetch` - Retrives all books from Firestors\n  - [GET] `/fetch/:id` - Retrive book with the `id` of `req.params.id`\n  - [PUT] `/update/:id`-  Update book with the `id` of `req.params.id`\n  - [DELETE] `/remove/:id` - Delete book with the `id` of `req.params.id`\n \n #### Triggers \n \n- **onCreateUser** - Trigged when a user signsup and sends email using SendGrid \n- **onBookArrival** Trigged when a new book is created and sends email using SendGrid \n\n\n[Read more...](https://medium.com/@codeekage/building-scalable-applications-with-google-cloud-services-part-5-microservices-with-firebase-96819c70574d)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeekage%2Ffirebase-cloud-functions-microservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodeekage%2Ffirebase-cloud-functions-microservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeekage%2Ffirebase-cloud-functions-microservice/lists"}