Skip to content

An ASP.NET Core web application designed for a small business that runs a dance school.

Notifications You must be signed in to change notification settings

Zoe-0925/dance-school

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dance School - Member Management System

ASP.NET Core, Entity Framework Core, SQL Server, React.js, SPA, Azure, Redis

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.

Table of Contents

  1. API Documentation (Swagger)
  2. Demo
  3. Feature Highlights
  4. Maintainability
  5. Security
  6. Scalability
  7. Tech Stack
  8. Design Patterns
  9. How to run the program locally

API Documentation (Swagger)

Demo: (To be updated)

Demo Photo Demo Photo

Feature Highlights

  • 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

Development Highlights

Maintainability

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

Security and Robustness

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

Scalability and Performance

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

Tech Stack:

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

Design Patterns:

  • The Clean Architecture
  • Asp.Net MVC
  • CQRS
  • Mediatr
  • React Higher Order Components
  • Redux
  • Progressive Web Application with Redis Cache

How to run the program locally:

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