An ASP.NET core web application designed for a small business that runs a dance school.
It is an admin web portal for the business owner to view a dashboard and conduct CRUD operations.
The users roles include the dance school owner (admin), instructors and students.
The portals for instructors and registered students are coming soon.
- API Documentation (Swagger)
- Demo
- Feature Highlights
- Maintainability
- Security
- Scalability
- Tech Stack
- Design Patterns
- How to run the program locally
- An interactive admin dashboard with visualisations for data analytics
- Display data such as class information, instructors and memberships
- Allow the admin user full access on CURD operations.
- Allow the student role to view public data such as courses, membrships
- Allow the student role to book dance classes and subscribe to memberships
Technology | Description |
---|---|
Entity Framework Core | Code-first object relational mapping for Code-first object relational mapping |
Swagger API Documentation | Documented the API and multiple error response codes |
OOP and DI | Abstracted duplicated codes into middlewares |
React.js Hooks | Seperate reusable view components from hooks to ensure testability |
SASS | Moduarlized and extendable style sheets management for for efficient UI styling update |
Technology | Description |
---|---|
Firebase Auth | Authentication and role-based authorization implemented with middlewares to filter unauthenticated requests |
Error handlings and Validations | Customised error response codes for business logics and fast client-side Formik validations |
SQL Stored Procedures | Prevent SQL injection |
Structured Logging | Serilog captures errors to enhance auditing and debugging |
Technology | Description |
---|---|
CQRS and Mediatr | Decouple the business logics from data access logics to meet business requirements flexiblely |
In-memory Caching | The Redis Database is utilised to boost query performance |
Pagination and Lazy loading | Fasten the loading time even with a huge amount of data |
Complex front end state management | Keep small local states to minimise rerendering in React.js |
Advanced SQL | Restrict necessary data fields returned from the server. Map "1-to-many" relationships. Minimise database oprations with batch queries. |
Deployment | Azure SQL and Azure service app |
CI/CD | Github Actions |
Front End: React.js, Redux Thunk, SASS, Material-UI, Formik, Firebase Authentication
Back End: ASP.NET Core 5.0, Entity Framework Core, SQL Server, Linq, Redis, Firebase Authentication, Azure Deployment
Back End: ASP.NET Core 5.0, Entity Framework Core, SQL Server, Linq, Redis, Firebase Authentication, Azure Deployment, Serilog
- The Clean Architecture
- Asp.Net MVC
- CQRS
- Mediatr
- React Higher Order Components
- Redux
- Progressive Web Application with Redis Cache
Double click the danceschool.sln
to open Visual Studio
Open the terminal,
Change directory to the project root folder.
Then run the following.
cd danceschool
dotnet restore
cd Client
npm install
npm start
cd ..
dotnet run
.
Then open http://localhost:3000 to view it in the browser.
To view the Swagger API documentation,
Open https://localhost:5001/swagger/index.html