{"id":26877233,"url":"https://github.com/patrickmoraisn/photobase","last_synced_at":"2026-04-09T08:08:49.781Z","repository":{"id":154931521,"uuid":"441269943","full_name":"PatrickMoraisN/Photobase","owner":"PatrickMoraisN","description":"Save your photos in Firebase","archived":false,"fork":false,"pushed_at":"2022-01-08T22:53:07.000Z","size":3608,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-23T00:02:02.432Z","etag":null,"topics":["eslint-prettier","firebase","oauth","react-js","styled-components","theme-switcher","typescript"],"latest_commit_sha":null,"homepage":"","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/PatrickMoraisN.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,"zenodo":null}},"created_at":"2021-12-23T18:53:01.000Z","updated_at":"2022-01-08T22:56:41.000Z","dependencies_parsed_at":"2023-06-15T07:45:18.628Z","dependency_job_id":null,"html_url":"https://github.com/PatrickMoraisN/Photobase","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PatrickMoraisN/Photobase","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PatrickMoraisN%2FPhotobase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PatrickMoraisN%2FPhotobase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PatrickMoraisN%2FPhotobase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PatrickMoraisN%2FPhotobase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PatrickMoraisN","download_url":"https://codeload.github.com/PatrickMoraisN/Photobase/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PatrickMoraisN%2FPhotobase/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267213498,"owners_count":24053912,"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","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"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":["eslint-prettier","firebase","oauth","react-js","styled-components","theme-switcher","typescript"],"created_at":"2025-03-31T11:19:08.691Z","updated_at":"2026-04-09T08:08:49.750Z","avatar_url":"https://github.com/PatrickMoraisN.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![banner](src/assets/photobase.png)\n\u003cbr /\u003e\n\n# :pushpin: Index\n- [Project Media](#camera_flash-project-media)\n- [About](#monocle_face-about)\n- [Technologies](#rocket-technologies)\n- [Installation](#hammer_and_wrench-installation-steps)\n- [Author](#closed_book-author)\n\u003cbr /\u003e\n\n---\n\n# :camera_flash: Project Media\nLogin - upload invalid photo\n![Imagem do projeto](src/assets/gif1.gif)\n\nUpload valid photo\n![Imagem do projeto](src/assets/gif2.gif)\n\nModal photo - delete photo\n![Imagem do projeto](src/assets/gif3.gif)\n\n\u003cbr /\u003e\n\n---\n# :scroll: Rules\n\n- ### Photo upload\n  - It is not allowed to upload an empty file.\n  - It is not allowed to upload file with other extensions than these: `'image/jpeg', 'image/jpg', 'image/png'`.\n\n*warned by React Toastify*\n\n---\n# :monocle_face: About\nProject designed to practice React integration with Firebase Storage and Google OAuth / Theme Switch.\n\nTo log into the application, react-google-login lib was used.\nData is persisted to Local Storage via useGoogleAuthInfo Hook.\n\nTo change themes, Styled Components Theme Context was used via useSwitchTheme Hook.\n\nI hope you enjoy :D\n\u003cbr /\u003e\n\n---\n\n# :rocket: Technologies\nThis project was developed with the following technologies: \u003cbr\u003e\n- :heavy_check_mark: **React**\n- :heavy_check_mark: **Context API**\n- :heavy_check_mark: **Hooks**\n- :heavy_check_mark: **Styled Components**\n- :heavy_check_mark: **TypeScript**\n- :heavy_check_mark: **OAuth**\n- :heavy_check_mark: **Firebase Storage**\n- :heavy_check_mark: **Modal / Toastify / Switch**\n- :heavy_check_mark: **ESLint**\n- :heavy_check_mark: **Prettier**\n\u003cbr\u003e\u003cbr\u003e\n\u003cbr /\u003e\n\n---\n\n# :hammer_and_wrench: Installation Steps\n**This project involves many .env files, be sure you have them!**\n\n---\n**You must have an active project on google console**\n  - Go to `https://console.cloud.google.com/`\n  - Create and configure a new project API (set `http://localhost:3000` in allowed urls).\n  - Save `client_id` and `secret_key` keys, we need them.\n\n**You must have an active project on Firebase**\n  - Go to `https://console.firebase.google.com/`\n  - Create and configure a new project.\n  - Save Firebase keys, we need them.\n  - On Storage session, create a folder `images`.\n  - On Storage session, set `Rules` to: \u003cbr\u003e\n\n  ```js\n  rules_version = '2';\n  service firebase.storage {\n    match /b/{bucket}/o {\n      match /{allPaths=**} {\n        allow read, write: if request.auth!=null;\n      }\n    }\n  }\n```\n---\n\n1. Clone the repository\n\n```bash\ngit clone git@github.com:PatrickMoraisN/Photobase.git\n```\n\n2. Change the working directory\n\n```bash\ncd Photobase\n```\n\n3. Install dependencies\n\n```bash\nnpm install\n```\n\n4. Create `.env` file in root and add your variables\n\n```bash\n### GOOGLE\n\nREACT_APP_CLIENT_ID=__your-client-id-from-google__\nREACT_APP_SECRET_KEY_CLIENT=__your-secret-key-from-google__\n\n### FIREBASE\n\nREACT_APP_API_KEY=__your-api-key-from-firebase__\nREACT_APP_AUTH_DOMAIN=__your-auth-domain-from-firebase__\nREACT_APP_PROJECT_ID=__your-project-id-from-firebase__\nREACT_APP_STORAGE_BUCKET=__your-storage-bucket-from-firebase__\nREACT_APP_MESSAGING_SENDER_ID=__your-messaging-sender-id-from-firebase__\nREACT_APP_APP_ID=__your-app-id-from-firebase__\n\n\n```\n\n5. Run the app\n\n```bash\nnpm start\n```\n\nYou are all set! Open [localhost:3000](http://localhost:3000/) to see the app.\n\n---\n\n# :closed_book: Author\nPatrick Morais \u003cbr\u003e\n[![Linkedin Badge](https://img.shields.io/badge/-Linkedin-6633cc?style=flat-square\u0026logo=Linkedin\u0026logoColor=white\u0026link=https://www.linkedin.com/in/patrick-morais/)](https://www.linkedin.com/in/patrick-morais/)\u003cbr\u003e\n[![Gmail Badge](https://img.shields.io/badge/-ppternunes@gmail.com-6633cc?style=flat-square\u0026logo=Gmail\u0026logoColor=white\u0026link=mailto:ppternunes@gmail.com)](mailto:ppternunes@gmail.com)\u003cbr\u003e\n[![GitHub Badge](https://img.shields.io/badge/-Patrick%20Morais-6633cc?style=flat-square\u0026logo=github\u0026logoColor=white)](https://www.github.com/patrickmoraisn/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrickmoraisn%2Fphotobase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatrickmoraisn%2Fphotobase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrickmoraisn%2Fphotobase/lists"}