{"id":14955660,"url":"https://github.com/iturres/blog_app","last_synced_at":"2025-10-01T01:31:14.576Z","repository":{"id":209755121,"uuid":"724820951","full_name":"ITurres/blog_app","owner":"ITurres","description":"💎 RoR blog website / API. fully functional website that list posts to empower readers to interact with them by adding comments and liking them.","archived":false,"fork":false,"pushed_at":"2024-02-16T02:07:43.000Z","size":249,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"development","last_synced_at":"2025-01-08T01:42:20.064Z","etag":null,"topics":["postgresql","rails-application","ror-api","ruby-app","ruby-on-rails"],"latest_commit_sha":null,"homepage":"https://blog-app-m4k8.onrender.com/","language":"Ruby","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/ITurres.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-11-28T21:29:22.000Z","updated_at":"2024-02-14T21:25:18.000Z","dependencies_parsed_at":"2024-01-04T04:25:31.725Z","dependency_job_id":"c750977b-fd22-49f2-b09a-2ded015dcfe5","html_url":"https://github.com/ITurres/blog_app","commit_stats":{"total_commits":168,"total_committers":3,"mean_commits":56.0,"dds":0.09523809523809523,"last_synced_commit":"940cf9d4bef5b0bce94bc18bc14ba300fc61c2cc"},"previous_names":["iturres/blog_app"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ITurres%2Fblog_app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ITurres%2Fblog_app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ITurres%2Fblog_app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ITurres%2Fblog_app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ITurres","download_url":"https://codeload.github.com/ITurres/blog_app/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232962556,"owners_count":18603378,"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":["postgresql","rails-application","ror-api","ruby-app","ruby-on-rails"],"created_at":"2024-09-24T13:11:30.726Z","updated_at":"2025-10-01T01:31:14.130Z","avatar_url":"https://github.com/ITurres.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"app/assets/images/blog-logo.png\" alt=\"logo\" width=\"250\"  height=\"auto\" /\u003e\n    \u003ch1\u003e\u003cb\u003eBlog App\u003c/b\u003e\u003c/h1\u003e\n\u003c/div\u003e\n\n---\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\n# 📗 Table of Contents\n\n- [📖 About the Project](#about-project)\n  - [🛠 Built With](#built-with)\n    - [Tech Stack](#tech-stack)\n    - [🚀 Live Demo](#live-demo)\n    - [Key Features](#key-features)\n- [💻 Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Setup](#setup)\n  - [Install](#install)\n  - [Usage](#usage)\n  - [Run tests](#run-tests)\n- [👥 Authors](#authors)\n- [🔭 Future Features](#future-features)\n- [🤝 Contributing](#contributing)\n- [⭐️ Show your support](#support)\n- [🙏 Acknowledgements](#acknowledgements)\n- [📝 License](#license)\n\n---\n\n\u003c!-- PROJECT DESCRIPTION --\u003e\n\n# 📖 Blog App \u003ca name=\"about-project\"\u003e\u003c/a\u003e\n\n- The Blog app is an example of a blog website. A fully functional website that will show the list of posts and empower readers to interact with them by adding comments and liking posts.\n\n- It can also be used from other applications through the API endpoints.\n\n#### Learning objectives\n\n- Use Ruby Gems as a software packages system.\n- Understand what ORM is.\n- Use database migration files to maintain database schema.\n- Set up associations between models.\n- Write SQL queries with Active Record.\n- Use validations for models.\n- Write unit tests for models.\n- Use controllers to handle requests and render empty views.\n- Understand Rails naming conventions.\n- Use params from browser requests in a safe way.\n- Write tests for controllers.\n- Use preprocessed HTML files with embedded Ruby code.\n- Use layouts and templates for shared content.\n- Write integration tests with Capybara gem.\n- Secure app from n+1 problems.\n- Build a web app that requires the user to log in.\n- Use devise gem for authentication.\n- Limit access to web app resources based on authorization rules with Cancan Gem.\n- Build a RESTful API.\n- Understand the importance of APIs and docs following standards.\n- Generate documentation for an API.\n- Understand the importance of APIs and docs following standards.\n\n## 🛠 Built With \u003ca name=\"built-with\"\u003e\u003c/a\u003e\n\n### Tech Stack \u003ca name=\"tech-stack\"\u003e\u003c/a\u003e\n\n  \u003cul\u003e\n    \u003cli\u003e\n      \u003ca href=\"https://www.ruby-lang.org/en/\"\u003e\n        \u003cimg src=\"https://skillicons.dev/icons?i=ruby\"/\u003e Ruby\n      \u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"https://rubyonrails.org/\"\u003e\n        \u003cimg src=\"https://skillicons.dev/icons?i=rails\"/\u003e Rails\n      \u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"https://www.postgresql.org/\"\u003e\n        \u003cimg src=\"https://skillicons.dev/icons?i=postgresql\"/\u003e PostgreSQL\n      \u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"https://developer.mozilla.org/en-US/docs/Web/CSS\"\u003e\n        \u003cimg src=\"https://skillicons.dev/icons?i=css\"/\u003e CSS\n      \u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"https://getbootstrap.com/docs/4.0/getting-started/introduction/\"\u003e\n        \u003cimg src=\"https://skillicons.dev/icons?i=bootstrap\"/\u003e Bootstrap\n      \u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"https://www.w3schools.com/html/\"\u003e\n        \u003cimg src=\"https://skillicons.dev/icons?i=html\"/\u003e HTML5\n      \u003c/a\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\n#### Highlighted Gems\n\n- [Devise](https://github.com/heartcombo/devise/wiki)\n- [Cancancan](https://github.com/CanCanCommunity/cancancan)\n\n---\n\n\u003c!-- * LIVE DEMO --\u003e\n\n## 🚀 Live Demo \u003ca name=\"live-demo\"\u003e\u003c/a\u003e\n\n- [Blog App - Live Demo Link](https://blog-app-m4k8.onrender.com/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n---\n\n### :key: Key Features \u003ca name=\"key-features\"\u003e\u003c/a\u003e\n\n- It allows you to create, edit and delete posts.\n- create, edit and delete comments.\n- You can also like posts.\n- Great authentication by gem `devise`.\n- And flawless authorization by gem `cancancan`.\n- API Endpoints.\n\n---\n\n\u003c!-- GETTING STARTED --\u003e\n\n## 💻 Getting Started \u003ca name=\"getting-started\"\u003e\u003c/a\u003e\n\nTo get a local copy up and running, follow these steps.\n\n### Prerequisites\n\nTo run this project you need:\n\n- Have Ruby installed. If you need to install Ruby, follow the instructions on the [official page](https://www.ruby-lang.org/en/documentation/installation/).\n\n### Setup\n\nClone this repository to your desired folder:\n\nExample commands:\n\n- With SSH:\n\n```bash\n  cd my-folder\n  git clone git@github.com:ITurres/blog_app.git\n```\n\n- With HTTPS:\n\n```bash\n  cd my-folder\n  git clone https://github.com/ITurres/blog_app.git\n```\n\n- With GitHub CLI:\n\n```bash\n  cd my-folder\n  gh repo clone ITurres/blog_app\n```\n\n### Install \u003ca name=\"install\"\u003e\u003c/a\u003e\n\nGo to the project directory:\n\n```bash\n cd blog_app\n```\n\nBefore running the program, verify that you have Ruby on Rails installed on your OS by running the following command:\n\n```bash\n rails --version\n```\n\nIt should show you the version of Ruby On Rails ​​installed. If this does not happen and only an error message is displayed, you should verify your installation or install Ruby on Rails from scratch.\n\n[Download and Install Ruby on Rails](https://guides.rubyonrails.org/getting_started.html)\n\nOnce you have verified that you have Ruby on Rails installed, run the following command to install the necessary gems:\n\n```bash\n bundle install\n```\n\nAfter installing the gems, run the following command to create the database:\n\n```bash\n rails db:create\n```\n\nThen run the following command to migrate the database:\n\n```bash\n rails db:migrate\n```\n\nIf you want to populate the database with sample data, run the following command:\n\n```bash\n rails db:seed\n```\n\n### Usage \u003ca name=\"usage\"\u003e\u003c/a\u003e\n\nRun the following command inside the project folder to start the application:\n\n```bash\n rails s\n```\n\nThis will start the application on your local server. You can now open your browser and go to http://localhost:3000/ to see the application running.\n\n### Run tests \u003ca name=\"run-tests\"\u003e\u003c/a\u003e\n\nTo execute the tests, run the following command inside the project folder (root):\n\n```bash\n bundle exec rspec\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n---\n\n\u003c!-- AUTHORS --\u003e\n\n## 👥 Authors \u003ca name=\"authors\"\u003e\u003c/a\u003e\n\n👤 **Arthur Iturres**\n\n- GitHub: [@ITurres](https://github.com/ITurres)\n- LinkedIn: [Arthur Emanuel G. Iturres](https://www.linkedin.com/in/arturoemanuelguerraiturres/)\n- Angellist / Wellfound: [Arturo (Arthur) Emanuel Guerra Iturres](https://wellfound.com/u/arturo-arthur-emanuel-guerra-iturres)\n- Youtube: [Arturo Emanuel Guerra Iturres - Youtube Channel](https://www.youtube.com/channel/UC6GFUFHOtBS9mOuI8EJ6q4g)\n- Portfolio: [Arthur Iturres - Portfolio](https://iturres.github.io/iturres-reactive-portfolio/)\n\n👤 **Demes Ameneshoa**\n\n- GitHub: [@demesameneshoa](https://github.com/demesameneshoa)\n- LinkedIn: [@demesameneshoa](https://www.linkedin.com/in/demesameneshoa/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n---\n\n\u003c!-- FUTURE FEATURES --\u003e\n\n## 🔭 Future Features \u003ca name=\"future-features\"\u003e\u003c/a\u003e\n\n- [x] Creating a data model.\n- [x] Processing data in models.\n- [x] Validations and Model specs.\n- [x] Controllers.\n- [x] Controllers specs.\n- [x] Views.\n- [x] Forms.\n- [x] Integration specs for Views and fixing n+1 problems.\n- [x] Add `Devise`.\n- [x] Add authorization rules (`CanCanCan`).\n- [x] Add API endpoints.\n- [ ] API documentation.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n---\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## 🤝 Contributing \u003ca name=\"contributing\"\u003e\u003c/a\u003e\n\nContributions, issues, and feature requests are welcome!\n\nFeel free to check the [issues page](https://github.com/ITurres/blog_app/issues).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n---\n\n\u003c!-- SUPPORT --\u003e\n\n## ⭐️ Show your support \u003ca name=\"support\"\u003e\u003c/a\u003e\n\nGive a ⭐ if you liked this project!\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n---\n\n\u003c!-- ACKNOWLEDGEMENTS --\u003e\n\n## 🙏 Acknowledgments \u003ca name=\"acknowledgements\"\u003e\u003c/a\u003e\n\nI thank the **Code Reviewers** for their advice and time, and to @demesameneshoa, who has been a great and professional teammate 🏆\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n---\n\n\u003c!-- LICENSE --\u003e\n\n## 📝 License \u003ca name=\"license\"\u003e\u003c/a\u003e\n\nThis project is [MIT](./LICENSE) licensed.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiturres%2Fblog_app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiturres%2Fblog_app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiturres%2Fblog_app/lists"}