{"id":29551223,"url":"https://github.com/ambrosiaandrade/pets","last_synced_at":"2026-04-16T10:04:18.077Z","repository":{"id":300070018,"uuid":"1000530376","full_name":"ambrosiaandrade/pets","owner":"ambrosiaandrade","description":"Pet Project is a Spring Boot backend app showcasing clean architecture, Kafka integration, async endpoints, and CI/CD with GitHub Actions. Ideal for learning and prototyping modern backend features.","archived":false,"fork":false,"pushed_at":"2025-10-22T23:15:40.000Z","size":9674,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-27T04:52:13.502Z","etag":null,"topics":["actuator","ci-cd","clean-architecture","devtools","docker","github-actions","h2-database","jacoco","junit5","kafka","lombok","mapstruct","maven","mockito","openapi","pagination","rest-api","spring-boot","springdoc","swagger"],"latest_commit_sha":null,"homepage":"","language":"Java","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/ambrosiaandrade.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2025-06-11T23:53:43.000Z","updated_at":"2025-10-22T23:14:02.000Z","dependencies_parsed_at":"2025-06-19T18:46:16.914Z","dependency_job_id":"534b7dfe-523c-4f24-8197-602d5a27d235","html_url":"https://github.com/ambrosiaandrade/pets","commit_stats":null,"previous_names":["ambrosiaandrade/pets"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ambrosiaandrade/pets","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambrosiaandrade%2Fpets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambrosiaandrade%2Fpets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambrosiaandrade%2Fpets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambrosiaandrade%2Fpets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ambrosiaandrade","download_url":"https://codeload.github.com/ambrosiaandrade/pets/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambrosiaandrade%2Fpets/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31880884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T09:23:21.276Z","status":"ssl_error","status_checked_at":"2026-04-16T09:23:15.028Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["actuator","ci-cd","clean-architecture","devtools","docker","github-actions","h2-database","jacoco","junit5","kafka","lombok","mapstruct","maven","mockito","openapi","pagination","rest-api","spring-boot","springdoc","swagger"],"created_at":"2025-07-18T04:02:05.709Z","updated_at":"2026-04-16T10:04:18.059Z","avatar_url":"https://github.com/ambrosiaandrade.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pet Project\nA modern Spring Boot RESTful API project following MVC architecture, featuring Kafka integration, Docker support, automated testing, and CI/CD with GitHub Actions.\n\n\u003e 🇧🇷 Este projeto está disponível em português: [README.pt-BR.md](README.pt-BR.md)\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eTable of contents\u003c/b\u003e\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\u003ca href=\"#-description\"\u003eDescription\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-technologies\"\u003eTechnologies\u003c/a\u003e\n      \u003cul\u003e\u003cli\u003e\u003ca href=\"#maven\"\u003eMaven\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#-getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-demo\"\u003eDemo\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-folder-structure\"\u003eFolder Structure\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-useful-links\"\u003eUseful Links\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-sequence-diagrams\"\u003eSequence Diagrams\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-testing\"\u003eTesting\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-ci-and-cd\"\u003eCI and CD\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-author\"\u003eAuthor\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n### 📖 Description\n\nThis project is a comprehensive toolbox application featuring robust CRUD operations and seamless integration with modern technologies such as Spring Boot, Kafka, and Docker. Designed for scalability and maintainability, it leverages best practices in software engineering, including automated testing and CI/CD workflows via GitHub Actions. Ideal for learning, prototyping, or serving as a foundation for other services.\n\n### ✨ Features\n\n* **🔁 Full CRUD Operations** – Manage entities through RESTful APIs with clear separation of concerns.\n* **📄 Pagination Support** – Efficiently handle large datasets with pageable endpoints.\n* **⚙️ Asynchronous Endpoints** – Demonstrates how to run non-blocking operations using `CompletableFuture`.\n* **📨 Kafka Integration** – Includes Kafka producers and consumers with example topics and message flow.\n* **📤 Export Controller** – Provides endpoints to export data in various formats (e.g., CSV, PDF), enabling easy data extraction and integration with external systems.\n* **📊 Sequence Diagrams** – Visual documentation of key controller interactions using PlantUML.\n* **🧪 Test Coverage with JaCoCo** – Enforces 80% code coverage and generates readable HTML reports.\n* **🧰 Swagger Integration** – Auto-generated API documentation using SpringDoc OpenAPI.\n* **📋 H2 In-Memory Database** – Lightweight database for development and testing purposes.\n* **📦 Docker-Ready** – Includes a `docker-compose` setup for Kafka and UI tools.\n* **📈 Actuator Monitoring** – Spring Boot Actuator enabled for health checks and system monitoring.\n* **♻️ DevTools Reloading** – Supports hot reloading via Spring DevTools for a smoother development experience.\n* **🧹 Clean Architecture Principles** – Follows a layered structure with clear separation between controllers, services, models, and mappers, making the codebase easier to maintain, test, and extend.\n* **🔐 Modular Dependency Setup** – Maven configuration using annotation processors and profile-based builds.\n* **📁 Static Dashboard** – `index.html` provides shortcuts to useful development tools and visual aids.\n\n\n### 📦 Technologies\n\n[![Spring Boot][springboot-shield]][springboot-url] [![Spring Data JPA][jpa-shield]][jpa-url] [![Spring Web][web-shield]][web-url] [![Spring Boot Test][test-shield]][test-url] [![Springdoc OpenAPI][springdoc-shield]][springdoc-url] [![Spring Actuator][actuator-shield]][actuator-url] [![Spring Cache][cache-shield]][cache-url] [![DevTools][devtools-shield]][devtools-url]\n\n[![Java][java-shield]][java-url] [![Maven][maven-shield]][maven-url] [![Kafka][kafka-shield]][kafka-url] [![Kafka UI][kafbat-shield]][kafbat-url] [![Docker][docker-shield]][docker-url] [![JUnit 5][junit5-shield]][junit5-url] [![Mockito][mockito-shield]][mockito-url] [![Swagger UI][swagger-shield]][swagger-url] [![H2 Database][h2-shield]][h2-url] [![Lombok][lombok-shield]][lombok-url] [![MapStruct][mapstruct-shield]][mapstruct-url] [![OpenCSV][opencsv-shield]][opencsv-url] [![OpenPDF][openpdf-shield]][openpdf-url] [![Coverage](https://img.shields.io/badge/Coverage-80%25-brightgreen?style=for-the-badge\u0026logo=jacoco)](https://ambrosiaandrade.github.io/pets/jacoco/index.html)\n\n### 💡 Getting Started\n\n##### Prerequisites\n\nYou should have the following installed in your machine:\n\n- Java 21+\n- Maven\n- Docker \u0026 Docker Compose\n\n##### Usage\n\nYou can run the project in two ways depending on your development workflow:\n\n---\n\n#### ✅ Option 1: Run Everything with Docker (Spring Boot, Kafka, Kafka UI)\n\nThis approach builds and runs the entire stack — including the Spring Boot app, Kafka, and the Kafka UI dashboard — using Docker Compose.\n\n```sh\ndocker-compose up --build\n```\n\nThis command will:\n\n* Build the Spring Boot application image (`app`)\n* Spin up Kafka and Kafka UI\n* Start everything connected in a shared Docker network\n\n📸 Example:\n![docker-compose-up](./images/docker-compose-up.png)\n\n---\n\n#### 🧪 Option 2: Run Spring Boot Separately (IDE + Docker for Kafka)\n\nThis is ideal for local development when you want to **debug or live-code the Spring Boot app in your IDE**, but still need Kafka running in containers.\n\n1. **Comment out the Spring Boot app (`app`) section in `docker-compose.yml`:**\n\n```yaml\n#  app:\n#    build: .\n#    container_name: pet-app\n#    ports:\n#      - \"8080:8080\"\n#    environment:\n#      - SPRING_KAFKA_BOOTSTRAP_SERVERS=kafka:9092\n#      - SPRING_PROFILES_ACTIVE=dev\n#    depends_on:\n#      - kafka\n#    networks:\n#      - kafka-net\n```\n\n2. **Set the active Spring profile to `dev`** in your `application.properties` (or use your IDE config):\n\n```properties\nspring.profiles.active=dev\n```\n\n3. **Start only Kafka-related services via Docker Compose:**\n\n```sh\ndocker-compose up --build\n```\n\n4. **Run the Spring Boot application from your IDE.**\n\nMake sure the profile is set to `dev` and Kafka is accessible via `localhost:9092` or the configured Docker network name (`kafka:9092`).\n\n\n✅ **Result:** You now have a hybrid setup — Kafka running in Docker, Spring Boot running natively. This gives you faster iteration, hot reload support, and full IDE debugging capabilities.\n\n### 🚀 Demo\n\nYou can check the [Pet Project here](https://pets-00xb.onrender.com/)\n\nThe `index.html` serves as a lightweight dashboard offering quick access to Swagger, H2 Console, Kafka UI, JaCoCo reports, and the GitHub repo.\n\n_Note1: Kafka UI is available only when running locally (i.e., using the dev Spring profile with Docker Compose). In production, Kafka is disabled._\n\n_Note2: JaCoCo is only available in production via GitHub Pages. Locally, it can be accessed at ``target/site/jacoco/index.html`` after running tests._\n\n![home-page](./images/home-page.png)\n\n### 🗂️ Folder Structure\n\nThe project follows a clean, modular organization based on MVC principles:\n\n```bash\nsrc/\n└── main/\n    ├── java/com/ambrosiaandrade/pets/\n    │   ├── config/         # Spring configuration classes\n    │   ├── controller/     # REST controllers (web layer)\n    │   ├── entities/       # JPA entities\n    │   ├── enums/          # Domain enumerations\n    │   ├── exceptions/     # Custom exception classes\n    │   ├── interfaces/     # Mapper and service interfaces\n    │   ├── listener/       # Event listeners\n    │   ├── models/         # DTOs and domain models\n    │   ├── repositories/   # Spring Data JPA interfaces\n    │   ├── service/        # Business logic layer\n    │   └── PetsApplication # Main Spring Boot application class\n    └── resources/\n        ├── static/         # Static assets (index.html, CSS, favicon)\n        ├── application.properties\n        ├── application-dev.properties\n        ├── application-prod.properties\n        └── data.sql        # Sample data initialization\n\n```\n\n### 🔗 Useful Links\n\n- [Swagger UI](http://localhost:8080/swagger-ui/index.html)\n    ![swagger-ui](./images/swagger-ui.png) \n\n    \u003cdetails\u003e\n\n    ![1-controller](./images/1-controller.png)\n    ![2-controller](./images/2-controller.png)\n    ![3-controller](./images/3-controller.png)\n    ![4-controller](./images/4-controller.png)\n    ![5-controller](./images/5-controller.png)\n\n    \u003c/details\u003e\n\n- [H2 Console](http://localhost:8080/h2-console/)\n  - URL: jdbc:h2:mem:testdb\n  - User name: sa\n  - Password: sa\n\n  ![h2-console](./images/h2-console.png) \n\n- [Kafka UI](http://localhost:8081)\n    ![kafbat-ui](./images/kafbat-ui.png)  \n\n### 🗂️ Sequences diagrams\n\nEditable .puml files can be found at `./docs` folder.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eAnimal Controller\u003c/b\u003e\u003c/summary\u003e\n\n  ![sequence-diagram-animal-controller](./docs/sequence-diagram-animal-controller.png)\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003ePagination Controller\u003c/b\u003e\u003c/summary\u003e\n\n  ![sequence-diagram-pagination-controller](./docs/sequence-diagram-pagination-controller.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eAsync Controller\u003c/b\u003e\u003c/summary\u003e\n\nThis controller serves as a demonstration of asynchronous processing in Java. It is intended for educational purposes and does not perform any real business logic.\n\n  ![sequence-diagram-async-controller](./docs/sequence-diagram-async-controller.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eExport Controller\u003c/b\u003e\u003c/summary\u003e\n\n  ![sequence-diagram-export-controller](./docs/sequence-diagram-export-controller.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eKafka Controller\u003c/b\u003e\u003c/summary\u003e\n\n![sequence-diagram-kafka-controller](./docs/sequence-diagram-kafka-controller.png)\n\n\u003c/details\u003e\n\n### 🧪 Testing\n\nThis project uses JUnit and Spring Boot Test for unit testing, along with Mockito for mocking dependencies.  \nCode coverage is enforced with JaCoCo (80% minimum threshold), and the report is generated under `target/site/jacoco/index.html` locally or `https://ambrosiaandrade.github.io/pets/jacoco/index.html` in production.\n\nTo run tests:\n```sh\nmvn test\n```\n\n### ⚙️ CI and CD\n\nThis project uses **GitHub Actions** for Continuous Integration and Continuous Deployment.  \nEvery push and pull request triggers the workflow to:\n\n- Build the project\n- Run all tests and enforce code coverage\n\nYou can find the workflow definition in [`.github/workflows/`](.github/workflows/) in this repository.\n\n![GitHub Actions Status](https://github.com/ambrosiaandrade/pets/actions/workflows/maven-tests.yml/badge.svg)\n\n### 🤝 Contributing\n\nContributions are welcome! If you'd like to help improve this project, feel free to fork it and submit a pull request.\n\n### 🐱‍👤 Author\n\n**Ambrósia Andrade** :brazil: \u003cbr/\u003e\n[![GitHub][github-shield]][github-url] [![LinkedIn][linkedin-shield]][linkedin-url] [![Gmail][gmail-shield]][gmail-url] [![Instagram][instagram-shield]][instagram-url]\n\n### 📝 License\n\nThis project is licensed under the **[MIT License](LICENSE)** — see the file for details.\n\n---\n\u003e Built with ❤️ using Spring Boot 3, MapStruct, Kafka, Docker, and CI/CD.  \n\u003e Ideal for learning, reference, or as a professional microservice template.\n\n[![GitHub Stars](https://img.shields.io/github/stars/ambrosiaandrade/pets?style=social)](https://github.com/ambrosiaandrade/pets/stargazers)\n[![Last Commit](https://img.shields.io/github/last-commit/ambrosiaandrade/pets?color=informational)](https://github.com/ambrosiaandrade/pets)\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\n[demo-url]: https://pets-00xb.onrender.com\n\n[springboot-shield]: https://img.shields.io/badge/Spring_Boot-6DB33F?style=for-the-badge\u0026logo=springboot\u0026logoColor=white\n[springboot-url]: https://spring.io/projects/spring-boot\n\n[java-shield]: https://img.shields.io/badge/Java-21-007396?style=for-the-badge\u0026logo=java\u0026logoColor=white\n[java-url]: https://www.oracle.com/java/\n\n[maven-shield]: https://img.shields.io/badge/Maven-C71A36?style=for-the-badge\u0026logo=apachemaven\u0026logoColor=white\n[maven-url]: https://maven.apache.org/\n\n[kafka-shield]: https://img.shields.io/badge/Apache_Kafka-231F20?style=for-the-badge\u0026logo=apachekafka\u0026logoColor=white\n[kafka-url]: https://kafka.apache.org/\n\n[kafbat-shield]: https://img.shields.io/badge/Kafbat_UI-4B286D?style=for-the-badge\u0026logo=apachekafka\u0026logoColor=white\n[kafbat-url]: https://github.com/kafbat/kafbat\n\n[docker-shield]: https://img.shields.io/badge/Docker-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white\n[docker-url]: https://www.docker.com/\n\n[junit5-shield]: https://img.shields.io/badge/JUnit_5-25A162?style=for-the-badge\u0026logo=junit5\u0026logoColor=white\n[junit5-url]: https://junit.org/junit5/\n\n[mockito-shield]: https://img.shields.io/badge/Mockito-4EA94B?style=for-the-badge\u0026logo=mockito\u0026logoColor=white\n[mockito-url]: https://site.mockito.org/\n\n[swagger-shield]: https://img.shields.io/badge/Swagger_UI-85EA2D?style=for-the-badge\u0026logo=swagger\u0026logoColor=black\n[swagger-url]: http://localhost:8080/swagger-ui/index.html\n\n[h2-shield]: https://img.shields.io/badge/H2-4479A1?style=for-the-badge\u0026logo=h2\u0026logoColor=white\n[h2-url]: https://www.h2database.com/\n\n[jpa-shield]: https://img.shields.io/badge/Spring%20Data%20JPA-6DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white\n[jpa-url]: https://spring.io/projects/spring-data-jpa\n\n[web-shield]: https://img.shields.io/badge/Spring%20Web-6DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white\n[web-url]: https://spring.io/projects/spring-boot\n\n[lombok-shield]: https://img.shields.io/badge/Lombok-18A303?style=for-the-badge\u0026logo=lombok\u0026logoColor=white\n[lombok-url]: https://projectlombok.org/\n\n[test-shield]: https://img.shields.io/badge/Spring%20Boot%20Test-6DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white\n[test-url]: https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing\n\n[mapstruct-shield]: https://img.shields.io/badge/MapStruct-6C3483?style=for-the-badge\u0026logo=mapbox\u0026logoColor=white\n[mapstruct-url]: https://mapstruct.org/\n\n[springdoc-shield]: https://img.shields.io/badge/Springdoc%20OpenAPI-49A942?style=for-the-badge\u0026logo=openapiinitiative\u0026logoColor=white\n[springdoc-url]: https://springdoc.org/\n\n[actuator-shield]: https://img.shields.io/badge/Spring%20Actuator-6DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white\n[actuator-url]: https://docs.spring.io/spring-boot/docs/current/actuator-api/htmlsingle/\n\n[cache-shield]: https://img.shields.io/badge/Spring%20Cache-6DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white\n[cache-url]: https://docs.spring.io/spring-boot/docs/current/reference/html/io.html#io.caching\n\n[devtools-shield]: https://img.shields.io/badge/DevTools-6DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white\n[devtools-url]: https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.devtools\n\n[opencsv-shield]: https://img.shields.io/badge/OpenCSV-4E97A3?style=for-the-badge\u0026logo=csv\u0026logoColor=white\n[opencsv-url]: http://opencsv.sourceforge.net/\n\n[openpdf-shield]: https://img.shields.io/badge/OpenPDF-3776AB?style=for-the-badge\u0026logo=adobeacrobatreader\u0026logoColor=white\n[openpdf-url]: https://github.com/LibrePDF/OpenPDF\n\n\u003c!-- Social media --\u003e\n\n[instagram-shield]: https://img.shields.io/badge/-Instagram-E4405F?style=for-the-badge\u0026logo=instagram\u0026logoColor=white\n[instagram-url]:https://www.instagram.com/ambrosia_andrade_br/\n\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=blue\n[linkedin-url]: https://linkedin.com/in/ambrosiaandrade\n\n[gmail-shield]: https://img.shields.io/badge/-Gmail-EA4335?style=for-the-badge\u0026logo=gmail\u0026logoColor=white\n[gmail-url]: mailto:ambrosiaandrade.pe@gmail.com\n\n[github-shield]: https://img.shields.io/badge/-GitHub-181717?style=for-the-badge\u0026logo=GitHub\u0026logoColor=white\n[github-url]: https://github.com/ambrosiaandrade\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fambrosiaandrade%2Fpets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fambrosiaandrade%2Fpets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fambrosiaandrade%2Fpets/lists"}