Merged into YourBrand.
Chat app based on the TodoApp project.
Here is a video. And another newer video showcasing "reactions".
This project was created as part of an assignment for a Job interview process. Coincidentally, I had been thinking of renovating my old "Messenger" project the days before receiving the assignment.
This assignment gave me a scope and some motivation.
Here are the main features of the app:
- View and create channels.
- Post messages in specific channels. Edit and delete them.
- Admin commands - sent in channel.
Other features:
- User registration - aka "Welcome screen".
- Light and Dark mode
- Localization - English and Swedish
For more details, read the design document.
- Incremental load of history
- Read receipt
The app consists of a Frontend built with Blazor WebAssembly, and a Backend with ASP.NET Core.
Major technical characteristics of the project are listed below.
- Clean Architecture (CA) in app project, with Vertical-slices architecture (VSA)
- Combining all layers into one project with focus on features.
- Using Domain-driven design (DDD) practices
- Event-driven architecture - Domain Events
-
ASP.NET Core
- Endpoints - "Minimal API" with versioning
- SignalR
- OpenAPI
-
Frontend/UI
- Blazor
- MudBlazor (component framework)
-
Azure SQL Server
-
IdentityServer for authentication - with seeded users Alice and Bob.
Unused but available technologies:
- RabbitMQ (for asynchronous messaging)
- MassTransit
- Redis (for distributed cache)
Other:
- Open Telemetry - with Zipkin
- Health checks
- Application logic tests
- Domain model test
- Integration tests - with Test host and Testcontainers
Project Tye is an experimental developer tool for .NET from Microsoft. It allows you to speed up development time by locally orchestrating your services, both projects and containers. Tye also helps with service discovery.
Install the Tye CLI tool. Make sure to have Docker Desktop installed.
To run the solution:
tye run
Dashboard: http://localhost:8000/
With Watch feature:
tye run --watch
TBA
docker-compose up
In order for the databases to be created and for the app to function, you need to seed the databases for the Web
and IdentityService
projects.
The services, in particular the databases, have to be running for this to work.
The seeding code target databases that have been defined in the appsettings.json
files in each project.
When in the Web project:
dotnet run -- --seed
When in the IdentityService project:
dotnet run -- /seed
These are the services:
- Frontend: https://localhost:5021/
- Backend: https://localhost:5001/
- Swagger UI: https://localhost:5001/swagger/
Here are the users available to login as, provided that you have seeded the database.
Username: alice
Password: alice
Username: bob
Password: bob
Hosted at: https://localhost:5001/swagger/