Skip to content

The "FreakFightsFan" application contains information and statistics about federations, events, fights and fighters of freak fight federations. I created this application because I wanted to practice building Full Stack applications with .NET technology.

Notifications You must be signed in to change notification settings

FritzTheCat9/FreakFightsFan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FreakFightsFan

The "FreakFightsFan" application contains information and statistics about federations, events, fights and fighters of freak fight federations. I created this application because I wanted to practice building Full Stack applications with .NET technology. (C#, .NET, Minimal API, Blazor WebAssembly, MudBlazor, Entity Framework Core and Vertical Slices Architecture)

Table of contents

Launch

Run application with one command (setup all docker containers, create database, apply migrations):

cd C:\Users\bartl\source\repos\FreakFightsFan
docker compose up --build -d

Created containers:

  • C# Web API backend:
http://localhost:5000
  • Blazor WASM frontend:
http://localhost:7000
  • MSSQL database:
Host: localhost 
Port: 1433 
Database/Schema: FreakFightsFan
Username: sa
Password: Password1!
Server: freakfightsfan.database
  • Seq Api logs:
http://localhost:8081

Login credentials:

SuperAdmin:
- Email: [email protected]
- Password: Asd123!
Admin:
- Email: [email protected]
- Password: Asd123!
User:
- Email: [email protected]
- Password: Asd123!

Presentation

Federations view: Federations image

Events view: Events image

Fights view: Fights image

Create fight dialog: Create fight image

Fighters view: Fighters image

Fighter profile view: Fighter profile image

Users view: Users image

Dictionaries view: Dictionaries image

Dictionary items view: Dictionary items image

Images view: Images image

Settings view: Settings image

Technologies

  • C# 12
  • .NET 9.0
  • Blazor WebAssembly
  • Angular 17.1.1

Architecture

Blazor WebAssembly frontend with .NET Minimal API connecting to the MSSQL database. Monolithic architecture with Vertical Slices. Code separated by feature.

Algorithm schema

Project types and references

  • FreakFightsFan.Api - ASP .NET Core Web API (Backend)
  • FreakFightsFan.Blazor - Blazor WebAssembly Standalone App (Frontend)
  • FreakFightsFan.FeatureGenerator - Console App (Code generation for feature)
  • FreakFightsFan.IntegrationTests - xUnit Test Project (Integration Tests)
  • FreakFightsFan.Shared - Class Library (Backend and Frontend shared code)
  • FreakFightsFan.UnitTests - xUnit Test Project (Unit Tests)
  • freak-fights-fan - Angular Project (Frontend 2)

Algorithm schema

Projects content

Technical features in projects.

Algorithm schema

Packages

Nuget packages and libraries used in projects.

Features

  • Dictionaries
    • Create dictionary
    • Delete dictionary
    • Update dictionary
    • Get all dictionaries (paginated, sorted and filtered)
    • Get selected dictionary
  • Dictionary items
    • Create dictionary item
    • Delete dictionary item
    • Update dictionary item
    • Get all dictionary items by code (paginated, sorted and filtered)
    • Get all dictionary item (paginated, sorted and filtered)
    • Get selected dictionary item
  • Events
    • Create federation event
    • Delete federation event
    • Update federation event
    • Get all federation events (paginated, sorted and filtered)
    • Get selected federation event
  • Federations
    • Create federation
    • Delete federation
    • Update federation
    • Get all federations (paginated, sorted and filtered)
    • Get selected federation
  • Fighters
    • Create fighter
    • Delete fighter
    • Update fighter
    • Get all fighters (paginated, sorted and filtered)
    • Get selected fighter
  • Fights
    • Create event fight
    • Delete event fight
    • Move fight (upwards or downwards the fight card)
    • Update event fight
    • Get all event fights (paginated, ordered)
    • Get fighter profile (selected fighter fights and statistics)
    • Get selected fighter
  • Images
    • Create image (save image file on server)
    • Delete image
    • Import federation images
    • Import fighters images from their Instagram profiles
    • Update image
    • Get all images (paginated and sorted)
    • Get selected image
  • Teams
    • Get all teams (paginated)
    • Get selected team
  • Users
    • Confirm user registration and send registration success email
    • Degrade selected user (Admin -> User)
    • Login user if email is confirmed
    • Promote selected user (User -> Admin)
    • Refresh Jwt Token
    • Register new user and send confirmation email
    • Update user theme
    • Get all users (paginated, sorted and filtered)
    • Get selected user

Roles

  • SuperAdmin - ony one user have SuperUser role (can promote and degrade other users)
  • Admin - can do CRUD operations across website, access to Admin Panel
  • User - can view website data
  • Anonymous - can view website data

Project status

Web Api and Blazor frontend are working. I am currently adding more features and improvements.

Planned features and updates:

  • Request CorrelationId visible on frontend page with error (user can give error correlationId to admin and ask for help)
  • Blazor logging
  • Fix bug with validation on create / update fight modal
  • Api Health Checks
  • Fight Types (MMA, BOXING, K1, ...)
  • Fight Result (KO, TKO, ...)
  • Fight description (special rules etc.)
  • Fighter nationality (as dictionary item)
  • GitHub actions
  • App deployment
  • Update user image feature
  • Resend email confirmation email
  • Send fight card email to users before incoming event
  • Fix Feature Generator
  • More integration tests
  • Unit tests
  • Working Angular frontend

About

The "FreakFightsFan" application contains information and statistics about federations, events, fights and fighters of freak fight federations. I created this application because I wanted to practice building Full Stack applications with .NET technology.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published