|
| 1 | +--- |
| 2 | +layout: home |
| 3 | +title: Home |
| 4 | +nav_order: 1 |
| 5 | +permalink: / |
| 6 | +--- |
| 7 | + |
| 8 | +# Clean Architecture Full-Stack Starter |
| 9 | +{: .fs-9 } |
| 10 | + |
| 11 | +A production-ready full-stack application with Angular 19, .NET 9, and PostgreSQL using Clean Architecture principles. |
| 12 | +{: .fs-6 .fw-300 } |
| 13 | + |
| 14 | +[Get Started](#-quick-start-in-60-seconds){: .btn .btn-primary .fs-5 .mb-4 .mb-md-0 .mr-2 } |
| 15 | +[View on GitHub](https://github.com/nitin27may/clean-architecture-docker-dotnet-angular){: .btn .fs-5 .mb-4 .mb-md-0 } |
| 16 | + |
| 17 | +--- |
| 18 | + |
| 19 | +<p align="center"> |
| 20 | + <img src="clean-architecture-demo.gif" alt="Application Demo" width="700"> |
| 21 | +</p> |
| 22 | + |
| 23 | +A modern, full-stack contact management system built with Angular 19, .NET 9, and PostgreSQL following Clean Architecture principles. This project demonstrates how to structure enterprise applications for maintainability, testability, and scalability while providing a complete development workflow with Docker containerization. |
| 24 | + |
| 25 | +## 🌟 What You'll Learn |
| 26 | + |
| 27 | +- **Clean Architecture** principles and implementation |
| 28 | +- **Angular 19** with signals, standalone components, and Material Design |
| 29 | +- **.NET 9** with dependency injection and repository pattern |
| 30 | +- **PostgreSQL** with Dapper for efficient data access |
| 31 | +- **JWT Authentication** with role-based permissions |
| 32 | +- **Docker** containerization for development and production |
| 33 | +- **NGINX** as a reverse proxy and API gateway |
| 34 | +- **CI/CD** with GitHub Actions |
| 35 | + |
| 36 | +## 🚀 Quick Start in 60 Seconds |
| 37 | + |
| 38 | +### Prerequisites |
| 39 | + |
| 40 | +- [Docker](https://www.docker.com/products/docker-desktop){:target="_blank"} and Docker Compose |
| 41 | +- [Git](https://git-scm.com/downloads){:target="_blank"} |
| 42 | + |
| 43 | +### Launch Commands |
| 44 | + |
| 45 | +Clone the repository: |
| 46 | +```bash |
| 47 | +git clone https://github.com/nitin27may/clean-architecture-docker-dotnet-angular.git clean-app |
| 48 | +cd clean-app |
| 49 | +``` |
| 50 | + |
| 51 | +Create environment file: |
| 52 | +```bash |
| 53 | +cp .env.example .env |
| 54 | +``` |
| 55 | + |
| 56 | +Start the application: |
| 57 | +```bash |
| 58 | +docker-compose up |
| 59 | +``` |
| 60 | + |
| 61 | +That's it! Visit [http://localhost](http://localhost) in your browser. |
| 62 | + |
| 63 | +## 👤 Default Users |
| 64 | + |
| 65 | +| Username | Password | Role | |
| 66 | +|----------|----------|------| |
| 67 | +| [email protected] | P@ ssword#321 | Admin | |
| 68 | +| [email protected] | P@ ssword#321 | Editor | |
| 69 | +| [email protected] | P@ ssword#321 | Reader | |
| 70 | + |
| 71 | +## 🏗️ System Architecture |
| 72 | + |
| 73 | +<p align="center"> |
| 74 | + <img src="architecture.png" alt="Architecture Diagram" width="700"> |
| 75 | +</p> |
| 76 | + |
| 77 | +### Container Architecture |
| 78 | + |
| 79 | +The application is structured into multiple containers that work together: |
| 80 | + |
| 81 | +- **Frontend Container**: Angular 19 with Material Design and TailwindCSS |
| 82 | +- **API Container**: .NET 9 RESTful API built with Clean Architecture |
| 83 | +- **Database Container**: PostgreSQL for data persistence |
| 84 | +- **NGINX Container**: Reverse proxy that routes requests to the appropriate service |
| 85 | + |
| 86 | +## 📐 Clean Architecture Explained |
| 87 | + |
| 88 | +<p align="center"> |
| 89 | + <img src="CleanArchitecture.png" alt="Clean Architecture Diagram" width="500"> |
| 90 | +</p> |
| 91 | + |
| 92 | +### Why Choose Clean Architecture? |
| 93 | + |
| 94 | +Clean Architecture provides **significant benefits** for your application: |
| 95 | + |
| 96 | +- ✅ **Maintainability**: Separate concerns to make your code easier to understand and modify |
| 97 | +- ✅ **Testability**: Independent components that can be tested in isolation |
| 98 | +- ✅ **Flexibility**: Swap frameworks or technologies without rewriting your core business logic |
| 99 | +- ✅ **Scalability**: Grow your application with a clear structure that new team members can quickly understand |
| 100 | + |
| 101 | +### Core Principles |
| 102 | + |
| 103 | +- **Separation of concerns**: Each layer has a specific responsibility |
| 104 | +- **Dependency rule**: Dependencies point inward, with inner circles having no knowledge of outer circles |
| 105 | +- **Abstraction**: Business rules are independent of UI, database, and external services |
| 106 | +- **Testability**: Core business logic can be tested without dependencies on external systems |
| 107 | + |
| 108 | +## 💻 Key Features |
| 109 | + |
| 110 | +### Modern Angular Frontend |
| 111 | + |
| 112 | +- **Signals-based state management** |
| 113 | +- **Material Design with TailwindCSS** for responsive UI |
| 114 | +- **Role-based routing and permissions** |
| 115 | +- **Dark/light theme support** |
| 116 | + |
| 117 | +### Secure .NET Backend |
| 118 | + |
| 119 | +- **Clean Architecture implementation** |
| 120 | +- **Generic Repository pattern** |
| 121 | +- **JWT authentication** |
| 122 | +- **Global exception handling** |
| 123 | + |
| 124 | +### Contact Management |
| 125 | + |
| 126 | +- **CRUD operations** for contacts |
| 127 | +- **Role-based access control** |
| 128 | +- **Search, sort, and filter functionality** |
| 129 | +- **Form validation** |
| 130 | + |
| 131 | +## 📚 Documentation |
| 132 | + |
| 133 | +For more detailed information, explore these documentation pages: |
| 134 | + |
| 135 | +- [Development Guide](development-guide.md) |
| 136 | +- [Clean Architecture Series](architecture-series.md) |
| 137 | +- [Frontend Documentation](frontend.md) |
| 138 | +- [Backend Documentation](backend.md) |
| 139 | +- [Feature List](features.md) |
| 140 | +- [Roadmap](roadmap.md) |
| 141 | +- [Visual Feature Guide](visual-feature-guide.md) |
| 142 | + |
| 143 | +## 🤝 Contributing |
| 144 | + |
| 145 | +We welcome contributions! Please check our [contributing guide](https://github.com/nitin27may/clean-architecture-docker-dotnet-angular/blob/main/CONTRIBUTING.md){:target="_blank"} for details on how to get involved. |
| 146 | + |
| 147 | +## 📄 License |
| 148 | + |
| 149 | +This project is licensed under the MIT License - see the [LICENSE](https://github.com/nitin27may/clean-architecture-docker-dotnet-angular/blob/main/LICENSE){:target="_blank"} file for details. |
0 commit comments