A simple and educational task management application built with Clean Architecture principles.
This project is a simplified task registration system designed as a learning platform for web development best practices. It demonstrates a full-stack implementation with a clean separation of concerns and modern development patterns.
- User authentication and registration
- Task creation, editing, and deletion
- User profile management
- Responsive design
- RESTful API architecture
The project follows Clean Architecture principles with a clear separation between layers:
- Todo.API: RESTful API endpoints and controllers
- Todo.Application: Application services, DTOs, and business logic orchestration
- Todo.Domain: Domain entities, business rules, and interfaces
- Todo.Infrastructure.Persistence: Data access layer with Entity Framework Core
- Todo.Infrastructure.IoC: Dependency injection configuration
- Todo.WebClient: Web interface built with HTML, Bootstrap CSS, and Vanilla JavaScript
- Minimal use of external libraries
- Responsive design
- Client-side validation
- Todo.UnitTests: Unit tests for business logic
- Todo.IntegrationTests: Integration tests
- Todo.FunctionalTests: End-to-end functional tests
Backend:
- C# / .NET 8
- Entity Framework Core
- SQL Server
- RESTful API
Frontend:
- HTML5
- CSS3 / Bootstrap
- Vanilla JavaScript
Testing:
- xUnit / NUnit
- Integration and Unit Testing frameworks
- .NET 8 SDK
- SQL Server (LocalDB, Express, or Full Edition)
- Visual Studio 2022+ or Visual Studio Code
- Git
-
Clone the repository
git clone https://github.com/mchomem/Todo.git cd Todo -
Configure the database connection
Update the connection string in
Todo.API/appsettings.json:"ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=TodoDb;Trusted_Connection=True;" }
-
Create the database
Open the Package Manager Console in Visual Studio and run:
add-migration DbInit -Context TodoContext -Project Todo.Infrastructure.Persistence -StartupProject Todo.API update-database -Context TodoContext -Project Todo.Infrastructure.Persistence -StartupProject Todo.API
-
Run the application
Set
Todo.APIandTodo.WebClientas startup projects (for multiple projects) or run them separately:- Start the API: Navigate to
Todo.APIand rundotnet run - Start the Web Client: Navigate to
Todo.WebClientand rundotnet run
- Start the API: Navigate to
- Access the web application at
https://localhost:[port] - Create a new account or login with existing credentials
- Start managing your tasks!
add-migration [MigrationName] -Context TodoContext -Project Todo.Infrastructure.Persistence -StartupProject Todo.APIupdate-database -Context TodoContext -Project Todo.Infrastructure.Persistence -StartupProject Todo.APIremove-migration -Context TodoContext -Project Todo.Infrastructure.Persistencedotnet testOr run specific test projects:
dotnet test Todo.UnitTests
dotnet test Todo.IntegrationTests
dotnet test Todo.FunctionalTestsThis is an educational project, but contributions are welcome! Feel free to:
- Fork the project
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available for educational purposes.
mchomem
- GitHub: @mchomem
This project demonstrates:
- Clean Architecture implementation in .NET
- RESTful API design
- Entity Framework Core with Code-First approach
- Repository and Unit of Work patterns
- Dependency Injection
- Frontend-Backend separation
- Authentication and Authorization
- Automated testing (Unit, Integration, and Functional)
This project is actively maintained for educational purposes and continuous learning.
⭐ If this project helped you learn something new, consider giving it a star!


