Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

NexaLAN

LAN-first enterprise communication & collaboration platform for software houses. Combines direct messaging, project workspaces, company announcements, file sharing, a GitHub-style repository simulation and an activity audit trail into one internal system — styled after WhatsApp Desktop. Built to run entirely on a Local Area Network with no internet dependency.


Tech stack

Layer Technology
Runtime .NET 10, Blazor Server (Interactive Server)
Realtime SignalR (ChatHub, PresenceHub) + in-process notifier + circuit presence
Data Entity Framework Core 10 + SQLite (zero-setup, file-based)
Identity ASP.NET Core Identity, role-based authorization
UI Bootstrap 5, Tailwind CSS, Bootstrap Icons — all vendored locally for offline use

No Docker / no server required. The database is a single SQLite file (src/NexaLAN.Web/nexalan.db) created automatically on first run. PostgreSQL/Supabase is still supported — see Switching to PostgreSQL below.


Architecture (modular, enterprise-style)

src/
├─ NexaLAN.Domain          # entities + enums + ApplicationUser (no infra deps)
├─ NexaLAN.Infrastructure  # EF Core DbContext, migrations, repository, services, seeder
└─ NexaLAN.Web             # Blazor Server UI, SignalR hubs, Identity, realtime
  • Repository pattern (IRepository<T>) + a focused service layer (chat, directory, projects, announcements, repository-sim, files, activity, admin).
  • Services use IDbContextFactory<ApplicationDbContext> — a short-lived context per operation, the recommended pattern for Blazor Server (many components share a circuit).
  • Real-time UI updates fan out through an in-process RealtimeNotifier; every laptop receives them over its own Blazor SignalR circuit. First-class ChatHub/PresenceHub endpoints are also mapped at /hubs/chat and /hubs/presence.

Running it

# from the repo root
dotnet run --project src/NexaLAN.Web

Then open the URL printed in the console (e.g. http://localhost:5062). On first launch the app creates the SQLite DB, applies migrations and seeds roles, 12 demo employees, 3 projects, repositories, commits and announcements.

Demo accounts  (password for all: Passw0rd!)

Email Name Role
ceo@nexalan.local Ayesha Khan CEO (+ Admin)
coo@nexalan.local Bilal Ahmed COO
pm@nexalan.local Sana Malik Project Manager
hr@nexalan.local Hina Raza HR
haseeb@nexalan.local Haseeb Jalil Senior Software Engineer
usman@nexalan.local Usman Tariq Senior Software Engineer
zara@nexalan.local Zara Sheikh Junior Software Engineer
design@nexalan.local Mariam Nawaz Designer
qa@nexalan.local Fahad Iqbal QA Engineer
devops@nexalan.local Kamran Shah DevOps Engineer
intern@nexalan.local Noor Fatima Intern

Multi-laptop LAN demo

  1. Find the host machine's LAN IP (e.g. 192.168.1.20).
  2. Start the app bound to all interfaces:
    dotnet run --project src/NexaLAN.Web --urls http://0.0.0.0:5080
    (the bundled lan launch profile does this and runs in Production mode.)
  3. On every other laptop on the same WiFi/router/hotspot, browse to http://192.168.1.20:5080 and sign in as a different employee.
  4. Chat, presence (online / last seen), typing indicators, announcements, commits and activity all update live across machines — no internet needed.

The app runs over plain HTTP (no HTTPS redirect) so any laptop can reach the host by IP without certificate friction. Allow port 5080 through the host firewall.


Feature map

  • Direct messaging — realtime, read receipts (✓✓), delivery status, typing indicators, emoji, file attachments.
  • Employee directory — search & filter by role/department, online status, last seen.
  • Project workspaces — members + project roles, group chat, shared files, repositories.
  • Announcement center — priorities, pinning, read-tracking; publishing restricted to CEO/COO/HR/PM/Admin.
  • Repositories — AirDrop-style file sharing over the LAN — each "push" uploads a real file to the host over WiFi and records it on a push/pull timeline (commit hash, version, author). Any project member can pull (download the actual bytes) — entirely offline, no internet or Git required. Files stream with their original name via an authenticated /files/{id} endpoint.
  • Activity log — login, messages, uploads, project/commit/announcement events.
  • Admin dashboard — stats, user & role management, projects, live activity (CEO/COO/Admin only).

Switching to PostgreSQL / Supabase

The data layer is provider-agnostic. To use PostgreSQL instead of SQLite:

  1. dotnet add src/NexaLAN.Infrastructure package Npgsql.EntityFrameworkCore.PostgreSQL
  2. In NexaLAN.Infrastructure/DependencyInjection.cs swap options.UseSqlite(...)options.UseNpgsql(...).
  3. Set ConnectionStrings:DefaultConnection in appsettings.json to your Postgres/Supabase string.
  4. Regenerate migrations:
    dotnet ef migrations add InitialPg -p src/NexaLAN.Infrastructure -s src/NexaLAN.Web -o Data/Migrations

Verification

The full UI was click-tested end-to-end with a real headless browser driving three concurrent users (Playwright + system Chrome). All 25 checks pass with zero console errors, including: login/logout, realtime DM both directions, typing indicators, online presence, directory search, project + member + repo creation, real file push and pull over the LAN (bytes verified), announcements, admin role changes, and navigation across every page.

Resetting the demo data

Stop the app and delete the SQLite database; it will be recreated and reseeded on next run:

rm src/NexaLAN.Web/nexalan.db*

About

NexaLAN is a smart software house network simulation and secure internal communication system built using C socket programming and Cisco Packet Tracer, featuring VLAN-based enterprise infrastructure, real-time messaging, and file sharing over TCP/IP.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages