{"id":49573576,"url":"https://github.com/pitercoding/cars-management","last_synced_at":"2026-05-03T15:39:11.172Z","repository":{"id":327792043,"uuid":"1110814742","full_name":"pitercoding/cars-management","owner":"pitercoding","description":"[PT-BR] Cars Management é um sistema full-stack para gerenciar carros, marcas e acessórios com CRUD e autenticação JWT. [EN] Cars Management is a full-stack system to manage cars, brands, and accessories with CRUD and JWT authentication.","archived":false,"fork":false,"pushed_at":"2026-02-07T12:45:03.000Z","size":3001,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-03T15:39:08.685Z","etag":null,"topics":["aiven","angular","aws","cars-management","crud-application","deployment","fullstack-development","integration","jwt-authentication","mysql","render","springboot","ux-ui","validation","vercel"],"latest_commit_sha":null,"homepage":"https://cars-management-drab.vercel.app","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/pitercoding.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-05T19:04:14.000Z","updated_at":"2026-02-07T15:27:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pitercoding/cars-management","commit_stats":null,"previous_names":["pitercoding/cars-management"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pitercoding/cars-management","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitercoding%2Fcars-management","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitercoding%2Fcars-management/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitercoding%2Fcars-management/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitercoding%2Fcars-management/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pitercoding","download_url":"https://codeload.github.com/pitercoding/cars-management/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitercoding%2Fcars-management/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32575114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: 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":["aiven","angular","aws","cars-management","crud-application","deployment","fullstack-development","integration","jwt-authentication","mysql","render","springboot","ux-ui","validation","vercel"],"created_at":"2026-05-03T15:39:10.499Z","updated_at":"2026-05-03T15:39:11.164Z","avatar_url":"https://github.com/pitercoding.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\r\n  \u003cimg src=\"frontend/src/assets/images/logo-light.png\" alt=\"Logo Cars Management\" width=\"40\" style=\"vertical-align: middle; margin-right: 10px;\"\u003e\n  Cars Management\r\n\u003c/h1\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n  🌎 \u003cstrong\u003eLanguages:\u003c/strong\u003e\u003cbr\u003e\r\n  \u003ca href=\"README.pt.md\"\u003e🇧🇷 Portuguese\u003c/a\u003e |\r\n  \u003ca href=\"README.md\"\u003e🇺🇸 English\u003c/a\u003e\r\n\u003c/p\u003e\r\n\r\n**Cars Management** is a full-stack application designed to manage car sales, brands, accessories, and owners. Users can perform CRUD operations on cars, brands, owners, and accessories, with secure authentication and role-based permissions for admins.  \r\n\r\nThe application also includes **robust validation**, **centralized error handling**, and dynamic **frontend-backend integration**.\r\n\r\n## 🚀 How to Access the Project\n\nThe production stack is hosted across:\n\n- **Backend:** Render (https://cars-management-co0d.onrender.com) (hibernates on free tier)\n- **Frontend:** Vercel (https://cars-management-drab.vercel.app)\n- **Database:** Aiven MySQL (free tier)\n- **Deployment practice:** Initially deployed on AWS for learning, but the final production setup uses Render + Vercel + Aiven to avoid costs.\n\r\n### Steps to run locally\r\n\r\n1. Clone the repository:  \r\n```bash\r\ngit clone https://github.com/pitercoding/cars-management.git\r\ncd cars-management\r\n```\r\n2. Backend:  \r\n```bash\r\ncd backend\r\n./mvnw spring-boot:run\r\n```\r\n3. Frontend:  \r\n```bash\r\ncd frontend\r\nnpm install\r\nng serve\r\n```\r\n## 🏆 Motivation\r\nAs a Computer Science student, this project was created to **practice full-stack development** by building a realistic management system.\r\n\r\nIt allowed me to apply concepts in **Spring Boot, Angular, REST APIs, authentication, database modeling, frontend UI/UX, and cloud deployment**.\r\n\r\n## 📚 Learning Points\r\n\r\nDuring development, I strengthened skills in:\r\n\r\n- **Frontend:** Angular, TypeScript, SCSS, MDB Angular UI Kit, routing, HTTP interceptors.\r\n- **Backend:** Spring Boot, Spring Security, JWT authentication, centralized exception handling.\r\n- **Database:** MySQL, repository design, relationships.\r\n- **Deployment \u0026 Cloud:** Experience deploying to AWS, then using Render (backend), Vercel (frontend), and Aiven (MySQL) for the final free-tier setup.\n- **Testing \u0026 Validation:** Unit tests, code coverage with JaCoCo, frontend form validations.\r\n\r\n---\r\n\r\n## 🧱 Application Structure\r\n\r\n| Layer       | Technology          | Main Function                                                      |\r\n|------------|-------------------|-------------------------------------------------------------------|\r\n| Frontend   | Angular + TypeScript | UI for managing cars, brands, owners, accessories with forms and lists |\r\n| Backend    | Spring Boot        | REST API with logging, authentication, validation, and exception handling |\r\n| Database   | SQL      | Stores cars, owners, brands, accessories                           |\r\n| Auth       | JWT + Spring Security | Secure login, admin role management, password change            |\r\n| Deployment | Render / Vercel / Aiven | Cloud deployment and hosting                                    |\n\r\n---\r\n\r\n## ⚙️ Technologies \u0026 Tools\r\n\r\n### Frontend (Angular)\r\n- Angular 15+  \r\n- MDB Angular UI Kit  \r\n- SCSS / CSS3  \r\n- HTTP Client / Interceptor  \r\n- Routing \u0026 Guards  \r\n- Components for Cars, Owners, Brands, Accessories  \r\n\r\n### Backend (Spring Boot)\r\n- Spring Boot 3+  \r\n- Spring Security + JWT  \r\n- REST APIs (Cars, Brands, Owners, Accessories)  \r\n- Centralized exception handling  \r\n- Validation and logging  \r\n- Repositories and Service layers with business rules  \r\n\r\n### Database\r\n- MySQL  \r\n- Entity relationships: Many-to-Many (Cars ↔ Accessories), One-to-Many (Owner ↔ Cars, Brand ↔ Cars)  \r\n\r\n### Deployment\n- Backend deployed on Render  \n- Frontend deployed on Vercel  \n- Database hosted on Aiven MySQL (free tier)  \n- Initial deployment practice on AWS (later replaced to avoid costs)\n\r\n---\r\n\r\n## 🖼️ Screenshots \u0026 Visuals\r\n\r\n### Cars List\r\n![Cars List](frontend/src/assets/screenshots/cars-list.png)\r\n\r\n### Car Details Modal\r\n![Car Details](frontend/src/assets/screenshots/cars-details.png)\r\n\r\n### Brands \u0026 Accessories Management\r\n![Brands Management](frontend/src/assets/screenshots/brands-list.png)  \r\n![Accessories Management](frontend/src/assets/screenshots/accessories-list.png)\r\n\r\n### Authentication \u0026 User Management\r\n![Login Page](frontend/src/assets/screenshots/login.png)  \r\n![User Management](frontend/src/assets/screenshots/users-list.png)\r\n\r\n---\r\n\r\n## 🧭 Application Flow\r\n\r\n```text\r\nUser → Frontend (Angular)\r\n↓\r\nREST API (Spring Boot, JWT, Validation, Logs)\r\n↓\r\nDatabase (SQL)\r\n↑\r\n(Backend processes requests and returns results)\r\n```\r\n\r\n## ✅ Current Status\r\n\r\n| Area           | Status        | Description                                           |\r\n|----------------|---------------|------------------------------------------------------|\r\n| Backend        | ✅ Completed  | CRUD, validation, auth, exception handling          |\r\n| Frontend       | ✅ Completed  | Full management UI for cars, brands, owners, accessories |\r\n| Integration    | ✅ Tested     | Frontend ↔ Backend communication via HTTP           |\r\n| Database       | ✅ Operational| Connected and synchronized                           |\r\n| Authentication | ✅ Implemented| JWT + Role-based UI + Password change               |\r\n| Deployment     | ✅ Done       | Backend → Render, Frontend → Vercel, Database → Aiven, AWS deployment experience |\n\r\n## 📂 Folder Structure\r\n```bash\r\ncars-management/\r\n├─ backend/\r\n│  ├─ src/main/java/com/cars/backend/\r\n│  │  ├─ auth/                  # Authentication module (login, users, DTOs)\r\n│  │  ├─ config/                # Security, CORS, JWT filters\r\n│  │  ├─ controller/            # REST controllers\r\n│  │  ├─ dto/                   # Data Transfer Objects\r\n│  │  ├─ entity/                # JPA Entities\r\n│  │  ├─ exception/             # Custom exceptions and handlers\r\n│  │  ├─ repository/            # Spring Data JPA repositories\r\n│  │  ├─ service/               # Business logic services\r\n│  │  └─ BackendApplication.java\r\n├─ frontend/\r\n│  ├─ src/app/\r\n│  │  ├─ auth/                  # Authentication components \u0026 services\r\n│  │  ├─ components/            # CRUD components (cars, brands, owners, accessories)\r\n│  │  ├─ models/                # TypeScript models\r\n│  │  ├─ services/              # HTTP services\r\n│  │  ├─ app.routes.ts          # Routing configuration\r\n│  │  └─ app.ts/html/scss       # Main app files\r\n│  ├─ assets/images/            # Logo and other static files\r\n│  └─ environments/             # Environment configs (dev/prod)\r\n├─ .gitignore\r\n├─ README.md\r\n└─ LICENSE\r\n```\r\n\r\n## 📜 License\r\n\r\nThis project is licensed under the **MIT License** — feel free to use, study, and modify it.\r\n\r\n## 🧑‍💻 Author\r\n\r\n**Piter Gomes** — Computer Science Student (5th Semester) \u0026 Full-Stack Developer\r\n\r\n📧 [Email](mailto:piterg.bio@gmail.com) | 💼 [LinkedIn](https://www.linkedin.com/in/piter-gomes-4a39281a1/) | 💻 [GitHub](https://github.com/pitercoding) | 🌐 [Portfolio](https://portfolio-pitergomes.vercel.app/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpitercoding%2Fcars-management","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpitercoding%2Fcars-management","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpitercoding%2Fcars-management/lists"}