{"id":23520017,"url":"https://github.com/quequeo/api-quequeo","last_synced_at":"2025-06-25T07:34:51.510Z","repository":{"id":269358966,"uuid":"894531160","full_name":"quequeo/api-quequeo","owner":"quequeo","description":"Quequeo API","archived":false,"fork":false,"pushed_at":"2025-02-07T06:59:21.000Z","size":120924,"stargazers_count":1,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-16T23:14:11.472Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/quequeo.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":"2024-11-26T14:16:58.000Z","updated_at":"2025-01-11T07:02:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"11ac3db2-e7f4-43e6-bb40-dbf396580b97","html_url":"https://github.com/quequeo/api-quequeo","commit_stats":null,"previous_names":["quequeo/api-quequeo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/quequeo/api-quequeo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quequeo%2Fapi-quequeo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quequeo%2Fapi-quequeo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quequeo%2Fapi-quequeo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quequeo%2Fapi-quequeo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quequeo","download_url":"https://codeload.github.com/quequeo/api-quequeo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quequeo%2Fapi-quequeo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261827544,"owners_count":23215766,"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-12-25T16:11:33.036Z","updated_at":"2025-06-25T07:34:51.468Z","avatar_url":"https://github.com/quequeo.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API Quequeo 🚀\n\nWelcome to __API Quequeo__, a robust API developed with __Ruby on Rails 8__ and __Ruby 3.2.4__, designed to operate seamlessly within a Dockerized environment.\n\n## System Requirements 🛠️\n\n__Ruby: 3.2.4__\n__Rails: 8.0.0__\n__PostgreSQL: 15+__\n__Docker: 20.10+__\n__Docker Compose: 2.x+__\n\n⚙️ **Initial Setup** \n1. Clone the repository\n   ```bash\n   git clone https://github.com/your-username/api-quequeo.git\n   cd api-quequeo\n2. Build and launch the application using Docker Compose:\n    ```bash\n    docker-compose build\n    docker-compose up\n****\n**Database** 📦 \nThe database configuration is automated through Docker Compose. Upon running docker-compose build, the PostgreSQL database is initialized using the following environment variables:\n- Database Configuration (default):\n    - Adapter: PostgreSQL\n    - Host: db (via Docker network)\n    - Username: Defined by POSTGRES_USER\n    - Password: Defined by POSTGRES_PASSWORD\n    - Database: api_quequeo_[environment]\n****\n**Routes** 📚\n\nFor a full list of routes, see config/routes.rb\n****\n**Testing** 🧪 \nThis projects uses __RSpec__ for testing. Here's how you can run the tests:\n1. Install RSpec (if not already configured):\n    ```bash\n    docker-compose run app rails generate rspec:install\n2. Run the test suite:\n    ```bash\n    docker-compose run app bundle exec rspec\n3. Database cleaning: The test environment uses **database_cleaner** for a clean slate between tests.\n****\n**CI/CD Pipeline** 🛡️\n- CI (Continuous Integration)\nThe CI pipeline is configured using **GitHub** Actions and includes:\n    - Ruby Security Scanning: Tools like brakeman to detect vulnerabilities in Rails.\n    - Linting: Ensures code quality and style using rubocop.\n    - RSpec Testing: executes the test suite.\n- CD (Continuous Deployment)\nThe deployment process uses **GitHub Actions** to deploy to an EC2 instance via SSH. Upon successful completion of the CI pipeline:\n    - Pulls the latest code to the EC2 instance.\n    - Stops and rebuilds the Docker container.\n    - Launches the updated application.\n****\n**Additional Features** 🔧\n- Authentication: Implemented using JWT.\n- Authorization: Managed by Pundit for role-based access control.\n- File Uploads: Utilizes AWS S3 for storage.\n- Serialization: Active Model Serializers for clean JSON responses.\n- Monitoring: Scout APM for performance monitoring and error tracking.\n***\n**Useful Commands** 📋 \n1. Install new gems:\n    ```bash\n    docker-compose run app bundle install\n2. Verify if the gem is installed\n    ```bash\n    docker-compose run app bundle list | grep 'gem_name'\n3. Rails console\n    ```bash\n    docker-compose run app rails console\n4. Shell access to the container:\n    ```bash\n    docker-compose run app sh\n****\n**Monitoring** 📊\nThis project uses __Scout APM__ for application performance monitoring and error tracking.\n****\n**Deployment** 🚢\n1. Development: Run locally using Docker Compose:\n    ```bash\n    docker-compose up\n2. Production: \nEnsure all environment variables are set. Use the CI/CD pipeline for deployment.\n****\n**License** 📜\nThis project is licensed under the MIT License.\n\n**Author** 👥\nDeveloped by **Jaime F. García Méndez**\n\n\u003c!-- \nActiveRecord::Base.logger.silence { User.find_each(\u0026:touch) } \n--\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquequeo%2Fapi-quequeo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquequeo%2Fapi-quequeo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquequeo%2Fapi-quequeo/lists"}