{"id":30462531,"url":"https://github.com/rubensgomes/user-ms","last_synced_at":"2026-05-05T19:31:41.267Z","repository":{"id":308168148,"uuid":"1031076081","full_name":"rubensgomes/user-ms","owner":"rubensgomes","description":"A User Registration and Authentication Microservice (Code Generated by Claude Code) ","archived":false,"fork":false,"pushed_at":"2026-01-17T20:08:03.000Z","size":121,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-18T02:49:51.250Z","etag":null,"topics":["claude-code","gradle","java","spring-boot","spring-security"],"latest_commit_sha":null,"homepage":"https://github.com/rubensgomes","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/rubensgomes.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,"zenodo":null}},"created_at":"2025-08-03T00:36:09.000Z","updated_at":"2026-01-17T20:08:07.000Z","dependencies_parsed_at":"2025-08-04T17:28:56.097Z","dependency_job_id":"4794b939-0596-48b7-bbcd-09182547b47c","html_url":"https://github.com/rubensgomes/user-ms","commit_stats":null,"previous_names":["rubensgomes/user-ms"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rubensgomes/user-ms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubensgomes%2Fuser-ms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubensgomes%2Fuser-ms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubensgomes%2Fuser-ms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubensgomes%2Fuser-ms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rubensgomes","download_url":"https://codeload.github.com/rubensgomes/user-ms/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubensgomes%2Fuser-ms/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32664789,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["claude-code","gradle","java","spring-boot","spring-security"],"created_at":"2025-08-23T23:01:36.766Z","updated_at":"2026-05-05T19:31:41.262Z","avatar_url":"https://github.com/rubensgomes.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# User Microservice (user-ms)\n\nThis project is a cloud native microservice that provides RESTful APIs to manage\nthe registration of users, authentication and password management using JWT tokens.\nIt provides APIs to create the user account, confirm the registration of the \nuser account via email, change the user's account password, authenticate the \nuser (e.g., during sign in), and display the user account information.\n\n## AI General Disclaimer\n\nFor **AI-GENERATED CONTENT**, please refer to [DISCLAIMER](DISCLAIMER.md)\n\n## Branching Strategy\n\nThe project is using two branches:\n\n1. **_main_**: which is used as the Trunk-Based Development (TBD) with tagging\n   for new releases.\n2. **_release_**: which contains the most recently released code. That is, every\n   time a release is made, this branch is updated.\n\n## CICD Automation\n\nThe CI/CD build pipeline is using the GitHub Workflow Actions. The built\nartifact package is deployed to the following GitHub Package:\n\n- https://maven.pkg.github.com/rubensgomes/jvm-libs\n\n## Tech Stack\n\n- **Java 25** - Programming language\n- **Spring Boot 4.x** - Application framework\n- **Gradle 9.1.x** - Build tool\n- **MariaDB 11.8.x** - Production database\n- **H2 Database** - Development/testing database\n- **Spring Security** - Authentication and authorization\n- **Spring Data JPA** - Database access layer\n- **Lombok** - Boilerplate code reduction\n- **OpenAPI 3.1** - API documentation specification\n- **Swagger UI** - Interactive API documentation\n- **JUnit 5** - Unit testing framework\n- **Mockito** - Mocking framework for tests\n- **JWT** - Token-based authentication\n\n## Project Structure\n\n```\ncom.rubensgomes.userms/\n├── controller/     # REST controllers\n├── service/        # Business logic\n├── repository/     # Data access layer\n├── model/          # Entity classes\n├── dto/            # Data transfer objects\n└── security/       # Security configuration\n```\n\n## Database Schema\n\n### User Table\n\n| Field               | Type         | Description                    |\n|---------------------|--------------|--------------------------------|\n| email               | VARCHAR(100) | User email address             |\n| password            | VARCHAR(255) | Encrypted password             |\n| created_at          | TIMESTAMP    | User creation timestamp        |\n| password_changed_at | TIMESTAMP    | Last password change timestamp |\n\n## Quick Start\n\n### Prerequisites\n\n- Java 25\n- Gradle 9.1.x\n- MariaDB 11.8.x (for production)\n- H2 Database (included for development)\n\n### Setup\n\n#### Development Setup (Recommended)\n1. Clone the repository\n2. Start the application with H2 database: \n   ```bash\n   ./gradlew bootRun --args='--spring.profiles.active=dev'\n   ```\n3. Access H2 Console: http://localhost:8080/h2-console\n   - JDBC URL: `jdbc:h2:mem:userms`\n   - Username: `sa`\n   - Password: (leave empty)\n\n#### Production Setup\n1. Clone the repository\n2. Install and configure MariaDB 11.8.x\n3. Configure database connection in `application.yml`\n4. Run database migrations\n5. Start the application: `./gradlew bootRun`\n\n### Environment Configuration\n\n```yaml\n# application.yml\nspring:\n  datasource:\n    url: jdbc:mariadb://localhost:3306/userms\n    username: ${DB_USER:userms}\n    password: ${DB_PASSWORD:password}\n\njwt:\n  secret: ${JWT_SECRET:your-secret-key}\n  expiration: ${JWT_EXPIRATION:86400000}\n```\n\n## API Documentation\n\nComprehensive API documentation is available in [API.md](./API.md).\n\n### Quick Links\n\n- **Swagger UI**: http://localhost:8080/swagger-ui.html\n- **OpenAPI JSON**: http://localhost:8080/v3/api-docs\n- **OpenAPI YAML**: http://localhost:8080/v3/api-docs.yaml\n\n## Development\n\n### Development Commands\n\n```bash\n# Display Java version installed\n./gradlew -q javaToolchains\n```\n\n```bash\n# Lint and unit tests\n./gradlew check -i\n```\n\n```bash\n# Build the project\n./gradlew build\n```\n\n```bash\n# Only Rubens can release\n./gradlew release -i\n```\n\n```bash\n# Run application with H2 database (development)\n./gradlew bootRun --args='--spring.profiles.active=dev'\n```\n\n```bash\n# Run application with MariaDB (production)\n./gradlew bootRun\n```\n\n# Stop the running application\n# Press Ctrl+C (or Cmd+C on Mac) in the terminal where the application is running\n\n# Alternative: Kill the application process\nps aux | grep java | grep user-ms    # Find the process ID\nkill \u003cPID\u003e                           # Replace \u003cPID\u003e with actual process ID\n\n### Running with Docker\n\n```bash\ndocker-compose up -d\n```\n\n## Security\n\n- Passwords are encrypted using bcrypt\n- JWT tokens for stateless authentication\n- CORS configuration for cross-origin requests\n- Input validation and sanitization\n\n## Contributing\n\n1. Follow Java coding standards\n2. Write unit tests for new features\n3. Update API documentation\n4. Ensure all tests pass before submitting\n\n## License\n\nApache License 2.0","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubensgomes%2Fuser-ms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frubensgomes%2Fuser-ms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubensgomes%2Fuser-ms/lists"}