{"id":21937766,"url":"https://github.com/jaspero/fireshop","last_synced_at":"2025-04-22T12:25:32.311Z","repository":{"id":34702677,"uuid":"181155354","full_name":"Jaspero/fireshop","owner":"Jaspero","description":"A modern pwa webshop built on Firebase with Angular","archived":false,"fork":false,"pushed_at":"2023-02-27T20:56:50.000Z","size":8602,"stargazers_count":28,"open_issues_count":70,"forks_count":9,"subscribers_count":10,"default_branch":"master","last_synced_at":"2023-02-27T22:10:10.902Z","etag":null,"topics":["angular","e-commerce","firebase","jaspero","pwa"],"latest_commit_sha":null,"homepage":"https://fireshop.jaspero.co","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/Jaspero.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["Jaspero"]}},"created_at":"2019-04-13T10:33:38.000Z","updated_at":"2022-11-22T22:25:38.000Z","dependencies_parsed_at":"2023-02-17T13:46:03.490Z","dependency_job_id":null,"html_url":"https://github.com/Jaspero/fireshop","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jaspero%2Ffireshop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jaspero%2Ffireshop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jaspero%2Ffireshop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jaspero%2Ffireshop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jaspero","download_url":"https://codeload.github.com/Jaspero/fireshop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227018541,"owners_count":17717934,"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":["angular","e-commerce","firebase","jaspero","pwa"],"created_at":"2024-11-29T01:25:34.037Z","updated_at":"2024-11-29T01:25:34.650Z","avatar_url":"https://github.com/Jaspero.png","language":"TypeScript","readme":"[![CircleCI](https://circleci.com/gh/Jaspero/fireshop.svg?style=svg)](https://circleci.com/gh/Jaspero/fireshop)\n\n# Fireshop\n\nFireshop is a webshop built on [firebase](https://firebase.google.com/) and\nthe [Angular](https://angular.io/) framework.\n\n**Note**: Fireshop is in active development and shouldn't be used in a production environment.\n\n## Supports\n\n- [x] Multilingual\n- [x] Universal Rendering ([SSR](https://angular.io/guide/universal))\n- [x] PWA\n- [x] [Stripe Checkout](https://stripe.com/docs)\n- [x] Offline\n  - [x] Browsing\n  - [ ] Cart\n  - [ ] Checkout\n- [x] [Lazy Image Loading](https://github.com/Jaspero/ng-image-preload)\n- [ ] Google Analytics\n- [x] CI/CD (with [CircleCi](https://circleci.com))\n- [ ] [Guess.js](https://github.com/guess-js)\n- [x] [Prettier](https://github.com/prettier/prettier)\n\n## Setup\n\n- Fork this repository\n- Create a firebase project\n- Replace environment variables in [firebase](https://firebase.google.com/docs/functions/config-env)\n- Add cors configuration for your storage bucket.\n  The below is an example of how this looks for [https://fireshop.jaspero.co](https://fireshop.jaspero.co).\n  ```\n  [\n    {\n      \"origin\": [\"https://fireshop.jaspero.co\", \"https://fireshop.admin.jaspero.co\"],\n      \"method\": [\"GET\"],\n      \"maxAgeSeconds\": 3600\n    }\n  ]\n  ```\n  Create a `cors.json` file with the above configuration and run\n  `gsutil cors set cors.json gs://jaspero-site.appspot.com`, replacing `jaspero-site`\n  with the name of the bucket you'll be using.\n\n## CMS\n\nAn example deployment of the cms can be found [here](https://fireshop.admin.jaspero.co/dashboard).\nYou can use the credentials below to login with a read only account.\n\n| Property | Value                             |\n| -------- | --------------------------------- |\n| Site     | https://fireshop.admin.jaspero.co |\n| Email    | example@jaspero.co                |\n| Password | example                           |\n\n## Project Structure\n\n### Client\n\nThe client application is split in to three main segments dashboard, shop and shared.\nDashboard and shop represent the administrator dashboard and the client facing web shop\nrespectively and the shared folder holds any code shared between the two.\n\n## Firestore Structure\n\n### Authorization\n\nA lot of CRUD operations are limited to admin access. You can read the full set of rules under `firestore.rules`.\nTo add an admin claim to an account add the account email to the `roles` array in the `settings/user` document.\n\n**role**\n\n```\n{\n    \"email\": {\n        \"type\": \"string\"\n    },\n    \"role\": {\n        \"type\": \"string\"\n    }\n}\n```\n\n**note:**\nThis document needs to exist before the user is created.\n\n### Products\n\n### Categories\n\n## Adding a language\n\n## SEO\n\n- **Human readable URL** - In order to get human readable URL-s the product ID should be the URL.\n  This is because firebase only allows loading of a single document by ID.\n\n## Stripe Integration\n\n1. Create a webhook and point it at `[jour-domain]/stripe/webhook`.\n2. Connect `payment_intent.succeeded` and `payment_intent.payment_failed`\n   events for the webhook.\n3. Added the stripe webhook secret to your integrations environment variables.\n\n## Feature Branches\n\n### feature/mail-chimp\n\nCreates a MailChimp account for every new user if the users\nemail isn't listed already.\n","funding_links":["https://github.com/sponsors/Jaspero"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaspero%2Ffireshop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaspero%2Ffireshop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaspero%2Ffireshop/lists"}