Requirements:
- .NET 6
- Docker and Docker Compose
For now, you can use the docker-compose file to run the application. There is a script to run it correctly.
In the root folder, run:
./scripts/create-settings.sh # makes a copy of example config files to development config files
./scripts/compose-up.dev.sh # runs compose containers
The APIs are not running on docker now, so I'll need to run them manually with the dotnet run
command. As the applications grow and I develop the main clients for them, I'll be adding them to the compose file so they can all be run at once.
Broooms is based on a microservices architecture. The main services are:
Name | Description | Tech stack |
---|---|---|
Broooms.Catalog | Manages products and categories | .NET 6 WebAPI, EFCore, PostgreSQL |
Broooms.Cart | Manages user carts | .NET 6 MinimalAPI, Redis |
Broooms.Discount | Manages discount coupons | .NET 6 GRPC Service, MongoDB |
Broooms.Orders | Manages user orders | .NET 6 WebAPI, EFCore, PostgreSQL |
Broooms.Notifications | Sends emails and real-time notifications | .NET 6 SignalR Server, Dapper, PostgreSQL |
Broooms.Reports | Generates reports | Python, FastAPI, Pandas |
Broooms.Auth | Manages user accounts and auth | .NET 6 WebAPI, EFCore, SQL Server |
Broooms.Admin.Web | Admin UI | ReactJs, NextJs, Tailwind |
Broooms.Shop.Web | Shop UI | .NET 6 Razor WebApp, Tailwind |
Broooms.Aggregator | Gateway/BFF for all services | .NET 6 GraphQL API, Redis |
Some architecture/app design/data flow/event diagrams will be added with time.
- Search broooms by keyword and category with pagination
- Show a brooom by id
- Create a new broom
- Update a broom
- Delete a broom
- Add a product image and upload it to a storage service
- List all categories
- Show a category by id
- Create a new category
- Update a category
- Delete a category
- Add a category to a product
- Remove a category from a product
- Show user cart
- Update a product quantity in cart
- Clear cart
- Add coupon code
- Remove coupon code
- Checkout
- List all coupons
- Show a coupon by code
- Create a new coupon
- Disable a coupon
- Reenable a coupon
- Register customer
- Register admin
- Confirm email
- Login + Access token
- Refresh token
- Claim based authentication
- Logout
- Get user info
- Update user info
- Change password
- Disable user
- Reenable user
Features description soon
Features description soon
Features description soon
Features description soon
Features description soon
This project is licensed under the terms of the MIT license.