{"id":16790169,"url":"https://github.com/michelegera/devexcuses-api","last_synced_at":"2025-09-01T09:34:35.919Z","repository":{"id":39636810,"uuid":"112461524","full_name":"michelegera/devexcuses-api","owner":"michelegera","description":"🤷‍♂️ An API for lazy coders’ excuses","archived":false,"fork":false,"pushed_at":"2025-08-11T05:16:38.000Z","size":32975,"stargazers_count":18,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-11T07:22:49.024Z","etag":null,"topics":["api","developers","excuses","funny"],"latest_commit_sha":null,"homepage":"https://api.devexcus.es","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/michelegera.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2017-11-29T10:31:22.000Z","updated_at":"2025-08-11T05:16:40.000Z","dependencies_parsed_at":"2023-02-14T15:20:25.377Z","dependency_job_id":"9d16f7f0-c7da-4686-a8f9-75ae57c34cbf","html_url":"https://github.com/michelegera/devexcuses-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/michelegera/devexcuses-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michelegera%2Fdevexcuses-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michelegera%2Fdevexcuses-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michelegera%2Fdevexcuses-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michelegera%2Fdevexcuses-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michelegera","download_url":"https://codeload.github.com/michelegera/devexcuses-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michelegera%2Fdevexcuses-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273100316,"owners_count":25045697,"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-09-01T02:00:09.058Z","response_time":120,"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":["api","developers","excuses","funny"],"created_at":"2024-10-13T08:29:08.779Z","updated_at":"2025-09-01T09:34:35.890Z","avatar_url":"https://github.com/michelegera.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# devexcuses-api\n\n[![Build status](https://github.com/michelegera/devexcuses-api/actions/workflows/build.yml/badge.svg)](https://github.com/michelegera/devexcuses-api/actions/workflows/build.yml)\n\n\u003e What’s your excuse?\n\n`devexcuses-api` provides a modern, RESTful, scalable solution to developers’\ncommon problem of finding an excuse to justify their sloppy work.\n\nVisit https://api.devexcus.es/ to get your random excuse!\n\n## Translations\n\nThe API is currently available in the following languages:\n\n- English (default)\n- French\n\nTo get a random excuse in a specific language, use a `locale` query parameter:\n\n```bash\ncurl \"https://api.devexcus.es/?locale=fr\"\n```\n\n## Installation\n\n    bundle install\n\n    # SSL support in development, defaults to port 9292\n    brew install mkcert\n    brew install nss\n    mkcert -install\n    mkcert localhost\n\n## Run\n\n    rails server\n\n## Test\n\n    bundle exec rspec\n\n## Contributing\n\nTo add new excuses:\n\n1. Fork the repository into your account\n2. Branch into a feature branch `feature/your-excuse`\n3. Add excuses at the bottom of `data/excuses.yml` using the following format:\n\n   ```yaml\n   - id: 55\n     text_en: \"I’m not getting any error codes.\"\n     # …\n   ```\n\n4. Push to your fork and submit a PR.\n\nTo add a new language:\n\n1. Fork the repository into your account\n2. Branch into a feature branch, e.g. `i8n/it`\n3. Add a new locale in `config/application.rb`\n\n   ```ruby\n   config.i18n.available_locales = %i[en fr it]\n   ```\n\n4. Add translated excuses in `data/excuses.yml` using the following format:\n\n   ```yaml\n   - id: 55\n     text_en: \"I’m not getting any error codes.\"\n     # …\n     text_it: \"Non ricevo alcun codice di errore.\"\n   ```\n\n5. Edit `models/excuse.rb` to add a `field` for the new language:\n\n   ```ruby\n   field :text_it\n   ```\n\n6. Push to your fork and submit a PR.\n\nAll contributions are very welcome.\n\n[wasp]: https://wasp-lang.dev/docs/tutorials/dev-excuses-app\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichelegera%2Fdevexcuses-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichelegera%2Fdevexcuses-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichelegera%2Fdevexcuses-api/lists"}