diff --git a/WatchLog/Components/Layout/NavMenu.razor b/WatchLog/Components/Layout/NavMenu.razor
index fd642c8..2df568b 100644
--- a/WatchLog/Components/Layout/NavMenu.razor
+++ b/WatchLog/Components/Layout/NavMenu.razor
@@ -15,14 +15,14 @@
-
- Counter
+
+
-
- Weather
+
+
diff --git a/WatchLog/Components/Pages/Counter.razor b/WatchLog/Components/Pages/Counter.razor
deleted file mode 100644
index 1a4f8e7..0000000
--- a/WatchLog/Components/Pages/Counter.razor
+++ /dev/null
@@ -1,19 +0,0 @@
-@page "/counter"
-@rendermode InteractiveServer
-
-Counter
-
-Counter
-
-Current count: @currentCount
-
-
-
-@code {
- private int currentCount = 0;
-
- private void IncrementCount()
- {
- currentCount++;
- }
-}
diff --git a/WatchLog/Components/Pages/Weather.razor b/WatchLog/Components/Pages/Weather.razor
deleted file mode 100644
index 43a1ecb..0000000
--- a/WatchLog/Components/Pages/Weather.razor
+++ /dev/null
@@ -1,64 +0,0 @@
-@page "/weather"
-@attribute [StreamRendering]
-
-Weather
-
-Weather
-
-This component demonstrates showing data.
-
-@if (forecasts == null)
-{
- Loading...
-}
-else
-{
-
-
-
- | Date |
- Temp. (C) |
- Temp. (F) |
- Summary |
-
-
-
- @foreach (var forecast in forecasts)
- {
-
- | @forecast.Date.ToShortDateString() |
- @forecast.TemperatureC |
- @forecast.TemperatureF |
- @forecast.Summary |
-
- }
-
-
-}
-
-@code {
- private WeatherForecast[]? forecasts;
-
- protected override async Task OnInitializedAsync()
- {
- // Simulate asynchronous loading to demonstrate streaming rendering
- await Task.Delay(500);
-
- var startDate = DateOnly.FromDateTime(DateTime.Now);
- var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" };
- forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast
- {
- Date = startDate.AddDays(index),
- TemperatureC = Random.Shared.Next(-20, 55),
- Summary = summaries[Random.Shared.Next(summaries.Length)]
- }).ToArray();
- }
-
- private class WeatherForecast
- {
- public DateOnly Date { get; set; }
- public int TemperatureC { get; set; }
- public string? Summary { get; set; }
- public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
- }
-}
diff --git a/WatchLog/Data/Database/Global/Admin.cs b/WatchLog/Data/Database/Global/Admin.cs
new file mode 100644
index 0000000..a0f5f7d
--- /dev/null
+++ b/WatchLog/Data/Database/Global/Admin.cs
@@ -0,0 +1,17 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace WatchLog.Data
+{
+ public class Admin
+ {
+ [Key]
+ public int Id { get; set; }
+
+ [Required]
+ [MaxLength(100)]
+ public required string Name { get; set; }
+
+ [Required]
+ public required string Password { get; set; } // Important: Save as HASH
+ }
+}
\ No newline at end of file
diff --git a/WatchLog/Data/Database/Global/Genre.cs b/WatchLog/Data/Database/Global/Genre.cs
new file mode 100644
index 0000000..39efcdb
--- /dev/null
+++ b/WatchLog/Data/Database/Global/Genre.cs
@@ -0,0 +1,23 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace WatchLog.Data
+{
+ public class Genre
+ {
+ [Key]
+ public int Id { get; set; }
+
+ [Required]
+ [MaxLength(50)]
+ public required string Name { get; set; }
+
+ [Required]
+ public required DateTime CreationTime { get; set; }
+
+ public DateTime? LastChange { get; set; }
+
+
+ // --- Navigation Properties ---
+ public virtual ICollection LinkTableGlobalGenres { get; set; } = new List();
+ }
+}
\ No newline at end of file
diff --git a/WatchLog/Data/Database/Global/GlobalEntity.cs b/WatchLog/Data/Database/Global/GlobalEntity.cs
new file mode 100644
index 0000000..b3babc4
--- /dev/null
+++ b/WatchLog/Data/Database/Global/GlobalEntity.cs
@@ -0,0 +1,45 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace WatchLog.Data
+{
+ public class GlobalEntity
+ {
+ [Key]
+ public int Id { get; set; }
+
+ [Required]
+ [MaxLength(200)]
+ public required string Title { get; set; }
+
+ [MaxLength(500)]
+ public string? PicturePath { get; set; }
+
+ [Required]
+ public required DateTime CreationTime { get; set; }
+
+ public DateTime? LastChange { get; set; }
+
+
+ // --- Foreign Keys ---
+ [Required]
+ public int TypeId { get; set; }
+
+ [Required]
+ public int CreatorId { get; set; }
+
+
+ // --- Navigation Properties ---
+ [ForeignKey(nameof(TypeId))]
+ public virtual Type Type { get; set; } = null!;
+
+ [ForeignKey(nameof(CreatorId))]
+ public virtual User User { get; set; } = null!;
+
+ public virtual ICollection LinkTableGlobalGenres { get; set; } = new List();
+
+ public virtual ICollection PrivateEntities { get; set; } = new List();
+
+ public virtual ICollection SharedListEntities { get; set; } = new List();
+ }
+}
\ No newline at end of file
diff --git a/WatchLog/Data/Database/Global/LinkTableGlobalGenre.cs b/WatchLog/Data/Database/Global/LinkTableGlobalGenre.cs
new file mode 100644
index 0000000..8568ebc
--- /dev/null
+++ b/WatchLog/Data/Database/Global/LinkTableGlobalGenre.cs
@@ -0,0 +1,24 @@
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace WatchLog.Data
+{
+ [PrimaryKey(nameof(GlobalEntityId), nameof(GenreId))]
+ public class LinkTableGlobalGenre
+ {
+ // --- Foreign Keys ---
+ [Column(Order = 0)]
+ public int GlobalEntityId { get; set; }
+
+ [Column(Order = 1)]
+ public int GenreId { get; set; }
+
+
+ // --- Navigation Properties ---
+ [ForeignKey(nameof(GlobalEntityId))]
+ public virtual GlobalEntity GlobalEntity { get; set; } = null!;
+
+ [ForeignKey(nameof(GenreId))]
+ public virtual Genre Genre { get; set; } = null!;
+ }
+}
\ No newline at end of file
diff --git a/WatchLog/Data/Database/Global/StreamingPlatform.cs b/WatchLog/Data/Database/Global/StreamingPlatform.cs
new file mode 100644
index 0000000..5acf74a
--- /dev/null
+++ b/WatchLog/Data/Database/Global/StreamingPlatform.cs
@@ -0,0 +1,22 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace WatchLog.Data
+{
+ public class StreamingPlatform
+ {
+ [Key]
+ public int Id { get; set; }
+
+ [Required]
+ [MaxLength(100)]
+ public required string Name { get; set; }
+
+ [Required]
+ public string? PicturePath { get; set; }
+
+ [Required]
+ public required DateTime CreationTime { get; set; }
+
+ public DateTime? LastChange { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/WatchLog/Data/Database/Global/Type.cs b/WatchLog/Data/Database/Global/Type.cs
new file mode 100644
index 0000000..3417780
--- /dev/null
+++ b/WatchLog/Data/Database/Global/Type.cs
@@ -0,0 +1,18 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace WatchLog.Data
+{
+ public class Type
+ {
+ [Key]
+ public int Id { get; set; }
+
+ [Required]
+ [MaxLength(50)]
+ public required string Name { get; set; }
+
+
+ // --- Navigation Property ---
+ public virtual ICollection GlobalEntities { get; set; } = new List();
+ }
+}
\ No newline at end of file
diff --git a/WatchLog/Data/Database/Global/User.cs b/WatchLog/Data/Database/Global/User.cs
new file mode 100644
index 0000000..e831dd1
--- /dev/null
+++ b/WatchLog/Data/Database/Global/User.cs
@@ -0,0 +1,32 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace WatchLog.Data
+{
+ public class User
+ {
+ [Key]
+ public int Id { get; set; }
+
+ [Required]
+ [MaxLength(100)]
+ public required string Name { get; set; }
+
+ [MaxLength(255)]
+ public string? Email { get; set; }
+
+ [Required]
+ public required string Password { get; set; } // Important: Save as HASH
+
+
+ // --- Navigation Properties ---
+ public virtual ICollection PrivateEntities { get; set; } = new List();
+
+ public virtual ICollection GlobalEntities { get; set; } = new List();
+
+ public virtual ICollection