Files
Temp_MSSPLASHPage/GEMINI.md
2025-09-04 19:47:32 -06:00

4.4 KiB

Project Overview

SplashPage is an ASP.NET Core web application for managing WiFi captive portals and analytics, built on the ABP (ASP.NET Boilerplate) framework. It's designed to work with Cisco Meraki networks to provide WiFi access control, user analytics, and customer engagement features.

Architecture

This is a multi-layered .NET application following Domain-Driven Design (DDD) principles:

Core Components

  • SplashPage.Core: Domain entities, enums, and business logic
  • SplashPage.Application: Application services, DTOs, and business workflows
  • SplashPage.EntityFrameworkCore: Data access layer with Entity Framework Core
  • SplashPage.Web.Core: Shared web infrastructure (authentication, controllers)
  • SplashPage.Web.Host: Web API host for backend services
  • SplashPage.Web.Mvc: MVC web application for frontend
  • SplashPage.Migrator: Database migration tool

Key Domain Areas

  • Splash: Core WiFi analytics and user connection tracking
  • Meraki: Integration with Cisco Meraki API for network data
  • Email: Email template management and marketing campaigns
  • Integrations: Third-party service integrations (email validation, etc.)
  • Personalization: Captive portal customization and branding
  • Reports: Analytics and reporting functionality
  • QRCodes: QR code generation for WiFi access

Database

  • Uses Entity Framework Core with MySQL/PostgreSQL
  • Multi-tenant architecture enabled
  • Connection strings configured in appsettings.json files

Development Commands

Building the Solution

# Build entire solution
dotnet build SplashPage.sln

# Build specific project
dotnet build src/SplashPage.Web.Mvc/SplashPage.Web.Mvc.csproj

Running the Applications

# Run MVC web application (main frontend)
cd src/SplashPage.Web.Mvc
dotnet run

# Run Web API host (backend services)
cd src/SplashPage.Web.Host
dotnet run

# Run database migrator
cd src/SplashPage.Migrator
dotnet run

Database Operations

# Run migrations
cd src/SplashPage.Migrator
dotnet run

# Add new migration
cd src/SplashPage.EntityFrameworkCore
dotnet ef migrations add MigrationName --startup-project ../SplashPage.Web.Host

# Update database
dotnet ef database update --startup-project ../SplashPage.Web.Host

Configuration

Environment Variables

  • SPLASH_CUSTOMER: Customer identifier for multi-tenant setup
  • SPLASH_APP_NAME: Application name identifier
  • SPLASH_SKIP_WORKER: Skip background workers during development
  • DB_CONNECTION_STRING: Override database connection string
  • SPLASH_SECRET: Secret key for authentication

Application URLs

Database Connection

Connection strings are configured in appsettings.json files. The application supports both MySQL and PostgreSQL databases with connection pooling configured.

Key Business Logic

Meraki Integration

  • Background workers sync organization and network data from Cisco Meraki
  • Real-time scanning data processing for user analytics
  • API integration for network device management

WiFi Analytics

  • User connection tracking and analytics
  • Real-time dashboard with widgets for metrics
  • Historical reporting and data visualization
  • Customer loyalty analysis and segmentation

Email System

  • Template-based email campaigns
  • Scheduled email functionality
  • Integration with third-party email validation services
  • Marketing campaign management

Multi-Tenancy

  • Tenant-based data isolation
  • Per-tenant configuration and customization
  • Captive portal personalization per customer

Important Notes

  • The application uses ABP framework conventions for dependency injection and module system
  • AutoMapper is used for DTO mappings between layers
  • Background workers handle data synchronization tasks
  • The system supports multiple database providers through Entity Framework Core
  • JWT authentication is implemented for API access
  • Multi-language support is available through ABP localization

Development Workflow

  1. Make changes to domain entities in SplashPage.Core
  2. Update corresponding DTOs in SplashPage.Application
  3. Modify data access in SplashPage.EntityFrameworkCore if needed
  4. Add/update controllers in SplashPage.Web.Mvc or SplashPage.Web.Host
  5. Run migrations if database schema changes
  6. Test both MVC and API endpoints