- Overview
- Running Locally
- License
TL;DR: Happy Storage is a POC application for educational purposes.
The core of the application was forked from GitHub/dlinkous
The user story is as a manager of a self-store business I want to be able to allow customers to reserve units on a month to month basis to store their junk stuff in.
- Customers can be added and deleted.
- Customers can occupy zero or many units
- Customers that have occupied a unit for a month incur a cost of the unit's monthly cost.
- Payments can be accepted from a customer and that amount is applied to their total owed amount.
- Units can be created and decommissioned.
- A user must be able to search for available units (not occupied by a customer) and filter that list by X criteria.
- Units can be reserved by a customer. Once the unit is occupied it is no longer available to be reserved.
- Units can be released from being occupied by a customer, and it is again available.
You get the idea..
The educational concept behind the core project is the 'Plugin', 'Hexagonal' or 'Onion' Architectures. Personally, I like onions because like onions, ogres have layers.
Added to the project are:
HappyStorage.Web
which is an ASP.NET Core Razor Pages applicationHappyStorage.BlazorWeb
which is an ASP.NET Core Server Side Blazor ApplicationHappyStorage.Common.Ui
is the shared code for both UI projects
If you want to run the Blazor Project locally, you will need:
- .NET Core SDK 3.0.0 Preview 7 -> Link
- Visual Studio 2019 Preview 1 or Visual Studio 2019 with "Use Preview Versions" enabled.
- Create an SQL Database; ex: "HappyStorage"
- Run the SQL script located in the
HappyStorage/SqlScripts/
folder to create the table required to persist units. - If not using
(localdb)\\MSSQLLocalDB
ensure you update the connection string in yourappsettings.Development.json
for both the*.Web
and*.BlazorWeb
project.
"ConnectionStrings": {
"SqlUnitStore": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=HappyStorage;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
}
MIT License