From d8e0c3479d76a5d81372e78de8d45b097fb73a39 Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Wed, 27 Mar 2024 23:27:42 -0400 Subject: [PATCH 01/89] Auto apply migrations on API startup --- FU.API/FU.API/Program.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/FU.API/FU.API/Program.cs b/FU.API/FU.API/Program.cs index d7d1feb7..088c6162 100644 --- a/FU.API/FU.API/Program.cs +++ b/FU.API/FU.API/Program.cs @@ -21,6 +21,7 @@ private static void Main(string[] args) { WebApplication app = BuildApp(args); ConfigureApp(app); + ApplyDbMigrations(app.Configuration); app.Run(); } @@ -56,6 +57,17 @@ private static void ConfigureApp(in WebApplication app) app.MapHub("/chathub"); } + private static void ApplyDbMigrations(IConfiguration config) + { + // Create a DbContext + var optionsBuilder = new DbContextOptionsBuilder(); + optionsBuilder.UseNpgsql(config[ConfigKey.ConnectionString]); + using AppDbContext dbContext = new(optionsBuilder.Options); + + // Dangerous. See https://learn.microsoft.com/en-us/ef/core/managing-schemas/migrations/applying?tabs=dotnet-core-cli#apply-migrations-at-runtime + dbContext.Database.Migrate(); + } + private static WebApplication BuildApp(string[] args) { WebApplicationBuilder builder = WebApplication.CreateBuilder(args); From a7e99380ceff7de24a39905f8bab9fd6b5a17b9e Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Wed, 27 Mar 2024 22:59:48 -0400 Subject: [PATCH 02/89] Setup API container --- FU.API/FU.API/.dockerignore | 5 +++++ FU.API/FU.API/Dockerfile | 15 +++++++++++++++ FU.API/FU.API/FU.API.csproj | 2 +- FU.API/FU.API/docker-compose.yml | 28 ++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 FU.API/FU.API/.dockerignore create mode 100644 FU.API/FU.API/Dockerfile create mode 100644 FU.API/FU.API/docker-compose.yml diff --git a/FU.API/FU.API/.dockerignore b/FU.API/FU.API/.dockerignore new file mode 100644 index 00000000..cde9ddfc --- /dev/null +++ b/FU.API/FU.API/.dockerignore @@ -0,0 +1,5 @@ +bin/ +obj/ +Dockerfile +docker-compose.yml +README.md diff --git a/FU.API/FU.API/Dockerfile b/FU.API/FU.API/Dockerfile new file mode 100644 index 00000000..07d6155b --- /dev/null +++ b/FU.API/FU.API/Dockerfile @@ -0,0 +1,15 @@ +# https://hub.docker.com/_/microsoft-dotnet +FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build + +# copy everything and build app +WORKDIR /source +COPY . . +RUN mkdir /app +RUN dotnet publish -o /app + +# final stage/image +FROM mcr.microsoft.com/dotnet/aspnet:7.0 +WORKDIR /app +COPY --from=build /app ./ +ENTRYPOINT ["dotnet", "FU.API.dll"] + diff --git a/FU.API/FU.API/FU.API.csproj b/FU.API/FU.API/FU.API.csproj index fa4ac876..f97e0dd5 100644 --- a/FU.API/FU.API/FU.API.csproj +++ b/FU.API/FU.API/FU.API.csproj @@ -25,7 +25,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/FU.API/FU.API/docker-compose.yml b/FU.API/FU.API/docker-compose.yml new file mode 100644 index 00000000..c701f8a3 --- /dev/null +++ b/FU.API/FU.API/docker-compose.yml @@ -0,0 +1,28 @@ +services: + fu-api: + build: + context: . + depends_on: + - db + - storage + environment: + JWT_SECRET: my-32-character-ultra-secure-and-ultra-long-secret + CONNECTION_STRING: Host=db; Database=fu_db; Username=fu_user; Password=fu_pass + STORAGE_CONNECTION_STRING: DefaultEndpointsProtocol=http;AccountName=account1;AccountKey=key1;BlobEndpoint=http://storage:10000/account1 + AVATAR_CONTAINER_NAME: container1 + ports: + - "5278:80" + db: + image: postgres:alpine + environment: + POSTGRES_USER: fu_user + POSTGRES_PASSWORD: fu_pass + POSTGRES_DB: fu_db + ports: + - "5432:5432" + storage: + image: mcr.microsoft.com/azure-storage/azurite + environment: + AZURITE_ACCOUNTS: account1:key1 + ports: + - "10000:10000" From 6a5b0a0b5bf9de4d887f1e84ce5fb8e31d99026f Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Thu, 28 Mar 2024 01:22:59 -0400 Subject: [PATCH 03/89] Create mock email service --- FU.API/FU.API/Services/MockEmailService.cs | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 FU.API/FU.API/Services/MockEmailService.cs diff --git a/FU.API/FU.API/Services/MockEmailService.cs b/FU.API/FU.API/Services/MockEmailService.cs new file mode 100644 index 00000000..e726d292 --- /dev/null +++ b/FU.API/FU.API/Services/MockEmailService.cs @@ -0,0 +1,39 @@ +namespace FU.API.Services; + +using FU.API.Data; +using FU.API.Exceptions; +using FU.API.Interfaces; +using FU.API.Models; +using System.Threading.Tasks; + +/// +/// A mock email service. +/// +/// +/// Auto verifies an account without sending an email. Used for testing and development purposes. +/// +public class MockEmailService : IEmailService +{ + private readonly AppDbContext _dbContext; + + public MockEmailService(AppDbContext dbContext) + { + _dbContext = dbContext; + } + + public async Task SendEmail(EmailType emailType, ApplicationUser user) + { + if (emailType != EmailType.ConfirmAccount) + { + return; + } + + var userEntity = _dbContext.Users.Find(user.UserId) + ?? throw new NotFoundException("User not found", "The requested user was not found"); + + userEntity.AccountConfirmed = true; + + _dbContext.Update(userEntity); + await _dbContext.SaveChangesAsync(); + } +} From 4b4d925066a2c4e9ec20c80c359504fc7568a48e Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Thu, 28 Mar 2024 01:24:21 -0400 Subject: [PATCH 04/89] Fall back to mock email service Fall back to mock email service when no email connection string or spa url is found. --- FU.API/FU.API/Program.cs | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/FU.API/FU.API/Program.cs b/FU.API/FU.API/Program.cs index 088c6162..eab0be42 100644 --- a/FU.API/FU.API/Program.cs +++ b/FU.API/FU.API/Program.cs @@ -127,7 +127,25 @@ private static WebApplication BuildApp(string[] args) builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); - builder.Services.AddSingleton(); + + if (builder.Configuration[ConfigKey.BaseSpaUrl] is null || builder.Configuration[ConfigKey.EmailConnectionString] is null) + { + if (builder.Configuration[ConfigKey.EmailConnectionString] is null) + { + Console.WriteLine($"Email service connection string is not configured. Missing {ConfigKey.EmailConnectionString}. See README for adding. Will use mock email service."); + } + + if (builder.Configuration[ConfigKey.BaseSpaUrl] is null) + { + Console.WriteLine($"The base SPA Url is not configured. Missing {ConfigKey.BaseSpaUrl}. See README for adding. Will use mock email service."); + } + + builder.Services.AddSingleton(); + } + else + { + builder.Services.AddSingleton(); + } builder.Services.AddSignalR(options => { @@ -212,15 +230,5 @@ private static void AssertCriticalConfigValuesExist(in ConfigurationManager conf { throw new Exception($"Storage connection string is not configured. Missing {ConfigKey.StorageConnectionString}. See README for adding."); } - - if (config[ConfigKey.EmailConnectionString] is null) - { - throw new Exception($"Email service connection string is not configured. Missing {ConfigKey.EmailConnectionString}. See README for adding."); - } - - if (config[ConfigKey.BaseSpaUrl] is null) - { - throw new Exception($"The base SPA Url is not configured. Missing {ConfigKey.BaseSpaUrl}. See README for adding."); - } } } From 432dccd829fc0e5df66c0c608b3a490b42101be2 Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Thu, 28 Mar 2024 15:36:36 -0400 Subject: [PATCH 05/89] Create blob storage container if needed --- .../Services/AzureBlobStorageService.cs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/FU.API/FU.API/Services/AzureBlobStorageService.cs b/FU.API/FU.API/Services/AzureBlobStorageService.cs index e8355972..c1f633ae 100644 --- a/FU.API/FU.API/Services/AzureBlobStorageService.cs +++ b/FU.API/FU.API/Services/AzureBlobStorageService.cs @@ -23,7 +23,7 @@ public AzureBlobStorageService(IConfiguration config, AppDbContext dbContext, IL public async Task UploadAsync(Stream stream, string fileName) { - BlobClient blob = GetBlobClient(fileName); + BlobClient blob = await GetBlobClientAsync(fileName); if (await blob.ExistsAsync()) { @@ -43,7 +43,7 @@ public async Task UploadAsync(Stream stream, string fileName) public async Task DeleteOldUnusedFilesAsync() { - BlobContainerClient container = GetBlobContainer(); + BlobContainerClient container = await GetBlobContainerAsync(); // Assumes file name like 355975c6-7c1e-42dc-99c6-a62ddacf0452.jpg with a length of 40 // Assumes PfpUrl doesn't have any parameters @@ -88,18 +88,23 @@ public async Task DeleteOldUnusedFilesAsync() private async Task DeleteFileAsync(string fileName) { - BlobClient blob = GetBlobClient(fileName); + BlobClient blob = await GetBlobClientAsync(fileName); return await blob.DeleteIfExistsAsync(); } - private BlobContainerClient GetBlobContainer() + private async Task GetBlobContainerAsync() { - return new BlobContainerClient(_config[ConfigKey.StorageConnectionString], _config[ConfigKey.AvatarContainerName]); + BlobContainerClient containerClient = new(_config[ConfigKey.StorageConnectionString], _config[ConfigKey.AvatarContainerName]); + + await containerClient.CreateIfNotExistsAsync(PublicAccessType.Blob); + + return containerClient; } - private BlobClient GetBlobClient(string blobName) + private async Task GetBlobClientAsync(string blobName) { - return GetBlobContainer().GetBlobClient(blobName); + BlobContainerClient containerClient = await GetBlobContainerAsync(); + return containerClient.GetBlobClient(blobName); } } From 3cea6741de7fbc72ae7e3765bc5c2d5f670e1e1b Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Thu, 28 Mar 2024 15:37:26 -0400 Subject: [PATCH 06/89] Add check that new profile image exists in blob storage --- FU.API/FU.API/Interfaces/IStorageService.cs | 2 ++ .../FU.API/Services/AzureBlobStorageService.cs | 7 +++++++ FU.API/FU.API/Services/UserService.cs | 17 ++++++++++++++--- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/FU.API/FU.API/Interfaces/IStorageService.cs b/FU.API/FU.API/Interfaces/IStorageService.cs index 5c878c14..4fe2e0f0 100644 --- a/FU.API/FU.API/Interfaces/IStorageService.cs +++ b/FU.API/FU.API/Interfaces/IStorageService.cs @@ -5,4 +5,6 @@ public interface IStorageService public Task UploadAsync(Stream stream, string fileName); public Task DeleteOldUnusedFilesAsync(); + + public Task IsInStorageAsync(Uri uri); } diff --git a/FU.API/FU.API/Services/AzureBlobStorageService.cs b/FU.API/FU.API/Services/AzureBlobStorageService.cs index c1f633ae..0220b4bc 100644 --- a/FU.API/FU.API/Services/AzureBlobStorageService.cs +++ b/FU.API/FU.API/Services/AzureBlobStorageService.cs @@ -86,6 +86,13 @@ public async Task DeleteOldUnusedFilesAsync() } } + public async Task IsInStorageAsync(Uri uri) + { + BlobClient blobClient = new(uri); + + return await blobClient.ExistsAsync(); + } + private async Task DeleteFileAsync(string fileName) { BlobClient blob = await GetBlobClientAsync(fileName); diff --git a/FU.API/FU.API/Services/UserService.cs b/FU.API/FU.API/Services/UserService.cs index fe5cc862..d90ac597 100644 --- a/FU.API/FU.API/Services/UserService.cs +++ b/FU.API/FU.API/Services/UserService.cs @@ -10,11 +10,13 @@ namespace FU.API.Services; public class UserService : CommonService, IUserService { private readonly AppDbContext _dbContext; + private readonly IStorageService _storageService; - public UserService(AppDbContext dbContext) + public UserService(AppDbContext dbContext, IStorageService storageService) : base(dbContext) { _dbContext = dbContext; + _storageService = storageService; } public async Task GetUserProfile(int userId) @@ -41,9 +43,18 @@ public UserService(AppDbContext dbContext) { // Make sure its an image already in our blob storage // Otherwise we are unure if the image is cropped, resized, and in the right format - if (!profileChanges.PfpUrl.Contains("storagefu.blob.core.windows.net")) + try { - throw new UnprocessableException("Invalid profile picture. The image must be uploaded to our storage system"); + Uri avatarUri = new(profileChanges.PfpUrl); + + if (!(await _storageService.IsInStorageAsync(avatarUri))) + { + throw new UnprocessableException("Invalid profile picture. The image must be uploaded to our storage system"); + } + } + catch (UriFormatException) + { + throw new UnprocessableException("Invalid avatar url format."); } user.PfpUrl = profileChanges.PfpUrl; From b66be746218295b59fc1b51d908cea0b1f35731d Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Thu, 28 Mar 2024 18:27:03 -0400 Subject: [PATCH 07/89] Setup SPA container --- FU.SPA/.dockerignore | 7 +++++++ FU.SPA/Dockerfile | 10 ++++++++++ FU.SPA/docker-compose.yml | 6 ++++++ 3 files changed, 23 insertions(+) create mode 100644 FU.SPA/.dockerignore create mode 100644 FU.SPA/Dockerfile create mode 100644 FU.SPA/docker-compose.yml diff --git a/FU.SPA/.dockerignore b/FU.SPA/.dockerignore new file mode 100644 index 00000000..1192f132 --- /dev/null +++ b/FU.SPA/.dockerignore @@ -0,0 +1,7 @@ +node_modules/ +tests/ +dist/ +docker-compose.yml +Dockerfile +README.md + diff --git a/FU.SPA/Dockerfile b/FU.SPA/Dockerfile new file mode 100644 index 00000000..d62c9fb5 --- /dev/null +++ b/FU.SPA/Dockerfile @@ -0,0 +1,10 @@ +FROM node:18-alpine + +WORKDIR /app +COPY . . +RUN npm ci + +ENV VITE_API_URL=http://localhost:5278/api + +RUN npx vite build +CMD npx vite preview --host --port 5173 --strictPort diff --git a/FU.SPA/docker-compose.yml b/FU.SPA/docker-compose.yml new file mode 100644 index 00000000..e82875b3 --- /dev/null +++ b/FU.SPA/docker-compose.yml @@ -0,0 +1,6 @@ +services: + fu-spa: + build: + context: . + ports: + - '5173:5173' From 796ef86f25ac92d9924e47219d8564b424f37c3f Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Fri, 29 Mar 2024 01:06:01 -0400 Subject: [PATCH 08/89] Add containerized test setup --- FU.SPA/.eslintignore | 1 + FU.SPA/tests/Dockerfile | 6 ++++++ FU.SPA/tests/docker-compose.yml | 11 +++++++++++ FU.SPA/tests/setup-tests.js | 17 +++++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 FU.SPA/.eslintignore create mode 100644 FU.SPA/tests/Dockerfile create mode 100644 FU.SPA/tests/docker-compose.yml create mode 100644 FU.SPA/tests/setup-tests.js diff --git a/FU.SPA/.eslintignore b/FU.SPA/.eslintignore new file mode 100644 index 00000000..2bfa6a4d --- /dev/null +++ b/FU.SPA/.eslintignore @@ -0,0 +1 @@ +tests/ diff --git a/FU.SPA/tests/Dockerfile b/FU.SPA/tests/Dockerfile new file mode 100644 index 00000000..ea199ec4 --- /dev/null +++ b/FU.SPA/tests/Dockerfile @@ -0,0 +1,6 @@ +FROM node:18-alpine + +COPY setup-tests.js . + +ENV API_BASE_URL=http://fu-api:80/api +CMD node setup-tests.js diff --git a/FU.SPA/tests/docker-compose.yml b/FU.SPA/tests/docker-compose.yml new file mode 100644 index 00000000..52f88231 --- /dev/null +++ b/FU.SPA/tests/docker-compose.yml @@ -0,0 +1,11 @@ +include: + - ../docker-compose.yml + - ../../FU.API/FU.API/docker-compose.yml + +services: + fu-test-setup: + build: + context: . + depends_on: + - fu-api + - fu-spa diff --git a/FU.SPA/tests/setup-tests.js b/FU.SPA/tests/setup-tests.js new file mode 100644 index 00000000..04848af3 --- /dev/null +++ b/FU.SPA/tests/setup-tests.js @@ -0,0 +1,17 @@ +// Note: This file is run with node not the browser. For details see https://nodejs.org/en/learn/getting-started/differences-between-nodejs-and-the-browser +// Note: This file must be self-contained, imports will fail. + +console.log('Entering setup script'); +const API_BASE_URL = process.env.API_BASE_URL; + +const setup = async () => { + console.log('Setting up'); + + const response = await fetch(`${API_BASE_URL}/Games`); + console.log(await response.json()); + + console.log('Setup done'); +}; + +// Run setup after 3 second delay to give api time to startup +setTimeout(setup, 3000); From c7bd546bd7b2a2c83ba592af46dad67ab04b4c3f Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Fri, 29 Mar 2024 14:23:35 -0400 Subject: [PATCH 09/89] Add npm scripts --- FU.SPA/package.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/FU.SPA/package.json b/FU.SPA/package.json index 45d8c792..ae2eaa71 100644 --- a/FU.SPA/package.json +++ b/FU.SPA/package.json @@ -10,7 +10,12 @@ "preview": "npx vite preview", "format": "npx prettier . --write", "format-check": "npx prettier . --check", - "selenium-test": "npx selenium-side-runner tests/*.side -c browserName=firefox" + "selenium-test": "npx selenium-side-runner tests/*.side -c browserName=firefox", + "selenium-test:clean": "npm run container-setup && npm run selenium-test && npm run container-teardown", + "container-setup": "npm run container-teardown && docker compose -f tests/docker-compose.yml up --build -d", + "container-teardown": "docker compose -f tests/docker-compose.yml down", + "api-start": "docker compose -f ../FU.API/FU.API/docker-compose.yml up --build", + "api-teardown": "docker compose -f ../FU.API/FU.API/docker-compose.yml down" }, "dependencies": { "@emotion/react": "^11.11.1", From 88035821270f8cdc2493a7a6fe08143ab6880a47 Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Fri, 29 Mar 2024 16:24:50 -0400 Subject: [PATCH 10/89] Update readmes --- FU.API/FU.API/README.md | 31 ----------- FU.API/README.md | 115 +++++++++++++++++++++++++++++++++++++++ FU.SPA/README.md | 65 ++++++++++++++++++++-- README.md | 116 +++------------------------------------- 4 files changed, 183 insertions(+), 144 deletions(-) delete mode 100644 FU.API/FU.API/README.md create mode 100644 FU.API/README.md diff --git a/FU.API/FU.API/README.md b/FU.API/FU.API/README.md deleted file mode 100644 index 5c7441f8..00000000 --- a/FU.API/FU.API/README.md +++ /dev/null @@ -1,31 +0,0 @@ -## Avatar Image System Overview - -First the avatar is uploaded to the server via `AvatarController.UploadAvatar`. Then it is validated to be an image, cropped to be square, resized, and converted to a JPEG using the `SkiaSharp` library. Then the image is uploaded to a public azure storage blob and its a url is returned to the user for previewing. If the user wants to use the image, they call `UsersController.UpdateProfile` to set it as their new avatar. After awhile, unused profile pictures are deleted by `PeriodicRemoteStorageCleanerHostedService`. - -## Understanding Controllers - -The controllers serve as wrappers around the Services. They take an http request, run a corresponding service calls, and return an http result. For example consider the following `GameController` class. - - [Route("api/Games")] - public class GamesController - { - ... - - [HttpGet] - [Route("{gameId}")] - public async Task GetGame(int gameId) - { - Game? game = await _gameService.GetGame(gameId); - - if (game is null) - { - return NotFound("Game not found"); - } - - GameDTO response = game.ToDto(); - - return Ok(response); - } - } - -To understand what's going on let's walk through the request `GET api/Games/2`. ASP.NET knows `GameController` is responsible for handling all requests starting with the path `api/Games` because of the attribute `[Route("api/Games")]`. Furthermore, the `GetGame` function has the attributes `[HttpGet]` and `[Route("{gameId}")]` which means it handles all `GET` requests at `api/Games/{gameId}`. Since `2` matches `{gameId}`, `GetGame(2)` is called. The function starts by calling `_gameService.GetGame(2)` and checking if a anything was found. If so, the `Game` object is then converted to a `GameDTO` object to standardize request formats. This object is then sent back to the requester with an `OK` response (or `200`). ASP.NET automatically converts the response to a JSON object. diff --git a/FU.API/README.md b/FU.API/README.md new file mode 100644 index 00000000..271498d1 --- /dev/null +++ b/FU.API/README.md @@ -0,0 +1,115 @@ +# API Overview + +## Tech Stack + +- The api is build with ASP.NET + - SignalR is used for real-time chat + - SkiaSharp is used for image manipulation + - xUnit is used for testing + - EFCore is our O/RM +- Postgres is our DBMS +- Azure Blob Storage is used to store user avatars +- Azure Communication Service is used to send emails +- Docker can be used for containerization + +## Understanding Controllers + +The controllers serve as wrappers around the Services. They take an http request, run a corresponding service calls, and return an http result. For example consider the following `GameController` class. + + [Route("api/Games")] + public class GamesController + { + ... + + [HttpGet] + [Route("{gameId}")] + public async Task GetGame(int gameId) + { + Game? game = await _gameService.GetGame(gameId); + + if (game is null) + { + return NotFound("Game not found"); + } + + GameDTO response = game.ToDto(); + + return Ok(response); + } + } + +To understand what's going on let's walk through the request `GET api/Games/2`. ASP.NET knows `GameController` is responsible for handling all requests starting with the path `api/Games` because of the attribute `[Route("api/Games")]`. Furthermore, the `GetGame` function has the attributes `[HttpGet]` and `[Route("{gameId}")]` which means it handles all `GET` requests at `api/Games/{gameId}`. Since `2` matches `{gameId}`, `GetGame(2)` is called. The function starts by calling `_gameService.GetGame(2)` and checking if a anything was found. If so, the `Game` object is then converted to a `GameDTO` object to standardize request formats. This object is then sent back to the requester with an `OK` response (or `200`). ASP.NET automatically converts the response to a JSON object. + +## Avatar Image System Overview + +First an avatar is uploaded to the server via `AvatarController.UploadAvatar`. Then it is validated to be an image, cropped to be square, resized, and converted to a JPEG using the `SkiaSharp` library. Then the image is uploaded to a public azure storage blob and its a url is returned to the user for previewing. If the user wants to use the image, they call `UsersController.UpdateProfile` to set it as their new avatar. After awhile, unused profile pictures are deleted by `PeriodicRemoteStorageCleanerHostedService`. + +## Development + +### External Requirements + +In order to run the project you first have to install: + +- [ASP.NET Core 7](https://learn.microsoft.com/en-us/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-7.0) +- [PostgreSQL](https://www.postgresql.org/download/) + +### Postgres Setup + +Install and start the database by installing Docker and running the following command. + +``` +docker run --name postgres-490 -e POSTGRES_DB=fu_dev -e POSTGRES_PASSWORD=dev -e POSTGRES_USER=dev -p 5432:5432 postgres:alpine +``` + +To run the container at a later time, run: + +``` +docker container start postgres-490 +``` + +Alternatively, install and start a PostgreSQL database manually. + +### Config Setup + +Config settings are loaded from the environment variables. To automatically load the environment variable from a file, create a `.env` file in this folder. + +#### Blob storage + +An azure storage account is needed with a storage container. Public anonymous access must be enabled. The `STORAGE_CONNECTION_STRING` and `AVATAR_CONTAINER_NAME` environment variables must be set. + +``` +STORAGE_CONNECTION_STRING="XXXXXXXX" +AVATAR_CONTAINER_NAME="some-container-name" +``` + +#### Jwt Secret + +A random string of 32+ characters is required in the `JWT_SECRET` environment variable as a Jwt Secret. + +``` +JWT_SECRET="my-32-character-ultra-secure-and-ultra-long-secret" +``` + +#### Email service + +An azure communication service is needed to send emails. + +``` +EMAIL_CONNECTION_STRING="XXXXXXXX" +``` + +#### Connect to Postgres + +Set the postgres `CONNECTION_STRING` environment variable. + +``` +CONNECTION_STRING="Host=localhost; Database=fu_dev; Username=dev; Password=dev" +``` + +### Coding Style + +Follow Google's C# [style guide](https://google.github.io/styleguide/csharp-style.html) + +## Testing + +Run tests on the backend with `dotnet test`. Tests are located in `FU.API.Tests/`. They consist of service unit tests as behavioral testing is done by the SPA. diff --git a/FU.SPA/README.md b/FU.SPA/README.md index f768e33f..134452d8 100644 --- a/FU.SPA/README.md +++ b/FU.SPA/README.md @@ -1,8 +1,63 @@ -# React + Vite +# SPA Overview -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. +## Development -Currently, two official plugins are available: +Install [npm](https://www.npmjs.com/package/npm) and [Docker](https://www.docker.com/get-started/). -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh +## Configure the API URL + +Config settings are loaded from environment variables. To automatically load environment variables from a file, create a `.env` file in this folder. + +Set the `VITE_API_URL` environment variable by adding the following to `.env`. + + VITE_API_URL=http://localhost:5278/api + +If there are CORS errors, change the URL to match `http://` instead of `https://` and this may resolve the issue. + +## Running with docker + +Add the following to your `hosts` file (`/etc/hosts` on Linux and `C:\Windows\System32\drivers\etc` on Windows). + + 127.0.0.1 storage + 127.0.0.1 fu-api + 127.0.0.1 fu-spa + +To test with a clean API and SPA run + + npm run selenium-test:clean + +To startup a clean API and SPA for test development, run + + npm run container-setup + +To stop run + + npm run container-teardown + +To start just the API for SPA development, run + + npm run api-start + +To pause the container press `CTRL-C`. To resume it run the above command. To stop and remove the container run + + npm run api-teardown + +### Developing Selenium Tests + +Tests are located in `FU.SPA/tests`. + +To add initial testing data, add API calls to `tests/setup-tests.js`. The file can be run manually with `node tests/setup-tests.js`. + +To run behavioral tests with a API and SPA already running, run + + npm run selenium-test + +or + + selenium-side-runner tests/*.side -c browserName=firefox + +You can also change the browserName option to chrome/chromium if you want to test that browser engine instead. + +### Coding Style + +Prettier and ESLint are used to enforce a consistent coding style. diff --git a/README.md b/README.md index ed98920a..4014aa63 100644 --- a/README.md +++ b/README.md @@ -1,121 +1,21 @@ # Forces Unite -The Forces Unite website is a platform designed to bring gamers together, form groups, and connect over their favorite gaming interests. -Read our [wiki](https://github.com/SCCapstone/PalmettoProgrammers/wiki/Project-Description)! -## External Requirements -In order to build this project you first have to install: -* [ASP.NET Core 7](https://learn.microsoft.com/en-us/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-7.0) -* [npm](https://www.npmjs.com/package/npm) -* [Docker](https://www.docker.com/get-started/) -* [PostgreSQL](https://www.postgresql.org/download/) -* [Entity Framework Core tools for .NET 7](https://learn.microsoft.com/en-us/ef/core/cli/) - -### Backend Environment Setup -Config settings are loaded from the environment variables. To automatically load the environment variable from a file, create a `.env` file in the `FU.API` parent folder. - -### Blob storage -An azure storage account is needed with a storage container. Public anonymous access must be enabled. The `STORAGE_CONNECTION_STRING` and `AVATAR_CONTAINER_NAME` environment variables must be set. -``` -STORAGE_CONNECTION_STRING="XXXXXXXX" -AVATAR_CONTAINER_NAME="some-container-name" -``` - -### Jwt Secret -A random string of 32+ characters is required in the `JWT_SECRET` environment variable as a Jwt Secret. -``` -JWT_SECRET="my-32-character-ultra-secure-and-ultra-long-secret" -``` - -### Email service -An azure communication service is needed to send emails -``` -EMAIL_CONNECTION_STRING="XXXXXXXX" -``` - -### Starting Postgres -Install and start the database by installing Docker and running the following command. -``` -docker run --name postgres-490 -e POSTGRES_DB=fu_dev -e POSTGRES_PASSWORD=dev -e POSTGRES_USER=dev -p 5432:5432 postgres:alpine -``` -To run the container at a later time, run: -``` -docker container start postgres-490 -``` - -Alternatively, install and start a PostgreSQL database manually. - -### Updating Postgres -Run the following command to apply the latest database changes. -Make sure you have the Entity Framework tool installed. -``` -dotnet tool install --global dotnet-ef --version 7.0.16 -dotnet ef database update -``` - -### Connect to Postgres -Set the `CONNECTION_STRING` environment variable. -``` -CONNECTION_STRING="Host=localhost; Database=fu_dev; Username=dev; Password=dev" -``` - -### SPA Environment Setup -Config settings are loaded from the environment variables. To automatically load the environment variable from a file, create a `.env` file in the `FU.SPA` parent folder. - -Then set the `VITE_API_URL` environment variable -``` -VITE_API_URL=https://localhost:PORT/api -``` -where `PORT` is the port number the API is running on. If there are CORS errors, change the URL to match `http://` instead of `https://` and this may resolve the issue. +The Forces Unite website is a platform designed to bring gamers together, form groups, and connect over their favorite gaming interests. Read our [wiki](https://github.com/SCCapstone/PalmettoProgrammers/wiki/Project-Description) for more details. ## Running -### Running Web API -``` -cd FU.API/FU.API -dotnet run -``` -Alternativly, start the web app with the Visual studio IDE -### Running SPA -``` -cd FU.SPA -npm install -npm run dev -``` -# Coding styles -## FU.API -Follow Google's C# [style guide](https://google.github.io/styleguide/csharp-style.html) -## FU.SPA -Follow Prettier's HTML, CSS, JavaScript/JSX [style formatting](https://prettier.io/docs/en/) +After installing [npm](https://www.npmjs.com/package/npm) and [Docker](https://www.docker.com/get-started/), run `npm run container-setup` in `FU.SPA` to start the project. To stop, run `npm run container-teardown`. + +## API -# Deployment -Deployed to Azure using GitHub Actions. +See `FU.API/README.md` for more details. -# Testing -## Unit Tests -To run unit tests on the backend: -``` -cd FU.API -dotnet test -``` -Tests are located in `FU.API/FU.API.Tests`. -The tests are ran on every commit made. +## SPA -## Behavioral Tests -To run behavioral tests on the frontend: -``` -cd FU.SPA -npm run selenium-test -``` -Alternativly, you can use: -``` -selenium-side-runner tests/*.side -c browserName=firefox -``` -This does the same as above but directly calls the CLI command. You can also change the browserName -option to chrome/chromium if you want to test that browser engine instead. +See `FU.SPA/README.md` for more details. -Tests are located in `FU.SPA/tests`. +## Authors -# Authors Aaron Keys - alkeys@email.sc.edu Ethan Adams - epadams@email.sc.edu From 3ab571c2802918d11a21b959af174b35b3646e05 Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Fri, 29 Mar 2024 17:07:32 -0400 Subject: [PATCH 11/89] Add setup-tests env var explination --- FU.SPA/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FU.SPA/README.md b/FU.SPA/README.md index 134452d8..92d66f2d 100644 --- a/FU.SPA/README.md +++ b/FU.SPA/README.md @@ -46,7 +46,7 @@ To pause the container press `CTRL-C`. To resume it run the above command. To st Tests are located in `FU.SPA/tests`. -To add initial testing data, add API calls to `tests/setup-tests.js`. The file can be run manually with `node tests/setup-tests.js`. +To add initial testing data, add API calls to `tests/setup-tests.js`. The file can be run manually with `node tests/setup-tests.js`. If run manually, the `API_BASE_URL` environment variable must be set. See [here](https://nodejs.org/en/learn/command-line/how-to-read-environment-variables-from-nodejs) for details. To run behavioral tests with a API and SPA already running, run From f59f7e47d7b6e17c60b3039cceefd8ce94d79717 Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Fri, 29 Mar 2024 17:21:05 -0400 Subject: [PATCH 12/89] Remove MockEmailService email type check --- FU.API/FU.API/Services/MockEmailService.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/FU.API/FU.API/Services/MockEmailService.cs b/FU.API/FU.API/Services/MockEmailService.cs index e726d292..dacbbdb3 100644 --- a/FU.API/FU.API/Services/MockEmailService.cs +++ b/FU.API/FU.API/Services/MockEmailService.cs @@ -23,11 +23,6 @@ public MockEmailService(AppDbContext dbContext) public async Task SendEmail(EmailType emailType, ApplicationUser user) { - if (emailType != EmailType.ConfirmAccount) - { - return; - } - var userEntity = _dbContext.Users.Find(user.UserId) ?? throw new NotFoundException("User not found", "The requested user was not found"); From 4e47dbdd7182eedeeba13d02dfbab9396185adad Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Fri, 29 Mar 2024 17:21:12 -0400 Subject: [PATCH 13/89] Fix formatting --- FU.API/FU.API/Helpers/AuthHelper.cs | 1 - FU.API/FU.API/Migrations/20240317012258_ConfirmAccount.cs | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/FU.API/FU.API/Helpers/AuthHelper.cs b/FU.API/FU.API/Helpers/AuthHelper.cs index 566c9544..624178ac 100644 --- a/FU.API/FU.API/Helpers/AuthHelper.cs +++ b/FU.API/FU.API/Helpers/AuthHelper.cs @@ -30,5 +30,4 @@ private static string GetJwtSecretFromConfig(this IConfiguration configuration) { return configuration[ConfigKey.JwtSecret] ?? string.Empty; } - } diff --git a/FU.API/FU.API/Migrations/20240317012258_ConfirmAccount.cs b/FU.API/FU.API/Migrations/20240317012258_ConfirmAccount.cs index c742d019..a9fc8f84 100644 --- a/FU.API/FU.API/Migrations/20240317012258_ConfirmAccount.cs +++ b/FU.API/FU.API/Migrations/20240317012258_ConfirmAccount.cs @@ -1,9 +1,9 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable +#nullable disable namespace FU.API.Migrations { + using Microsoft.EntityFrameworkCore.Migrations; + /// public partial class ConfirmAccount : Migration { @@ -22,7 +22,7 @@ protected override void Up(MigrationBuilder migrationBuilder) table: "Users", type: "text", nullable: false, - defaultValue: ""); + defaultValue: string.Empty); } /// From 8de113e5f56e9576e2a67290ddc34c138a93d661 Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Fri, 29 Mar 2024 17:33:40 -0400 Subject: [PATCH 14/89] Move avatar url check to controller --- FU.API/FU.API/Controllers/UsersController.cs | 27 ++++++++++++++++++-- FU.API/FU.API/Services/UserService.cs | 21 +-------------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/FU.API/FU.API/Controllers/UsersController.cs b/FU.API/FU.API/Controllers/UsersController.cs index 1caf28c8..8693e826 100644 --- a/FU.API/FU.API/Controllers/UsersController.cs +++ b/FU.API/FU.API/Controllers/UsersController.cs @@ -18,11 +18,13 @@ public class UsersController : ControllerBase { private readonly IUserService _userService; private readonly ISearchService _searchService; + private readonly IStorageService _storageService; - public UsersController(IUserService userService, ISearchService searchService) + public UsersController(IUserService userService, ISearchService searchService, IStorageService storageService) { _userService = userService; _searchService = searchService; + _storageService = storageService; } [HttpGet] @@ -74,7 +76,28 @@ public async Task UpdateProfile([FromBody] UserProfile profileCha // Overrides any client given id that may differ from userId. profileChanges.Id = userId; - var newProfile = await _userService.UpdateUserProfile(profileChanges); + // Make sure its an image already in our blob storage + // Otherwise we are unure if the image is cropped, resized, and in the right format + if (profileChanges?.PfpUrl is not null) + { + Uri avatarUri; + + try + { + avatarUri = new(profileChanges.PfpUrl); + } + catch (UriFormatException) + { + throw new UnprocessableException("Invalid avatar url format."); + } + + if (!(await _storageService.IsInStorageAsync(avatarUri))) + { + throw new UnprocessableException("Invalid profile picture. The image must be uploaded to our storage system"); + } + } + + var newProfile = await _userService.UpdateUserProfile(profileChanges!); return Ok(newProfile); } diff --git a/FU.API/FU.API/Services/UserService.cs b/FU.API/FU.API/Services/UserService.cs index d90ac597..72376052 100644 --- a/FU.API/FU.API/Services/UserService.cs +++ b/FU.API/FU.API/Services/UserService.cs @@ -5,18 +5,15 @@ namespace FU.API.Services; using FU.API.Helpers; using FU.API.Interfaces; using Microsoft.EntityFrameworkCore; -using FU.API.Exceptions; public class UserService : CommonService, IUserService { private readonly AppDbContext _dbContext; - private readonly IStorageService _storageService; - public UserService(AppDbContext dbContext, IStorageService storageService) + public UserService(AppDbContext dbContext) : base(dbContext) { _dbContext = dbContext; - _storageService = storageService; } public async Task GetUserProfile(int userId) @@ -41,22 +38,6 @@ public UserService(AppDbContext dbContext, IStorageService storageService) if (profileChanges.PfpUrl is not null) { - // Make sure its an image already in our blob storage - // Otherwise we are unure if the image is cropped, resized, and in the right format - try - { - Uri avatarUri = new(profileChanges.PfpUrl); - - if (!(await _storageService.IsInStorageAsync(avatarUri))) - { - throw new UnprocessableException("Invalid profile picture. The image must be uploaded to our storage system"); - } - } - catch (UriFormatException) - { - throw new UnprocessableException("Invalid avatar url format."); - } - user.PfpUrl = profileChanges.PfpUrl; } From d738fa08a1cee7e7c2d3e403cd66c11ae9e7d3c1 Mon Sep 17 00:00:00 2001 From: evan-scales Date: Sat, 6 Apr 2024 14:59:22 -0400 Subject: [PATCH 15/89] 453: Fix highlighting tags on social --- FU.SPA/src/components/PostCard.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FU.SPA/src/components/PostCard.jsx b/FU.SPA/src/components/PostCard.jsx index bf26ad77..204f5cfb 100644 --- a/FU.SPA/src/components/PostCard.jsx +++ b/FU.SPA/src/components/PostCard.jsx @@ -168,7 +168,7 @@ const PostCard = ({ post, showActions, onTagClick, showJoinedStatus }) => { handleTagClick(t) : null} + onClick={onTagClick ? () => handleTagClick(t) : null} /> ))} From 968cc35e2f5a5f13f0cd53f41889bf9698208e65 Mon Sep 17 00:00:00 2001 From: evan-scales Date: Sat, 6 Apr 2024 15:10:09 -0400 Subject: [PATCH 16/89] 467: Fix blank pages --- FU.SPA/src/components/Chat.jsx | 3 +++ FU.SPA/src/components/pages/PostPage.jsx | 2 +- FU.SPA/src/components/pages/SignIn.jsx | 2 +- FU.SPA/src/components/pages/UserProfile.jsx | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/FU.SPA/src/components/Chat.jsx b/FU.SPA/src/components/Chat.jsx index e34eb826..a29b58e1 100644 --- a/FU.SPA/src/components/Chat.jsx +++ b/FU.SPA/src/components/Chat.jsx @@ -31,6 +31,9 @@ export default function Chat({ chatId }) { const initializeChat = async () => { try { const messages = await getMessages(chatId, 1, limit); + if (!messages) { + messages = []; + } setMessages(messages); // See #281: We need to wait for the signalR connection to be started before joining the chat await new Promise((resolve) => setTimeout(resolve, config.WAIT_TIME)); diff --git a/FU.SPA/src/components/pages/PostPage.jsx b/FU.SPA/src/components/pages/PostPage.jsx index bac92284..311e0e49 100644 --- a/FU.SPA/src/components/pages/PostPage.jsx +++ b/FU.SPA/src/components/pages/PostPage.jsx @@ -58,7 +58,7 @@ const PostPage = () => { }, [postId, update]); const renderChat = () => { - if (post.hasJoined) { + if (user && post.hasJoined) { return ; } else { var reason = user ? 'not-joined' : 'no-user'; diff --git a/FU.SPA/src/components/pages/SignIn.jsx b/FU.SPA/src/components/pages/SignIn.jsx index dcc74eaf..de8942ed 100644 --- a/FU.SPA/src/components/pages/SignIn.jsx +++ b/FU.SPA/src/components/pages/SignIn.jsx @@ -122,7 +122,7 @@ export default function SignIn() { try { const response = await AuthService.signIn(creds); login(response.token); - navigate(returnUrl ?? '/'); + navigate(returnUrl ?? '/discover'); } catch (event) { const errorResponse = await JSON.parse(event.message); if (errorResponse && errorResponse.detail === 'Account not confirmed') { diff --git a/FU.SPA/src/components/pages/UserProfile.jsx b/FU.SPA/src/components/pages/UserProfile.jsx index 5ac75f34..e168056b 100644 --- a/FU.SPA/src/components/pages/UserProfile.jsx +++ b/FU.SPA/src/components/pages/UserProfile.jsx @@ -43,7 +43,7 @@ const UserProfile = () => { const renderChat = () => { if (isOwnProfile) { return null; - } else if (user) { + } else if (user && chatId) { return ; } else { return ; From 4c46b220c7bd0981777239077dd8ab0cb72162da Mon Sep 17 00:00:00 2001 From: evan-scales Date: Sat, 6 Apr 2024 15:43:18 -0400 Subject: [PATCH 17/89] 466: Wrong username on chat --- FU.SPA/src/context/userProvider.jsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/FU.SPA/src/context/userProvider.jsx b/FU.SPA/src/context/userProvider.jsx index 77d5aca7..2183ac74 100644 --- a/FU.SPA/src/context/userProvider.jsx +++ b/FU.SPA/src/context/userProvider.jsx @@ -42,6 +42,22 @@ const UserProvider = ({ children }) => { fetchCurrentUser(token); }; + // Listen for changes in local storage token + useEffect(() => { + const handleStorageChange = (event) => { + if (event.key === 'token') { + setToken(event.newValue); + } + }; + + window.addEventListener('storage', handleStorageChange); + + return () => { + window.removeEventListener('storage', handleStorageChange); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + return ( {children} From 40eaf794896e9be77366cf6cd8766bd0a822faf6 Mon Sep 17 00:00:00 2001 From: evan-scales Date: Sat, 6 Apr 2024 15:45:20 -0400 Subject: [PATCH 18/89] fix linter --- FU.SPA/src/components/Chat.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FU.SPA/src/components/Chat.jsx b/FU.SPA/src/components/Chat.jsx index a29b58e1..2db1895c 100644 --- a/FU.SPA/src/components/Chat.jsx +++ b/FU.SPA/src/components/Chat.jsx @@ -30,7 +30,7 @@ export default function Chat({ chatId }) { useEffect(() => { const initializeChat = async () => { try { - const messages = await getMessages(chatId, 1, limit); + var messages = await getMessages(chatId, 1, limit); if (!messages) { messages = []; } From 6964a88f7df78f51ac9fb4cd69aa100ad7d488a5 Mon Sep 17 00:00:00 2001 From: evan-scales Date: Sat, 6 Apr 2024 15:47:10 -0400 Subject: [PATCH 19/89] fix linter --- FU.SPA/src/context/userProvider.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/FU.SPA/src/context/userProvider.jsx b/FU.SPA/src/context/userProvider.jsx index 2183ac74..1b380179 100644 --- a/FU.SPA/src/context/userProvider.jsx +++ b/FU.SPA/src/context/userProvider.jsx @@ -55,7 +55,6 @@ const UserProvider = ({ children }) => { return () => { window.removeEventListener('storage', handleStorageChange); }; - // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return ( From f738322d4ad342dfc486f81c3c448d00b7e1dd98 Mon Sep 17 00:00:00 2001 From: James Pretorius Date: Sat, 6 Apr 2024 19:19:11 -0400 Subject: [PATCH 20/89] Splash page draft --- FU.SPA/assets/create-post-view.png | Bin 0 -> 38102 bytes FU.SPA/assets/friends-view.png | Bin 0 -> 25029 bytes FU.SPA/assets/post-view.png | Bin 0 -> 86156 bytes FU.SPA/src/components/pages/Home.jsx | 100 ++++++++++++++++++++++++++- 4 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 FU.SPA/assets/create-post-view.png create mode 100644 FU.SPA/assets/friends-view.png create mode 100644 FU.SPA/assets/post-view.png diff --git a/FU.SPA/assets/create-post-view.png b/FU.SPA/assets/create-post-view.png new file mode 100644 index 0000000000000000000000000000000000000000..77fa2d7dd18d348e8dcdecfd52d7ed4c1270e3d5 GIT binary patch literal 38102 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

|oeGXE{Pl)2biU{{6pGdq=aS_KhIpWsgE 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 E4<-+4&Hw-a literal 0 HcmV?d00001 diff --git a/FU.SPA/src/components/pages/Home.jsx b/FU.SPA/src/components/pages/Home.jsx index c23c9bd4..86e745d6 100644 --- a/FU.SPA/src/components/pages/Home.jsx +++ b/FU.SPA/src/components/pages/Home.jsx @@ -1,3 +1,97 @@ -export default function Home() { - return

Home

; -} +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Link from '@mui/material/Link'; +import Theme from '../../Theme'; + +const Home = () => { + return ( + + + + + Connect with others.
+ Play together. +
+ + Forces Unite is the next matchmaking platform to find players and + make friends. + +
+ + + Don't limit yourself to restrictive, or non-existent, in game + match making. Search for exactly what you want play, when you want to + play, with who you want to play with. + + + If you can't find a match, make a new post that perfectly matches + what you're looking for. + + + + As a post member, discuss meetup detail, strategize a game plan, or + just chat. Don't forget to invite your friends! + + + + Befriend others to keep in touch and meet up later. + + + +