{"id":21669378,"url":"https://github.com/attack-monkey/firestack","last_synced_at":"2026-04-19T10:34:07.802Z","repository":{"id":91874009,"uuid":"52707733","full_name":"attack-monkey/firestack","owner":"attack-monkey","description":"express + angular + firebase","archived":false,"fork":false,"pushed_at":"2016-02-29T19:39:12.000Z","size":5338,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-20T07:31:42.044Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/attack-monkey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2016-02-28T06:15:56.000Z","updated_at":"2016-02-28T06:17:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"ee13465a-98ac-43d5-aa9e-92108c360724","html_url":"https://github.com/attack-monkey/firestack","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/attack-monkey/firestack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attack-monkey%2Ffirestack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attack-monkey%2Ffirestack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attack-monkey%2Ffirestack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attack-monkey%2Ffirestack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attack-monkey","download_url":"https://codeload.github.com/attack-monkey/firestack/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attack-monkey%2Ffirestack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32004038,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"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":"2024-11-25T12:21:31.898Z","updated_at":"2026-04-19T10:34:07.793Z","avatar_url":"https://github.com/attack-monkey.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# firestack\nexpress + angular + firebase\n\n\nAngularfire is awesome - but lacks some key elements that firestack seeks to solve.\n\n1. Firebase only loads when angular has loaded which means a noticeable delay in data.\n2. Complex operations (i.e. ones that should be performed on the server side) can't be done by the angularfire api alone.\n3. Basically the only server is firebase, which only handles data (and users).\n4. Even with services like prerender.io SEO can still be a nightmare.\n\n## Scope\n\nFirestack uses node + express to give you a js stack that compliments angular + firebase and is wired up with firewire.\n- Firebase data is available as soon as angular is ready.\n- Server-side operations are handled by hitting the express api.\n- While you still need Prerender, you can now also dynamically load meta + schema.org + opengraph data.\n\nAt this stage the stack does not go below (i.e. Server, hosting, etc.) or above (Frontend frameworks etc.) this.\n\n## firewire\n- Instead of waiting for firebase to be called by angular (which can be quite slow to establish), firewire calls firebase from Express.\n- the firewire object `fw` is exposed via jade into the client.\n- angular loads `fw` to `$rootScope.fw` but also establishes a client connection to firebase and switches `$rootScope.fw` to a realtime connection seamlessly.\n\n### firewire usage\n`#{fw.blah} \t// Loads static data (i.e. doesn't switch to realtime`  \n`{{fw.blah}} \t// Switches to realtime data once a connection is made`\n## Fire\n\n## This project is still half-baked sorry...\n\nFirestack solves the problems of angular + firebase alone - creating an awesome firey stack.  \n- Firewire\n  - Creates dynamic page \u0026 data routes.\n  - Makes firebase data available to angular with zero delay and seamlessly switches to realtime data moments later.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fattack-monkey%2Ffirestack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fattack-monkey%2Ffirestack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fattack-monkey%2Ffirestack/lists"}