Skip to content

FreakFightsFan contains information and statistics about federations, events, fights and fighters of freak fight federations. I created this application because I am a fan of freak fights and I wanted to practice building fullstack applications with .NET technologies.

Notifications You must be signed in to change notification settings

FritzTheCat9/FreakFightsFan

Repository files navigation

FreakFightsFan

Freak fights are fights between popular people. The FreakFightsFan application contains information and statistics about federations, events, fights and fighters of freak fight federations. I created this application because I am a fan of freak fights and I wanted to practice building fullstack application with .NET technologies.

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: freakfightsfan@gmail.com
- Password: Asd123!
Admin:
- Email: freakfightsfan1@gmail.com
- Password: Asd123!
User:
- Email: freakfightsfan2@gmail.com
- Password: Asd123!

Presentation

//TODO: Add some images

Technologies

  • C# 12
  • .NET 8.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. Im 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 incomming event
  • Fix Feature Generator
  • More integration tests
  • Unit tests
  • Working Angular frontend

About

FreakFightsFan contains information and statistics about federations, events, fights and fighters of freak fight federations. I created this application because I am a fan of freak fights and I wanted to practice building fullstack applications with .NET technologies.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published