{"id":49573574,"url":"https://github.com/pitercoding/customer-manager-app","last_synced_at":"2026-05-03T15:39:09.807Z","repository":{"id":317598311,"uuid":"1068051806","full_name":"pitercoding/customer-manager-app","owner":"pitercoding","description":"[PT-BR] Gerencie clientes com um CRUD simples e moderno, formulários reativos, Angular, Spring Boot e PostgreSQL. [EN] Manage customers with a modern and simple CRUD, reactive forms, Angular, Spring Boot and PostgreSQL.","archived":false,"fork":false,"pushed_at":"2026-02-08T10:35:21.000Z","size":496,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-03T15:39:08.188Z","etag":null,"topics":["angular","backend","cors","crud","customer-management","frontend","full-stack","java","postgresql","reactive-forms","responsive-ui","rest-api","spring-boot","typescript","web-application"],"latest_commit_sha":null,"homepage":"https://customer-manager-app-three.vercel.app","language":"TypeScript","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.en.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-10-01T19:28:51.000Z","updated_at":"2026-02-08T10:35:24.000Z","dependencies_parsed_at":"2025-10-01T22:22:14.910Z","dependency_job_id":"57fdef36-517e-472f-acbd-71a3068d3e0f","html_url":"https://github.com/pitercoding/customer-manager-app","commit_stats":null,"previous_names":["pitercoding/crud-spring-angular-mysql","pitercoding/customer-manager-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pitercoding/customer-manager-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitercoding%2Fcustomer-manager-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitercoding%2Fcustomer-manager-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitercoding%2Fcustomer-manager-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitercoding%2Fcustomer-manager-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pitercoding","download_url":"https://codeload.github.com/pitercoding/customer-manager-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitercoding%2Fcustomer-manager-app/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":["angular","backend","cors","crud","customer-management","frontend","full-stack","java","postgresql","reactive-forms","responsive-ui","rest-api","spring-boot","typescript","web-application"],"created_at":"2026-05-03T15:39:09.167Z","updated_at":"2026-05-03T15:39:09.798Z","avatar_url":"https://github.com/pitercoding.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿\u003ch1 align=\"center\"\u003eCustomer Manager App (EN)\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eLanguages:\u003c/strong\u003e\u003cbr\u003e\n  \u003ca href=\"README.md\"\u003ePortuguês\u003c/a\u003e |\n  \u003ca href=\"README.en.md\"\u003eEnglish\u003c/a\u003e\n\u003c/p\u003e\n\nThe **Customer Manager App** is a **Full Stack** application to manage customers in a simple and modern way.\n\nManage customers with a modern CRUD, reactive forms, Angular, Spring Boot and PostgreSQL.\n\n---\n\n## **How to Run the Project**\n\n### **Environments**\n\n- **Local:** uses `application-local.properties` and local PostgreSQL.\n- **Production:** uses `application-prod.properties` and PostgreSQL on Render (env vars).\n\n### **Prerequisites**\n\n- Java 21\n- Node.js 18+\n- Angular CLI installed globally (`npm install -g @angular/cli`)\n- Running PostgreSQL instance\n\n### **1. Database Setup (Local)**\n\nCreate a database in PostgreSQL:\n\n```sql\nCREATE DATABASE localhost_customer_manager_app;\n```\n\nLocal credentials live in `backend/src/main/resources/application-local.properties`.\n\n### **2. Run Backend (Spring Boot)**\n\nFrom `/backend` directory:\n\n```bash\nSPRING_PROFILES_ACTIVE=local mvn spring-boot:run\n```\n\nWindows PowerShell:\n\n```powershell\n$env:SPRING_PROFILES_ACTIVE=\"local\"; mvn -q -DskipTests spring-boot:run\n```\n\nBackend will be available at: `http://localhost:8080/api/customers`\n\n### **3. Run Frontend (Angular)**\n\nFrom `/frontend` directory:\n\n```bash\nnpm install\nng serve\n```\n\nFrontend will be available at: `http://localhost:4200`\n\n### **Production (Render + Vercel)**\n\n- Backend: Render (Spring Boot + PostgreSQL)\n- Frontend: Vercel (Angular)\n- Render env vars: `DB_URL`, `DB_USER`, `DB_PASSWORD`, `SPRING_PROFILES_ACTIVE=prod`\n\n## **Project Features**\n\nThe **Customer Manager App** provides a complete CRUD with a modern and responsive UI.\n\n### **Main Features**\n\n- **Create Customer**  \n  Reactive form with validation and visual feedback.\n\n- **List Customers**  \n  Responsive table with action buttons (Update / Delete).\n\n- **Update Customer**  \n  Data editing using a pre-filled form by ID.\n\n- **Delete Customer**  \n  Instant deletion with automatic list refresh.\n\n- **Modern UI**  \n  - Warm Sand theme with light cards  \n  - Manrope typography  \n  - Buttons with hover and focus effects  \n  - Centered and responsive layout  \n\n- **Validation and friendly errors**  \n  - Frontend and backend validation  \n  - Clear field messages and friendly 400 errors  \n\n## **Screenshots**\n\n![Get all customers](docs/screenshots/get-all-customers.png)\n![Update customer](docs/screenshots/update-customer.png)\n![Add new customer](docs/screenshots/add-new-customer.png)\n\n## **Technical Learnings**\n\nThroughout this project, several best practices were applied:\n\n- Use of **standalone components** in Angular\n- **Reactive Forms** with validation and data patching\n- REST integration between **Angular and Spring Boot**\n- **CORS** configuration and dynamic routing\n- Modern styling and **responsive UX**\n\n## **Contributing**\n\nContributions are very welcome!\nTo contribute:\n\n1. Fork the repository\n2. Create a branch: `git checkout -b feature/new-feature`\n3. Commit your changes following **Conventional Commits**\n4. Open a Pull Request\n\n## **License**\n\nThis project is licensed under the **MIT** License.\n\n## Author\n\n**Piter Gomes** — Computer Science Student (5th Semester) \u0026 Full-Stack Developer\n\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%2Fcustomer-manager-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpitercoding%2Fcustomer-manager-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpitercoding%2Fcustomer-manager-app/lists"}