Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/khachatur/cleanarchitectureapp
CleanArchitectureApp is a modern, enterprise-level application built with ASP.NET Core, Entity Framework Core, React, and Tailwind CSS. It follows clean architecture principles to ensure separation of concerns and maintainability. The application is integrated with Microsoft Azure for deployment and utilizes Recoil for state management in the front
https://github.com/khachatur/cleanarchitectureapp
aspnetcore azure backend ci-cd ci-cd-pipeline clean-architecture entity-framework-core frontend react recoil state-management tailwindcss webapi
Last synced: about 1 month ago
JSON representation
CleanArchitectureApp is a modern, enterprise-level application built with ASP.NET Core, Entity Framework Core, React, and Tailwind CSS. It follows clean architecture principles to ensure separation of concerns and maintainability. The application is integrated with Microsoft Azure for deployment and utilizes Recoil for state management in the front
- Host: GitHub
- URL: https://github.com/khachatur/cleanarchitectureapp
- Owner: khachatur
- Created: 2024-06-13T00:02:22.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-06-13T00:25:32.000Z (6 months ago)
- Last Synced: 2024-06-14T05:00:04.873Z (6 months ago)
- Topics: aspnetcore, azure, backend, ci-cd, ci-cd-pipeline, clean-architecture, entity-framework-core, frontend, react, recoil, state-management, tailwindcss, webapi
- Language: TypeScript
- Homepage:
- Size: 198 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CleanArchitectureApp
## Overview
CleanArchitectureApp is a modern, enterprise, test-covered, clean architecture application built with:
- ASP.NET Core
- Entity Framework Core
- Microsoft Azure (App Services and Azure SQL)
- React with Recoil
- Tailwind CSS## Architecture
The project follows the Clean Architecture principles to ensure separation of concerns and maintainability.
## Projects Structure
- **Application**: Contains the business logic, DTOs, service interfaces, AutoMapper profiles, and validation.
- **Core**: Contains the core entities and repository interfaces.
- **Infrastructure**: Contains the data access logic, dependency injection configurations, and infrastructure-specific services.
- **Presentation**: Contains the **REST API** and web front-end in **React**.
- **Tests**: Contains unit and integration tests.## Getting Started
### Prerequisites
- .NET 8.0 SDK
- Node.js and npm
- Azure account (for deployment)### Running the API
1. Navigate to the API project:
```bash
cd src/Presentation/API
```
2. Run the project:
```bash
dotnet run
```### Running the Frontend
1. Navigate to the front-end project:
```bash
cd src/Presentation/Web
```
2. Install dependencies:
```bash
npm install
```
3. Run the project:
```bash
npm start
```### Running Tests
1. Navigate to the tests directory:
```bash
cd tests
```
2. Run unit tests:
```bash
dotnet test UnitTests/UnitTests.csproj
```
3. Run integration tests:
```bash
dotnet test IntegrationTests/IntegrationTests.csproj
```## Deployment
Follow the steps to deploy the application to Azure App Services and Azure SQL.
1. Azure App Services:
* Deploy the ASP.NET Core backend.
* Continuous deployment using GitHub Actions.
2. Azure SQL Database:
* Provision and configure the database.
* Migrate database schema using Entity Framework migrations.## CI/CD Pipeline
Use GitHub Actions for CI/CD.
Example workflow:```bash
name: CI/CD Pipelineon: [push]
jobs:
build:
runs-on: ubuntu-lateststeps:
- uses: actions/checkout@v2
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: '5.0.x'
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore
- name: Run tests
run: dotnet test --no-build --verbosity normal
- name: Publish
run: dotnet publish -c Release -o out
- name: Deploy to Azure Web App
uses: azure/webapps-deploy@v2
with:
app-name: 'YOUR_APP_NAME'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: './out'
```## Contributing
1. Fork the repository
2. Create a feature branch
3. Commit your changes
4. Push your branch
5. Create a pull request