Skip to content

SaraRasoulian/DotNet-WebAPI-Blazor-Sample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

78 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Student Management Application

A sample full-stack application with a backend ASP.NET Core Web API project and a frontend Blazor Web Assembly project.

Student-M

Technology Stack

  • ASP.NET Core Web API -v8
  • Entity Framework Core -v8
  • DDD (Domain-Driven Design)
  • TDD (Test-Driven Development)
  • BDD (Behavior-driven Development)
  • Clean Architecture
  • Clean Code
  • Repository Design Pattern
  • CQRS Design Pattern
  • Mediator Design pattern
  • PostgreSQL Database
  • Blazor WebAssembly -v8
  • Bootstrap -v5
  • Docker

Nuget Packages

  • xUnit for unit, integration and acceptance testing
  • Testcontainers for integration and acceptance testing
  • SpecFlow for acceptance testing
  • NSubstitute for mocking
  • Bogus for fake data generating
  • MediatR for implementing mediator pattern
  • FluentValidation for server-side validation
  • Mapster for object mapping
  • Blazor.Bootstrap for implementing user-interface

This repository is intended for demonstrating best practices in software development. In real-world applications, these practices should be selected based on the specific requirements of each project.

Run with Docker

1. Start with Docker compose

Run the following command in project directory:

docker-compose up -d

Docker compose in this application includes 4 services:

  • Web API application will be listening at http://localhost:5000

  • Blazor webAssembly application will be listening at http://localhost:8080

  • Postgres database will be listening at http://localhost:5433

  • PgAdmin4 web interface will be listening at http://localhost:8000

2. Run the migrations

Open StudentManagement.Server.sln file in visual studio, then in package manager console tab, run:

update-database

This command will generate the database schema in postgres container.


Make sure Docker engine is running, before running integration and acceptance tests.