{"id":18805955,"url":"https://github.com/m-thompson-code/mandrawgora","last_synced_at":"2026-01-08T02:30:14.733Z","repository":{"id":102503999,"uuid":"294830120","full_name":"m-thompson-code/mandrawgora","owner":"m-thompson-code","description":null,"archived":false,"fork":false,"pushed_at":"2020-11-08T09:01:11.000Z","size":671,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-14T18:41:24.513Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m-thompson-code.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":"2020-09-11T23:14:50.000Z","updated_at":"2020-11-08T09:01:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"181504ee-6d54-491b-b230-3dbf98e1f257","html_url":"https://github.com/m-thompson-code/mandrawgora","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-thompson-code%2Fmandrawgora","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-thompson-code%2Fmandrawgora/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-thompson-code%2Fmandrawgora/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-thompson-code%2Fmandrawgora/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m-thompson-code","download_url":"https://codeload.github.com/m-thompson-code/mandrawgora/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239742361,"owners_count":19689308,"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-07T22:45:45.770Z","updated_at":"2026-01-08T02:30:14.692Z","avatar_url":"https://github.com/m-thompson-code.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ManDrawGora - Art gallery profilo and site management system\n\nThis README.me is a work in progress\n\nThis project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.1.\n\n## Development server\n\nRun `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.\n\n## Build\n\nRun `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.\n\n# Managing admins\n\nCurrently, there's no ui for registering a user, so you'll have to do this process through Firebase's dashboard or by using their sdks.\nEnable Firebase Email and Password service on Authentication and create users with the emails you'd like. These people will be able to log into the application.\nThese emails need to be added to your environment, the attribute adminEmails is an array of emails that are allowed to use the Admin UI. You'll also have to add these emails to Firebase Storage and Firestore security rules. Steps are shown below. If the adminEmails array is empty, this assumes anyone who signs in (even if they don't have an email) can access the admin UI. This is for personal reasons (to allow the demo to work for anyone)\n\n# Setup Firebase project:\n\nStart up a firebase project and allow the following services: Storage, Firestore. You'll need to update the security and add indexes to Firestore. The example of the security rules below include 2 emails, \u003cemail 1\u003e and \u003cemail 2\u003e. You allow admin rights for as many emails as you'd like, just update as needed for your needs.\n\n## Storage\nStorage security rules:\n\n```\nrules_version = '2';\nservice firebase.storage {\n  match /b/{bucket}/o {\n    match /{allPaths=**} {\n      allow read: if true;\n      allow write: if request.auth != null \u0026\u0026 (request.auth.token.email == '\u003cemail 1\u003e' || request.auth.token.email == '\u003cemail 2\u003e');\n    }\n  }\n}\n```\n\nUpdate the Bucket permission for your project to allow read access to anyone: https://console.cloud.google.com\n\nBucket name: ${projectID}.appspot.com\nNew members: allUsers\nRole: Storage Object Viewer\n\nWhen you try to add this permission, you'll be prompted that this resource will be public. Click 'ALLOW PUBLIC ACCESS'\n\n## Firestore:\nFirestore security rules:\n\n```\nrules_version = '2';\nservice cloud.firestore {\n    match /databases/{database}/documents {\n        match /files/{file}/{document=**} {\n          \tallow read: if true;\n          \tallow write: if request.auth != null \u0026\u0026 (request.auth.token.email == '\u003cemail 1\u003e' || request.auth.token.email == '\u003cemail 2\u003e');\n        }\n\n        match /sections/{section}/{document=**} {\n          \tallow read: if true;\n          \tallow write: if request.auth != null \u0026\u0026 (request.auth.token.email == '\u003cemail 1\u003e' || request.auth.token.email == '\u003cemail 2\u003e');\n        }\n    }\n}\n```\n\nFirestore indexes:\n\nComposite -\u003e Create index\n\nCollection ID: `files`\n\nFields to index:\n\n`sectionSlug` (`Ascending`)\n`order` (`Descending`)\n\nQuery scopes: `Collection` (not Collection group)\n\nIf you skip this step, Firestore will error and give you a link that will add this index to your project for you, so you can handle this step that way if you'd like.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-thompson-code%2Fmandrawgora","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm-thompson-code%2Fmandrawgora","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-thompson-code%2Fmandrawgora/lists"}