A way to manage books as a web application using Blazor WASM
A full-stack web application to manage books and their authors with clean architecture using C#/.Net Core, Blazor, Dapper & SQL, HTML, and CSS.
This application uses hexagonal/onion style architecture for separation of core functionality and modularity to use or try out different technologies as it grows in scope.
The key projects are contained within the Core, Infrastructure, and Api projects with the client within the UI directory.
The application was built using:
- ASP.Net Core 3.1
- Blazor WebAssembly (Client)
- SQL + Dapper for database transactions
- Bootstrap 4
The API project contains the following:
-
Swagger - Api/resource documentation testing from the Swashbuckler package for the client.
-
NLog - for logging request from the Api and any additional errors that are saved as text documents for review.
For database setup, it is recommended to use Sqlite for development and is currently an installed package with the application. Navigate to the Infrastructure project and find the ApiDbContext.cs class in the ..\Data directory and find the method that configures which database to use:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite(_config.GetConnectionString("sqlite"));
}Change the above optionsBuilder method to which ever database package you prefer, such as MySql with: .UseMySql(). Configure the connection to that database in the appsettings.Development.json file in the Api project, then pass it in the GetConnectionString extension.
PostgreSQL is also already setup for database configuration, change the optionsBuilder method to use .UseNpgsql() and setup the connection string in the application.Development.json file.
The Book Store does not yet contain login/logout, registration, and authentication, but will be needed once the project grows in scope to actually sell books online.
Paging is currently in the pipeline and should be implemented within the year (maybe...).