{"id":15013732,"url":"https://github.com/thercules/crud-api-users-quarkus","last_synced_at":"2026-02-19T06:30:52.081Z","repository":{"id":250342663,"uuid":"834125062","full_name":"Thercules/crud-api-users-quarkus","owner":"Thercules","description":"CRUD API built with SOLID principles using JDK 22, Quarkus 3.12.3, Maven 3.9.8, MySQL and Docker 4.32.0, as of now.","archived":false,"fork":false,"pushed_at":"2024-08-09T19:33:16.000Z","size":46822,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"v1.0","last_synced_at":"2025-05-24T11:38:52.870Z","etag":null,"topics":["docker","java","java22","mysql","quarkus"],"latest_commit_sha":null,"homepage":"","language":"Java","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/Thercules.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-07-26T13:22:38.000Z","updated_at":"2024-08-09T19:32:27.000Z","dependencies_parsed_at":"2024-10-14T04:01:05.429Z","dependency_job_id":null,"html_url":"https://github.com/Thercules/crud-api-users-quarkus","commit_stats":{"total_commits":4,"total_committers":1,"mean_commits":4.0,"dds":0.0,"last_synced_commit":"449cf29685ebe4394b4c20b628cf89f13909ad08"},"previous_names":["thercules/crud-api-users-quarkus"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Thercules/crud-api-users-quarkus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thercules%2Fcrud-api-users-quarkus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thercules%2Fcrud-api-users-quarkus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thercules%2Fcrud-api-users-quarkus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thercules%2Fcrud-api-users-quarkus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Thercules","download_url":"https://codeload.github.com/Thercules/crud-api-users-quarkus/tar.gz/refs/heads/v1.0","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thercules%2Fcrud-api-users-quarkus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279082348,"owners_count":26099390,"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-10-15T02:00:07.814Z","response_time":56,"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":["docker","java","java22","mysql","quarkus"],"created_at":"2024-09-24T19:44:43.671Z","updated_at":"2025-10-15T13:21:39.311Z","avatar_url":"https://github.com/Thercules.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# CRUD-Solicitação Serviços\n\nThis project uses Quarkus, the Supersonic Subatomic Java Framework.\n\n## Installation and Setup\n\n### Back-end\n\n#### IntelliJ Community Edition\n\n1. Download and install [IntelliJ Community Edition](https://www.jetbrains.com/idea/download/).\n2. Configure IntelliJ to use JDK 22 by going to **File \u003e Project Structure \u003e Project \u003e Project SDK** and adding JDK 22.\n![IntelliJ Screenshot](https://i.ibb.co/pjL8gPw/print-intellij.png)\n\n#### Maven\n\n1. Download Maven from the [official site](https://maven.apache.org/download.cgi).\n2. Extract the archive and set the `M2_HOME` environment variable to the extracted directory.\n3. Add `M2_HOME/bin` to your system `PATH`.\n\n#### JDK 22\n\n1. Download JDK 22 from the [official Oracle website](https://www.oracle.com/java/technologies/javase-jdk22-downloads.html) or use [OpenJDK](https://jdk.java.net/22).\n2. Set the `JAVA_HOME` environment variable to the JDK installation directory.\n3. Add `JAVA_HOME/bin` to your system `PATH`.\n\n#### MySQL\n\n1. Install MySQL following the instructions on [MySQL's official website](https://dev.mysql.com/doc/mysql-installation-excerpt/).\n2. Create a database for the application.\n3. Configure your `application.properties` file in Quarkus to connect to your MySQL instance.\n\n#### Docker\n\n1. Install Docker following the instructions on [Docker's official website](https://docs.docker.com/get-docker/).\n2. Use Docker to run MySQL and your application containers.\n![Docker Screenshot](https://i.ibb.co/3zqZV0L/print-docker.png)\n\n### Front-end\n\n#### Node.js\n\n1. Download and install the latest version of Node.js from the [official website](https://nodejs.org/).\n2. Verify the installation by running:\n   ```shell\n   node -v\n   npm -v\n   ```\n\n#### VSCode\n\n1. Download and install [Visual Studio Code](https://code.visualstudio.com/).\n2. Open your project in VSCode.\n\n#### Vue.js 2\n\n1. Install Vue CLI globally by running:\n   ```shell\n   npm install -g @vue/cli@4.5.15\n   ```\n2. Create a new Vue.js 2 project or navigate to your existing project directory and install dependencies:\n   ```shell\n   npm install\n   ```\n3. Configure your vue.config.js for the port you want and set up a proxy layer to the port where your API is running to avoid CORS issues:\n   ```shell\n   const { defineConfig } = require('@vue/cli-service')\n\n\tmodule.exports = defineConfig({\n\t  transpileDependencies: true,\n\t  devServer: {\n\t\tport: 8084,\n\t\tproxy: {\n\t\t  '/api': {\n\t\t\ttarget: 'http://localhost:8080', // Port where your API is running\n\t\t\tchangeOrigin: true,\n\t\t\tpathRewrite: { '^/api': '' },\n\t\t  },\n\t\t},\n\t  },\n\t}) \n   ```\n4. Run the Vue.js development server on port 8084:\n   ```shell\n   npm run serve \n   ```\n\n\u003e **_NOTE:_** Ensure your front-end runs on port 8084, while your API runs on port 8080 using Docker to avoid conflicts.\n\n## Project Overview\n\nThis project is a modern CRUD API built with SOLID principles using:\n- JDK 22\n- Quarkus 3.12.3\n- Maven 3.9.8\n- MySQL\n- Docker 4.32.0\n\nIt includes endpoints for managing services, users, and service requests.\n\n## Running the Application\n\n### Development Mode\n\nTo run the application in development mode with live coding enabled:\n\n```shell\n./mvnw compile quarkus:dev\n```\n\n\u003e **_NOTE:_** Quarkus now ships with a Dev UI, which is available in dev mode only at [http://localhost:8080/q/dev/](http://localhost:8080/q/dev/).\n\n### Packaging and Running the Application\n\nTo package the application:\n\n```shell\n./mvnw package\n```\n\nThis produces the `quarkus-run.jar` file in the `target/quarkus-app/` directory. It’s not an _über-jar_ as the dependencies are copied into the `target/quarkus-app/lib/` directory. You can run the application using:\n\n```shell\njava -jar target/quarkus-app/quarkus-run.jar\n```\n\nTo build an _über-jar_:\n\n```shell\n./mvnw package -Dquarkus.package.jar.type=uber-jar\n```\n\nRun the _über-jar_ with:\n\n```shell\njava -jar target/*-runner.jar\n```\n\n### Creating a Native Executable\n\nTo create a native executable:\n\n```shell\n./mvnw package -Dnative\n```\n\nOr, if you don't have GraalVM installed, use a container for the native build:\n\n```shell\n./mvnw package -Dnative -Dquarkus.native.container-build=true\n```\n\nRun your native executable with:\n\n```shell\n./target/thiago-code-1.0.0-SNAPSHOT-runner\n```\n\nFor more information on native executables, consult [Quarkus Native Guide](https://quarkus.io/guides/maven-tooling).\n\n## API Endpoints\n\n### Services\n\n- **GET /servicos**  \n  Retrieve all services.\n![VSCode Screenshot](https://i.ibb.co/4P11k88/print-vscode.png)\n\n- **GET /servicos/{id}**  \n  Retrieve a specific service by ID.\n\n- **POST /servicos**  \n  Create a new service.  \n  **Request Body Example:**\n  ```json\n  {\n    \"id\": 1,\n    \"name\": \"Service Name\",\n    \"description\": \"Service Description\"\n  }\n  ```\n\n- **PUT /servicos**  \n  Update an existing service.  \n  **Request Body Example:**\n  ```json\n  {\n    \"id\": 1,\n    \"name\": \"Updated Service Name\",\n    \"description\": \"Updated Description\"\n  }\n  ```\n\n- **DELETE /servicos/{id}**  \n  Delete a service by ID.\n\n### Users\n\n- **GET /users**  \n  Retrieve all users.\n\n- **GET /users/{id}**  \n  Retrieve a specific user by ID.\n\n- **POST /users**  \n  Create a new user.  \n  **Request Body Example:**\n  ```json\n  {\n    \"id\": 1,\n    \"name\": \"User Name\",\n    \"cpf\": \"12345678901\"\n  }\n  ```\n\n- **PUT /users**  \n  Update an existing user.  \n  **Request Body Example:**\n  ```json\n  {\n    \"id\": 1,\n    \"name\": \"Updated User Name\",\n    \"cpf\": \"09876543210\"\n  }\n  ```\n\n- **DELETE /users/{id}**  \n  Delete a user by ID.\n\n### Service Requests\n\n- **POST /solicitacoesServicos**  \n  Create a new service request.  \n  **Request Body Example:**\n  ```json\n  {\n    \"userId\": 1,\n    \"servicoId\": 2,\n    \"status\": \"PENDING\"\n  }\n  ```\n\n- **GET /solicitacoesServicos**  \n  Retrieve all service requests.\n\n- **GET /solicitacoesServicos/{id}**  \n  Retrieve a specific service request by ID.\n\n- **PUT /solicitacoesServicos/{id}**  \n  Update the status of a service request.  \n  **Request Body Example:**\n  ```json\n  {\n    \"status\": \"COMPLETED\"\n  }\n  ```\n\n- **DELETE /solicitacoesServicos/{id}**  \n  Delete a service request by ID.\n![Insomnia Screenshot](https://i.ibb.co/RH1rmP9/print-insomnia.png)\n\n## Related Guides\n\n- [REST Data with Panache](https://quarkus.io/guides/rest-data-panache): Generate Jakarta REST resources for your Hibernate Panache entities and repositories.\n- [RESTEasy Classic's REST Client JSON-B](https://quarkus.io/guides/resteasy-client): JSON-B serialization support for the REST client.\n- [RESTEasy Classic](https://quarkus.io/guides/resteasy): REST endpoint framework implementing Jakarta REST and more.\n- [JDBC Driver - MySQL](https://quarkus.io/guides/datasource): Connect to the MySQL database via JDBC.\n- [Security JPA](https://quarkus.io/guides/security-getting-started): Secure your applications with username/password stored in a database via Jakarta Persistence.\n\n## Frontend Preview\n\n![Frontend Preview](https://i.ibb.co/YQgtK2X/print-front.jpg)\n\n## Author\n\nThiago-Hercules\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthercules%2Fcrud-api-users-quarkus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthercules%2Fcrud-api-users-quarkus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthercules%2Fcrud-api-users-quarkus/lists"}