{"id":15728620,"url":"https://github.com/tstreamdoth/firebase-swiss","last_synced_at":"2025-06-21T17:02:36.207Z","repository":{"id":35102121,"uuid":"190570561","full_name":"tstreamDOTh/firebase-swiss","owner":"tstreamDOTh","description":"The Firebase Swissknife 🇨🇭","archived":false,"fork":false,"pushed_at":"2023-01-04T21:59:33.000Z","size":892,"stargazers_count":12,"open_issues_count":25,"forks_count":7,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-21T17:01:59.818Z","etag":null,"topics":["cloud-functions","firebase","firebase-database","firebase-functions","serverless"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/tstreamDOTh.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-06-06T11:33:39.000Z","updated_at":"2023-03-21T17:13:55.000Z","dependencies_parsed_at":"2023-01-15T14:00:35.312Z","dependency_job_id":null,"html_url":"https://github.com/tstreamDOTh/firebase-swiss","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/tstreamDOTh/firebase-swiss","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tstreamDOTh%2Ffirebase-swiss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tstreamDOTh%2Ffirebase-swiss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tstreamDOTh%2Ffirebase-swiss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tstreamDOTh%2Ffirebase-swiss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tstreamDOTh","download_url":"https://codeload.github.com/tstreamDOTh/firebase-swiss/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tstreamDOTh%2Ffirebase-swiss/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261162062,"owners_count":23118219,"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":["cloud-functions","firebase","firebase-database","firebase-functions","serverless"],"created_at":"2024-10-03T23:04:57.201Z","updated_at":"2025-06-21T17:02:31.155Z","avatar_url":"https://github.com/tstreamDOTh.png","language":"JavaScript","readme":"# firebase-swiss\n\n\n \u003cimg src=\"https://res.cloudinary.com/ddbxzcb7k/image/upload/v1568999179/firebaseswiss-02_hy9whb.png\" width=\"50\"\u003e\n \n\n[![Build Status](https://circleci.com/gh/LogRocket/redux-logger/tree/master.svg?style=svg)](https://circleci.com/gh/tstreamDOTh/firebase-swiss/tree/master)  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)  [![node](https://img.shields.io/badge/node-10.16.x-brightgreen.svg)](https://github.com/tstreamDOTh/firebase-swiss) [![All Contributors](https://img.shields.io/badge/all_contributors-6-orange.svg)](#contributors)\n\n\n## Table of contents\n\n- [Install](#install)\n- [Usage](#usage)\n- [Recipes (Coming Soon)](#recipes)\n- [Options (Coming Soon) ](#options)\n\n## Install\n\nUsing Yarn\n\n`yarn add firebase-swiss`\n\nUsing NPM\n\n`npm i firebase-swiss`\n\n## Usage\n\nIf you are totally new to Firebase or Firebase Cloud Functions then [get started here](https://firebase.google.com/docs/functions/get-started)\n\nOnce you have created your firebase projects and setup cloud functions, you can start creating your CRUD api's like the following by using simple configuration -\n\n```javascript\n// functions.js\nconst FireFunctions = require('firebase-swiss');\nconst functions = require('firebase-functions');\nconst admin = require('firebase-admin');\nconst cors = require('cors')({\n  origin: true\n});\n\nadmin.initializeApp(functions.config().firebase);\n\nconst firefunctions = new FireFunctions(admin.database());\n\nexports.addApplicant = firefunctions.getFireFunction({\n  type: 'CREATE',\n  ref: 'applicants',\n  extractFromBody: ['name', 'role'],\n  enableCors: true\n});\n\nexports.getApplicantById = firefunctions.getFireFunction({\n  type: 'READ',\n  ref: 'applicants',\n  enableCors: true\n});\n\nexports.updateApplicantById = firefunctions.getFireFunction({\n  type: 'UPDATE',\n  ref: 'applicants',\n  extractFromBody: ['name', 'role'],\n  enableCors: true\n});\n\nexports.deleteApplicantById = firefunctions.getFireFunction({\n  type: 'DELETE',\n  ref: 'applicants',\n  enableCors: true\n});\n\n```\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.linkedin.com/in/thiyagarajt/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/11137394?v=4\" width=\"100px;\" alt=\"T Thiyagaraj\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eT Thiyagaraj\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/tstreamDOTh/firebase-swiss/commits?author=tstreamDOTh\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/alexbaeza\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/42570659?v=4\" width=\"100px;\" alt=\"Alejandro Baeza\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlejandro Baeza\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/tstreamDOTh/firebase-swiss/commits?author=alexbaeza\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.arme.ee/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/17966712?v=4\" width=\"80px;\" alt=\"Kaspar Arme\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKaspar Arme\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/tstreamDOTh/firebase-swiss/commits?author=vobango\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Slide109\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/29676121?v=4\" width=\"80px;\" alt=\"Dmitry Savchenkov\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDmitry Savchenkov\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/tstreamDOTh/firebase-swiss/commits?author=Slide109\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://boseriko.com/\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/10940193?v=4\" width=\"80px;\" alt=\"Bos Eriko Reyes\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBos Eriko Reyes\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/tstreamDOTh/firebase-swiss/commits?author=BosEriko\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/CoryWritesCode\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/34924300?v=4\" width=\"80px;\" alt=\"Cory Cunningham\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCory Cunningham\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/tstreamDOTh/firebase-swiss/commits?author=CoryWritesCode\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/vAporInside\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/28507278?v=4\" width=\"80px;\" alt=\"vAporInside\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003evAporInside\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/tstreamDOTh/firebase-swiss/commits?author=vAporInside\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftstreamdoth%2Ffirebase-swiss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftstreamdoth%2Ffirebase-swiss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftstreamdoth%2Ffirebase-swiss/lists"}