Add core models, DTOs, and services for EchoHub chat application

- Created User, Channel, Message, and ServerInfo models with necessary properties.
- Added DTOs for user profiles, server information, and message handling.
- Implemented JWT authentication service for user login and token generation.
- Developed Entity Framework Core DbContext for database interactions.
- Introduced SignalR ChatHub for real-time messaging and presence tracking.
- Implemented file storage and image to ASCII conversion services.
- Set up CORS and middleware for API endpoints.
- Created launch settings and development configuration for server and web projects.
This commit is contained in:
HueByte
2026-02-18 13:52:19 +01:00
parent 20a341947a
commit cfa8b90d04
47 changed files with 4596 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
namespace EchoHub.Core.Models;
public class Channel
{
public Guid Id { get; set; }
public required string Name { get; set; }
public string? Topic { get; set; }
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
public Guid CreatedByUserId { get; set; }
public List<Message> Messages { get; set; } = [];
}
+17
View File
@@ -0,0 +1,17 @@
namespace EchoHub.Core.Models;
public class Message
{
public Guid Id { get; set; }
public required string Content { get; set; }
public MessageType Type { get; set; } = MessageType.Text;
public string? AttachmentUrl { get; set; }
public string? AttachmentFileName { get; set; }
public DateTimeOffset SentAt { get; set; } = DateTimeOffset.UtcNow;
public Guid ChannelId { get; set; }
public Channel? Channel { get; set; }
public Guid SenderUserId { get; set; }
public required string SenderUsername { get; set; }
}
+8
View File
@@ -0,0 +1,8 @@
namespace EchoHub.Core.Models;
public enum MessageType
{
Text,
Image,
File
}
+14
View File
@@ -0,0 +1,14 @@
namespace EchoHub.Core.Models;
public class ServerInfo
{
public Guid Id { get; set; }
public required string Name { get; set; }
public string? Description { get; set; }
public required string Url { get; set; }
public int OnlineUsers { get; set; }
public int TotalChannels { get; set; }
public DateTimeOffset RegisteredAt { get; set; } = DateTimeOffset.UtcNow;
public DateTimeOffset LastPingAt { get; set; } = DateTimeOffset.UtcNow;
public bool IsOnline { get; set; } = true;
}
+16
View File
@@ -0,0 +1,16 @@
namespace EchoHub.Core.Models;
public class User
{
public Guid Id { get; set; }
public required string Username { get; set; }
public required string PasswordHash { get; set; }
public string? DisplayName { get; set; }
public string? Bio { get; set; }
public string? NicknameColor { get; set; }
public string? AvatarAscii { get; set; }
public UserStatus Status { get; set; } = UserStatus.Online;
public string? StatusMessage { get; set; }
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
public DateTimeOffset LastSeenAt { get; set; } = DateTimeOffset.UtcNow;
}
+9
View File
@@ -0,0 +1,9 @@
namespace EchoHub.Core.Models;
public enum UserStatus
{
Online,
Away,
DoNotDisturb,
Invisible
}