Welcome to Fyter, an open-source .NET Blazor Server web application dedicated to EA Sports UFC players. This application lets you explore, add, edit, and keep track of UFC fighters in one place—all while leveraging community contributions to ensure fighter data stays accurate and up-to-date.
Fyter aims to centralize EA UFC 5 fighters stats information. Players can search for fighters by name, update their stats, request to add new fighters, and even flag outdated information.
This project implements role-based access to manage user permissions:
-
Admin
- Manage user accounts, assign roles, and review permission requests.
- Full permission to add, edit, or delete fighters and manage the application.
-
FighterEditor
- Add new fighters and edit existing fighters.
- Mark or resolve outdated stats.
- Ideal for active contributors.
-
Viewer (Default)
- View fighter stats, search, and filter the roster.
- Cannot modify or add data.
- Perfect for browsing data without making changes.
Users can request roles by visiting their /Permissions
page.
- .NET 8 SDK or later
- A supported editor or IDE, such as Visual Studio, Visual Studio Code, or JetBrains Rider.
- (Optional) SQLite CLI tools if you want to inspect the database manually.
-
Clone the Repository
git clone https://github.com/breakingram/Fyter.git cd Fyter
-
Navigate to the WebApp Directory
cd Fyter.WebApp
-
Configure
appsettings.json
(Optional)-
By default, Fyter.WebApp project uses two local SQLite databases:
IdentityDB
(for user/role management)FyterDB
(for fighter data)
-
If you would like to customize the connection strings, open the appsettings.json file and update the following entries:
{ "ConnectionStrings": { "IdentityDB": "Data Source=identitydb.db;Cache=Shared", "FyterDB": "Data Source=FyterDB.db;Cache=Shared" }, "SendGrid": { "ApiKey": "", "FromEmail": "", "FromName": "" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Note: The
SendGrid
settings are required only if you want to test email notifications for account confirmations or password resets. Otherwise, you can leave these empty.
-
-
Restore, Build, and Run
dotnet restore dotnet build dotnet run # or 'dotnet watch' (for hot reload)
The application will start up, and you should see something like:
Now listening on: https://localhost:5001
Navigate to https://localhost:5001 URL in your browser to use the application locally.
This project includes a Bash script named migrate.sh
. This script allows you to:
- Apply migrations for both DbContexts at once.
- Run migrations for a specific DbContext by passing parameters.
Usage example:
# Make the script executable (if not already)
chmod +x migrate.sh
# Run migrations for both the IdentityDB and FyterDB contexts
./migrate.sh
# OR run migrations for only the FyterDB context
./migrate.sh -c UfcSqliteContext
Tip: Review or modify
migrate.sh
to suit your environment’s needs.
If you still prefer manual control:
# From the Fyter.WebApp directory
dotnet ef database update --context ApplicationDbContext
# From the Fyter.Plugins.EFCoreSqlite directory
dotnet ef database update --context UfcSqliteContext
When the application runs in Development environment, it can optionally seed some sample data. This is controlled by the SeedData
key in appsettings.json
. For example:
{
"SeedData": true,
"ConnectionStrings": { ... }
}
If SeedData
is true
, the project will insert demo fighters, user accounts and other test data. This helps you quickly explore the features without starting from a blank database.
When running the application in Development mode with SeedData
enabled, two demo user accounts are automatically created:
-
Admin Account
- Username:
admin
- Email:
[email protected]
- Password:
AdminPassword123!
- Roles:
Admin
,Developer
- Username:
-
Normal User Account
- Username:
user
- Email:
[email protected]
- Password:
UserPassword123!
- Role:
Viewer
- Username:
This setup allows you to test different role-based scenarios—like adding fighters, marking stats outdated, or simply viewing fighter data—without creating new users from scratch.