{"id":20396880,"url":"https://github.com/jijojames18/hobbies.jijojames.com","last_synced_at":"2026-04-12T00:02:08.719Z","repository":{"id":39333417,"uuid":"164899939","full_name":"jijojames18/hobbies.jijojames.com","owner":"jijojames18","description":"Hobbies website","archived":false,"fork":false,"pushed_at":"2023-09-16T12:16:46.000Z","size":3087,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-15T11:09:13.432Z","etag":null,"topics":["bootstrap","firebase","react","redux"],"latest_commit_sha":null,"homepage":"https://hobbies.jijojames.com","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/jijojames18.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":"2019-01-09T16:38:07.000Z","updated_at":"2023-08-25T10:15:21.000Z","dependencies_parsed_at":"2025-01-15T10:35:15.458Z","dependency_job_id":"1d752f47-8654-4874-8830-db3cf18f22dc","html_url":"https://github.com/jijojames18/hobbies.jijojames.com","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jijojames18%2Fhobbies.jijojames.com","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jijojames18%2Fhobbies.jijojames.com/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jijojames18%2Fhobbies.jijojames.com/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jijojames18%2Fhobbies.jijojames.com/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jijojames18","download_url":"https://codeload.github.com/jijojames18/hobbies.jijojames.com/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241945526,"owners_count":20046869,"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":["bootstrap","firebase","react","redux"],"created_at":"2024-11-15T04:10:09.387Z","updated_at":"2025-10-25T01:04:02.078Z","avatar_url":"https://github.com/jijojames18.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## hobbies.jijojames.com.\n\nHobby website built using React and Bootstrap React.  \nThe website is hosted at [hobbies.jijojames.com](https://hobbies.jijojames.com).  \nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). The data is stored in Google Firestore and is fetched using the JavaScript Admin SDK for Firebase. The app uses Redux to store the data, Redux-saga for handling side-effects and React router for navigation.\n\n### Styling\n\nStyling is done using `styled-components`.\n\n## Database\n\nThe service uses Firestore provide by Google Firebase for storing the necessary data\n\n`Collection` : `blog`  \nDocument structure  \nField | Type | Description |\n------|-------|-------------|\ndate | String | Date on which the blog was posted |\ndesc | String | Short description of blog post |\nid | Number | Unique id value |\nimage| String | Title image url |\ntitle| String | Title of the blog post |\nurl | String | Blogger url |\n\n`Collection` : `gallery`  \nDocument structure  \nField | Type | Description |\n------|-------|-------------|\ndate | String | Date on which the picture was taken |\nid | Number | Unique id value |\nplace| String | Place at which the picture was taken |\nurl | String | Url of image hosted at a 3rd party website |\n\nAt the time of development, firebase didn't have good way to obtain the total number of documents in a collection. So I had to create a new collection which holds the total for each of the collections.\n\n`Collection` : `total`  \nDocument structure  \nField | Type | Description |\n------|-------|-------------|\nblog | Number | Total number of blog posts |\ngallery | Number | Total number of images |\n\n## Environment Variables\n\nThe service requires a number of config data to be present as environment variables.\n\n| Variable                     | Description                                                         |\n| ---------------------------- | ------------------------------------------------------------------- |\n| REACT_APP_PERSIST_KEY        | Key in local storage where the data is persisted by `redux-persist` |\n| REACT_APP_RECAPTCHA_SITE_KEY | Google ReCaptcha site key                                           |\n| REACT_APP_FIREBASE_CONFIG    | Firebase SDK config                                                 |\n| REACT_APP_EMAIL_SERVICE_ID   | emailjs service id                                                  |\n| REACT_APP_EMAIL_TEMPLATE_ID  | emailjs template id                                                 |\n| REACT_APP_EMAIL_PUBLIC_KEY   | emailjs public key                                                  |\n\n## Available Scripts\n\nIn the project directory, you can run:\n\n### `npm start`\n\nRuns the app in the development mode.\u003cbr /\u003e\nOpen [http://localhost:3000](http://localhost:3000) to view it in the browser.\n\nThe page will reload if you make edits.\u003cbr /\u003e\nYou will also see any lint errors in the console.\n\n### `npm test`\n\nLaunches the test runner in the interactive watch mode.\u003cbr /\u003e\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\n\n### `npm run build`\n\nBuilds the app for production to the `build` folder.\u003cbr /\u003e\nIt correctly bundles React in production mode and optimizes the build for the best performance.\n\nThe build is minified and the filenames include the hashes.\u003cbr /\u003e\nYour app is ready to be deployed!\n\n## Development flow\n\n1. Clone the repository to your local machine.\n2. Copy env.example as .env.\n3. Replace the keys inside the .env with the correct values.\n4. Run `npm install` and `npm start` to setup the local environment.\n\n### Reference\n\n- [Google Firestore](https://firebase.google.com/docs/firestore)\n- [Firebase Admin Console](https://console.firebase.google.com/)\n- [React Bootstrap](https://react-bootstrap.github.io/)\n- [Google ReCaptcha](https://developers.google.com/recaptcha/intro)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjijojames18%2Fhobbies.jijojames.com","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjijojames18%2Fhobbies.jijojames.com","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjijojames18%2Fhobbies.jijojames.com/lists"}