Introduction to the Clean Architecture Project
The Clean Architecture project is a straightforward and easy-to-navigate solution aimed at creating and managing reminders. Developed using the principles of clean architecture, this project offers a robust framework that developers can use as a base for building organized and scalable applications.
Overview π
At its core, the Clean Architecture project is a reminder application designed to help users organize themselves with scheduled notifications. The application is structured to allow users with active subscriptions to create reminders.
Subscriptions
The system offers two types of subscriptions to accommodate different user needs:
- Basic Subscription: Users can set up to 3 reminders per day.
- Pro Subscription: This removes the daily reminder limit, offering more flexibility for power users.
Features π€
The project boasts several key features related to managing subscriptions and reminders:
- Manage subscriptions (create, get, cancel).
- Manage reminders (set, get, delete, dismiss, list).
Getting Started π
To dive into the project, users have multiple options:
- YouTube Tutorial: A comprehensive video to get you started visually with the setup.
- Install the Template or Clone the Project: Use
.NET CLI
commands to install or clone via Git for simpler operations. - Run the Service: Options to use either Docker or .NET CLI simplify launching the service.
- Token Generation: Required for interaction with certain services; this step simulates an integration similar to external identity providers.
- Create Subscriptions and Reminders: Begin using the application by setting up subscriptions and reminders easily through HTTP requests.
Project Structure π
The folder structure is meticulously laid out, serving as a blueprint for clean architecture practices. It offers a clear division of concerns, enhancing both maintainability and scalability.
Authorization π
The project includes advanced authorization scenarios supporting:
- Role-Based: Restricts access to users with specific roles.
- Permission-Based: Grants access based on specific permissions.
- Policy-Based: Custom policies to assess more complex authorization logic.
Authorization can be mixed and matched to suit complex requirements, ensuring tight security.
Testing π
A comprehensive testing suite ensures the system's reliability with multiple layers:
- Domain Layer Tests: Manage business logic integrity.
- Application Layer Tests: Focus on application-specific rules.
- Integration Tests: Confirm proper system interaction.
Fun Features ππΊ
Domain Events & Eventual Consistency
The project uses domain events to ensure system consistency without sacrificing performance. Events trigger corresponding actions to keep the system in sync.
Email Reminder Service
A background service checks reminders and sends email notifications, enhancing user engagement. Configuration can be customized via setting files or user secrets.
Contribution π€²
This clean architecture project is open for contributions. Whether it's fixing bugs, adding new features, or improving tests, contributions are welcome to help evolve the project into a comprehensive solution for managing reminders.