4.4 KiB
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 setupSPLASH_APP_NAME: Application name identifierSPLASH_SKIP_WORKER: Skip background workers during developmentDB_CONNECTION_STRING: Override database connection stringSPLASH_SECRET: Secret key for authentication
Application URLs
- MVC Web App: https://localhost:44313/ (Development)
- Web API Host: https://localhost:44311/ (Development)
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
- Make changes to domain entities in SplashPage.Core
- Update corresponding DTOs in SplashPage.Application
- Modify data access in SplashPage.EntityFrameworkCore if needed
- Add/update controllers in SplashPage.Web.Mvc or SplashPage.Web.Host
- Run migrations if database schema changes
- Test both MVC and API endpoints