{"id":42166160,"url":"https://github.com/rgdevme/firenook","last_synced_at":"2026-01-26T21:03:55.523Z","repository":{"id":268262352,"uuid":"895307035","full_name":"rgdevme/firenook","owner":"rgdevme","description":"Your new, simple, and fast Firebase admin panel (not a CMS... yet! 😉)! Built with React.js, it's easy to use, customizable, and extensible. Firenoook is here to make Firebase content management super easy. ✨","archived":false,"fork":false,"pushed_at":"2025-02-03T19:48:49.000Z","size":644,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T07:01:48.110Z","etag":null,"topics":["cms","firebase","plugins","react","typescript"],"latest_commit_sha":null,"homepage":"","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/rgdevme.png","metadata":{"files":{"readme":"README.mdx","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":"2024-11-28T00:43:30.000Z","updated_at":"2025-01-30T21:42:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"95727118-2cc1-4c2a-8e0a-2db1455a7f62","html_url":"https://github.com/rgdevme/firenook","commit_stats":null,"previous_names":["rgdevme/firenook"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rgdevme/firenook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgdevme%2Ffirenook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgdevme%2Ffirenook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgdevme%2Ffirenook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgdevme%2Ffirenook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rgdevme","download_url":"https://codeload.github.com/rgdevme/firenook/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgdevme%2Ffirenook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28788095,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T21:02:48.137Z","status":"ssl_error","status_checked_at":"2026-01-26T21:01:13.039Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cms","firebase","plugins","react","typescript"],"created_at":"2026-01-26T21:03:50.046Z","updated_at":"2026-01-26T21:03:55.511Z","avatar_url":"https://github.com/rgdevme.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align='center'\u003e\n\t\u003cimg src='assets/logo.png' width='120' /\u003e\n\u003c/p\u003e\n\u003ch1 align='center'\u003eFirenook\u003c/h1\u003e\n\u003cp align='center'\u003eThe free Firebase admin panel we deserve\u003c/p\u003e\n\n## What is Firenook?\n\nFirenook is a react.js based admin panel for firebase that aims to provide an easy-to-use, customizable interface along with an extensible framework.\n\nPlease note that **this is not a CMS**, and it's far from being one (yet! 😉). My only focus right now is to provide a better admin experience the firebase admin panel.\n\n## How does it work?\n\nTh setup is pretty simple:\n\n1. Define your firebase config\n2. Initialize your root element\n3. Render Firenook with any plugins you need\n\n```tsx\nimport { BucketsPlugin } from '@firenook/bucket'\nimport { Firenook, initializeFirebase } from '@firenook/core'\nimport { createRoot } from 'react-dom/client'\nimport yourFirebaseConfig from './firebase.config.json'\n\nimport '@firenook/core/index.css'\nimport logo from './assets/logo.png'\n\nconst config = initializeFirebase(\n\tyourFirebaseConfig,\n\ttrue // Tell firebase you want to run its emulators\n)\n\nconst root = createRoot(document.getElementById('root')!)\nroot.render(\n\t\u003cFirenook\n\t\t{...config}\n\t\tlogo={logo}\n\t\tplugins={[\n\t\t\tBucketsPlugin(config)\n\t\t\t// ... other plugins\n\t\t]}\n\t/\u003e\n)\n```\n\n\u003e **IMPORTANT:** As you can see, this does not run on a server but merely on the browser.\n\u003e\n\u003e **This is not a secure-by-default application.**\n\u003e\n\u003e If you intend to host this to use it as your admin, please follow the best practices to secure your firestore data, and be sure to hide your admin from undesired users.\n\n## Plugins?\n\nYes. Each functionality in Firenook can be traced to a plugin. This makes it easy for me to maintain the framework, and enables you to develop your own functionality!\n\nHere is the list of plugins and their status:\n\n| Name        | Status | Description                                                                          |\n| ----------- | ------ | ------------------------------------------------------------------------------------ |\n| Firestore   | 🔥     | CRUD operation and schema management for firestore collections and records           |\n| Storage     | 🔥     | CRUD operation and schema management for folders in a single firebase storage bucket |\n| Permissions | 🚧     | CRUD operation and schema management for folders in a single firebase storage bucket |\n| Pages       | ❓     | CRUD operation and schema management for folders in a single firebase storage bucket |\n\n\u003e ❓ Pending, 🚧 Work in progress, 🔥 Ready\n\n### Plugin development\n\nThe core priciple is simple: Each plugin must render something.\n\nEach plugin is a simple function that passes in a sigle parameter holding the Firenook app configuration.\n\n```tsx\nimport { FirenookPluginFunction } from '@firenook/core'\nimport { provider, routes, menuItems, header } from '..'\n\nexport const MyPlugin: FirenookPluginFunction = ({ firestore, auth, storage, app }) =\u003e {\n\n\t/** Handle stores' intializations and or whatever fits your needs */\n\n\treturn {\n\t\tname: 'fn-[your-custom-name]-plugin',\n\t\tprovider: () =\u003e (...),  // Context provider\n\t\troutes, // Object containing your routes\n\t\tmenuItems, // Function component that renders your menu items\n\t\theader // Function component that renders your header\n\t}\n}\n\nexport default MyPlugin\n\n```\n\n| Property | Description                                                                |\n| -------- | -------------------------------------------------------------------------- |\n| provider | FunctionComponent that will be rendered as context                         |\n| routes   | An array of objects containing a route and their corresponding JSX.Element |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frgdevme%2Ffirenook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frgdevme%2Ffirenook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frgdevme%2Ffirenook/lists"}