{"id":15151512,"url":"https://github.com/juzershakir/gratify-me","last_synced_at":"2025-09-29T20:31:27.539Z","repository":{"id":157834011,"uuid":"426577826","full_name":"JuzerShakir/gratify-me","owner":"JuzerShakir","description":"A personal hub for your imagination","archived":true,"fork":false,"pushed_at":"2024-02-06T03:43:02.000Z","size":1296,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-09-27T15:03:53.775Z","etag":null,"topics":["activestorage-service","cloudinary","database","devise","github-api","google-api","heroku-deployment","notebook","omniauth","pagy","rails6","ruby","simple-form","twitter-api"],"latest_commit_sha":null,"homepage":"https://gratify-me.fly.dev/","language":"Ruby","has_issues":false,"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/JuzerShakir.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}},"created_at":"2021-11-10T10:25:48.000Z","updated_at":"2024-02-15T06:00:07.000Z","dependencies_parsed_at":"2023-10-15T06:51:54.786Z","dependency_job_id":null,"html_url":"https://github.com/JuzerShakir/gratify-me","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuzerShakir%2Fgratify-me","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuzerShakir%2Fgratify-me/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuzerShakir%2Fgratify-me/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuzerShakir%2Fgratify-me/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JuzerShakir","download_url":"https://codeload.github.com/JuzerShakir/gratify-me/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234659895,"owners_count":18867636,"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":["activestorage-service","cloudinary","database","devise","github-api","google-api","heroku-deployment","notebook","omniauth","pagy","rails6","ruby","simple-form","twitter-api"],"created_at":"2024-09-26T15:03:53.764Z","updated_at":"2025-09-29T20:31:27.150Z","avatar_url":"https://github.com/JuzerShakir.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Project: Gratify Me\n\n_A hub for keeping track of notes, quotes, and anything that is text-based._\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"app/assets/images/project_logo.png\" /\u003e\n\u003c/div\u003e\n\n![](https://visitor-badge-reloaded.herokuapp.com/badge?page_id=juzershakir.gratify-me\u0026color=000000\u0026lcolor=000000\u0026style=for-the-badge\u0026logo=Github)\n\n\u003ca href=\"https://wakatime.com/@JuzerShakir/projects/bymgryqiii?start=2021-11-09\" target=\"_blank\"\u003e\u003cimg src=\"https://wakatime.com/badge/user/ccef187f-4308-4666-920d-d0a9a07d713a/project/d1c88212-ffbd-4d07-bb6b-ac2c156be01e.svg\" alt=\"wakatime\"\u003e\u003c/a\u003e\n\n## ❗ Objectives\n\nThis web-app must accomplish the following:\n\n- [x] Login users with social services (providers) such as Google, GitHub \u0026 Twitter with the help of Devise and Omniauth.\n- [x] Make sure there's only one login created for each email regardless of which provider he/she uses.\n- [x] If a user signs in with the same email but with a different provider, automatically sign in with the provider they logged in initially.\n- [x] After user signs in, they can add more info about them via the Profile page.\n- [x] Ability to add profile photos via Active Storage \u0026 Cloudinary and display photos on the page with a focus on the face.\n- [x] Users can then add notes, quotes, etc to their feed. Show error when they try to add an empty post.\n- [x] Show users' posts on their homepage sorted from the latest.\n- [x] Provide users the ability to search words or expressions of the post they created through the Search Form gem.\n- [x] Show appropriate flash messages wherever necessary.\n- [x] Show sign-up count to logged-out users.\n- [x] Build a responsive site using bootstrap.\n- [x] When a user manually enters a URL that doesn't exist, redirect them to the homepage with a flash message informing them that the URL doesn't exist.\n\n---\n\n## 💎 Required Gems\n\n**This project was built on Ruby version _3.1.2_.**\n\nFollowing important gems were installed in these versions:\n\n| **Gem Names** |      **Gem**       | **Version** |                     **Use**                      |\n| :-----------: | :----------------: | :---------: | :----------------------------------------------: |\n|     Rails     |     _'rails'_      | **6.1.7.2** |    _Use for executing and rendering web-app_     |\n|  Postgresql   |       _'pg'_       |  **1.2.3**  | _Use postgres as the database for Active Record_ |\n|   Bootstrap   | _'bootstrap-sass'_ |  **3.4.1**  |                _For SCSS Styling_                |\n|    Devise     |     _'devise'_     |  **4.8.0**  |        _Flexible authentication solution_        |\n|   Omniauth    |    _'omniauth'_    |  **2.0.4**  |         _Authenticate via Social logins_         |\n|  Cloudinary   |   _'cloudinary'_   | **1.21.0**  |    _A cloud service for storing user images_     |\n|  Simple Form  |  _'simple_form'_   |  **5.1.0**  |  _Search query through attributes in database_   |\n|     Pagy      |      _'pagy'_      |  **5.3.1**  |                 _For Pagination_                 |\n\n---\n\n## ⚙️ Setting up a PostgreSQL user\n\nIf you don't have a user set on postgres, here's how to set new user:\n\n```bash\nsudo -u postgres createuser -s [username]\n```\n\nTo set a password for this user, log in to the PostgreSQL command line client:\n\n```bash\nsudo -u postgres psql\n```\n\nEnter the following command to set the password:\n\n```bash\n\\password your_password\n```\n\nEnter and confirm the password. Then exit the PostgreSQL client:\n\n```bash\n\\q\n```\n\n---\n\n## 📋 Execution\n\nRun the following commands to execute locally:\n\nThe following will install required version of ruby (make sure [rvm is installed](https://rvm.io/rvm/install).)\n\n```bash\nrvm use 2.7.2\n```\n\n```bash\ngit clone git@github.com:JuzerShakir/gratify-me.git\n```\n\n```bash\ncd gratify-me\n```\n\n```bash\nbundle install\n```\n\n#### 💡 Imp Note:\n\nTo successfully create development and test database, you will need to update `config.database.yml` file with correct postgresql username and password.\nTo edit the it without exposing your credentials, give the following command:\n\n```bash\nEDITOR=\"code --wait\" rails credentials:edit\n```\n\n_`code` for Visual Studio Code_\n_`subl` for sublime_\n\nThis will open `credential.yml` file and enter credential as follows in it:\n\n```\ndatabase:\n  username: your_username\n  password: your_password\n```\n\nHit `ctrl + s` to save and then close the `credential.yml` file from the editor. This will save the credentials. To check if it did save, run the following inside rails console:\n\n```\nRails.application.credentials.dig(:database, :username)\n```\n\n```bash\nrails db:create\n```\n\nTo use Social Login services you will need to create apps for each provider you want to use to generate tokens and secret on their respective developer site.\n\nAfter creating tokens and secrets for each provider, use `credential.yml` file to store the credentials :\n\n```\nprovider:\n  id: abcdefg\n  secret: xxxxx\n```\n\nReplace `provider` with provider name such as google, twitter etc and enter your id and secret for respective providers.\n\nThe code in the `config/initializers/devise.rb` helps load these credentials for each provider.\n\nTo use cloudinary, make a cloudinary account. After creating, visit Dashboard page and just right to the 'Account Details' you will see `Download YML`, click on it and save the file in your `config/` folder as `cloudinary.yml` file. Keep it as it is. **DO NOT EDIT IT!**\n\nAfter setting up all this, you're ready to use this webapp.\n\n```bash\nrails s\n```\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuzershakir%2Fgratify-me","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuzershakir%2Fgratify-me","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuzershakir%2Fgratify-me/lists"}