{"id":18718324,"url":"https://github.com/worldbrain/storex-backend-firestore","last_synced_at":"2025-04-12T13:33:44.358Z","repository":{"id":97337639,"uuid":"170892403","full_name":"WorldBrain/storex-backend-firestore","owner":"WorldBrain","description":"Firestore backend for Storex","archived":false,"fork":false,"pushed_at":"2025-04-06T13:34:03.000Z","size":121,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-09T21:30:24.604Z","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/WorldBrain.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-02-15T16:10:10.000Z","updated_at":"2025-04-06T13:34:07.000Z","dependencies_parsed_at":"2024-01-10T13:59:41.430Z","dependency_job_id":"d81b2772-e52b-4dcc-9eca-c5c3d2abde90","html_url":"https://github.com/WorldBrain/storex-backend-firestore","commit_stats":{"total_commits":43,"total_committers":2,"mean_commits":21.5,"dds":"0.023255813953488413","last_synced_commit":"03ecb314b1bfaf341c7679fbff0bb32cc98b080f"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WorldBrain%2Fstorex-backend-firestore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WorldBrain%2Fstorex-backend-firestore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WorldBrain%2Fstorex-backend-firestore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WorldBrain%2Fstorex-backend-firestore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WorldBrain","download_url":"https://codeload.github.com/WorldBrain/storex-backend-firestore/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248573643,"owners_count":21126876,"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":[],"created_at":"2024-11-07T13:20:38.016Z","updated_at":"2025-04-12T13:33:39.349Z","avatar_url":"https://github.com/WorldBrain.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Firestore backend for [Storex](https://github.com/WorldBrain/storex).\n\nUsage\n=====\n\n```\n$ npm install @worldbrain/storex @worldbrain/storex-backend-firestore\n````\n\nSee main Storex repo for futher docs\n\nLimitations\n===========\n\n- You can only sort by one field, and that field must be the one you're filtering by ([Firestore docs](https://firebase.google.com/docs/firestore/query-data/order-limit-data))\n- You cannot use the `$ne` operator ([Firestore docs](https://firebase.google.com/docs/firestore/query-data/queries#query_limitations))\n- No logical ORs ([Firestore docs](https://firebase.google.com/docs/firestore/query-data/queries#query_limitations))\n- Skipping the first X items in an ordered retrieve is done client-side, so it is recommended to increase the lower limit of your resultset instead (`findObjects({foo: {$gt: X + Y}})` rather than `findObjects({foo: {$gt: X}, {skip: Y}})`)\n\nTBD\n===\n\n- Automatic security rule generation\n- Ability to easily move StorageModules to Firebase Functions\n- Back-end agnostic automatic processes, which whould be Firebase Functions listening to certain queries in this backend\n- Subcollection support (after investigations on real-world performance benefits)\n- Media field support integrating with Firebase Cloud Storage\n\nNote: Firebase Realtime database support should be a separate back-end\n\nDevelopment\n===========\n\nCreate a new Firebase project for unit testing, and create the file `\u003cthis-repo\u003e/private/firebase.json` (in `.gitgnore` so it doesn't accidentally go public) with the following contents:\n\n```\n{\n    \"apiKey\": \"xxxx\",\n    \"authDomain\": \"xxx.firebaseapp.com\",\n    \"databaseURL\": \"https://xxxx.firebaseio.com\",\n    \"projectId\": \"xxxxx\",\n    \"storageBucket\": \"xxxx.appspot.com\",\n    \"messagingSenderId\": \"xxxxx\"\n}\n```\n\nThen continuously run the tests while developing:\n```\n$ npm run test:watch\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworldbrain%2Fstorex-backend-firestore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fworldbrain%2Fstorex-backend-firestore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworldbrain%2Fstorex-backend-firestore/lists"}