diff --git a/Lieb/Pages/GuildWars2/RaidLogs.razor b/Lieb/Pages/GuildWars2/RaidLogs.razor
new file mode 100644
index 0000000..5fc714a
--- /dev/null
+++ b/Lieb/Pages/GuildWars2/RaidLogs.razor
@@ -0,0 +1,65 @@
+@page "/raidlogs"
+@using Lieb.Data
+@using Lieb.Models
+@using Lieb.Models.GuildWars2
+@using System.Security.Claims
+@inject UserService UserService
+@inject NavigationManager NavigationManager
+@inject AuthenticationStateProvider AuthenticationStateProvider
+
+
+
RaidLogs
+
+
+
+
+
+@foreach(string logFolder in _availabeLogs)
+{
+ string path = $"{LOGS}/{_selectedLogFolder}/{logFolder}/index.html";
+ @logFolder
+}
+
+
+@code
+{
+ private const string TRAINING = "Training";
+ private const string RANDOM = "Random";
+ private const string LOGS = "logs";
+ private const string LOG_DIR = $"wwwroot/{LOGS}";
+ private LiebUser _user;
+ private List _logGroups = new List();
+ private List _availabeLogs = new List();
+ private string _selectedLogFolder = "Training";
+
+ protected override async Task OnInitializedAsync()
+ {
+ var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
+ ulong discordId = ulong.Parse(authState.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value);
+ _user = UserService.GetLiebUser(discordId);
+ _logGroups = Directory.EnumerateDirectories(LOG_DIR).Select(d => Path.GetFileName(d)).ToList();
+ _availabeLogs = Directory.EnumerateDirectories($"{LOG_DIR}/{_selectedLogFolder}").Select(d => Path.GetFileName(d)).OrderByDescending(s => s).ToList();
+ }
+
+ async Task ChangeShownLogs( ChangeEventArgs e)
+ {
+ _selectedLogFolder = e.Value.ToString();
+ _availabeLogs = Directory.EnumerateDirectories($"{LOG_DIR}/{_selectedLogFolder}").Select(d => Path.GetFileName(d)).OrderByDescending(s => s).ToList();
+ }
+}
diff --git a/Lieb/Shared/NavMenu.razor b/Lieb/Shared/NavMenu.razor
index 3a7c714..13db18b 100644
--- a/Lieb/Shared/NavMenu.razor
+++ b/Lieb/Shared/NavMenu.razor
@@ -20,6 +20,15 @@
Raid Overview
+
+
+
+
+ Logs
+
+
+
+