Stoxello Pulse – Windows Install


🧱 Architecture (Windows)

Browser
   ↓
Pulse.Web (ASP.NET / Blazor / Razor)
   ↓ HTTP(S)
Pulse.API (ASP.NET Core)
   ↓ EF Core
MySQL Server

You can run this with IIS or standalone using Kestrel. I’ll show both, but IIS is the most β€œWindows-native”.


1️⃣ Prerequisites (Install First)

βœ… Windows Requirements

  • Windows 10 / 11 / Server 2019 / 2022
  • Admin access

βœ… .NET Runtime (REQUIRED)

Pulse does not need the SDK in production β€” only the runtime.

Install:

  • .NET 8 or 9 ASP.NET Core Hosting Bundle

πŸ‘‰ https://dotnet.microsoft.com/download

This installs:

  • ASP.NET runtime
  • IIS integration
  • dotnet.exe runtime

Verify:

dotnet --list-runtimes

2️⃣ Install MySQL Server (Windows)

Image
Image
Image

Step 1: Download

πŸ‘‰ https://dev.mysql.com/downloads/installer/

Choose:

  • MySQL Installer (Community)

Step 2: Install Options

Select:

  • MySQL Server
  • MySQL Workbench
  • MySQL Shell (optional)

Step 3: Configuration

  • Auth method: Use Legacy Authentication (recommended for EF Core)
  • Port: 3306
  • Root password: SAVE THIS
  • Service Name: MySQL80
  • Startup: Automatic

Verify:

services.msc

Confirm MySQL80 is running.


3️⃣ Create Pulse Database

Open MySQL Workbench β†’ connect as root.

CREATE DATABASE pulse
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

CREATE USER 'pulse'@'localhost'
IDENTIFIED BY 'StrongPasswordHere';

GRANT ALL PRIVILEGES ON pulse.* TO 'pulse'@'localhost';
FLUSH PRIVILEGES;

4️⃣ Pulse.API Setup (Windows)

πŸ“ Recommended Folder

C:\Pulse\
 β”œβ”€β”€ api\
 β”‚   └── pulse.Api.dll
 β”œβ”€β”€ web\
 └── logs\

πŸ”§ appsettings.json (Pulse.API)

{
  "ConnectionStrings": {
    "PulseDb": "Server=localhost;Port=3306;Database=pulse;User=pulse;Password=StrongPasswordHere;"
  },
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://localhost:5001"
      }
    }
  }
}

β–Ά Test API (Manual)

cd C:\Pulse\api
dotnet pulse.Api.dll

Test:

http://localhost:5001/health

5️⃣ Apply Database Migrations (IMPORTANT)

Pulse must create tables before running fully.

If migrations are embedded (recommended):

dotnet pulse.Api.dll --migrate

Or if you ship EF tools internally:

dotnet ef database update

Verify tables exist in MySQL Workbench.


6️⃣ Pulse.Web Setup

πŸ”§ appsettings.json (Pulse.Web)

{
  "PulseApi": {
    "BaseUrl": "http://localhost:5001"
  }
}

β–Ά Test Web

cd C:\Pulse\web
dotnet pulse.Web.dll

Browse:

http://localhost:5000

7️⃣ IIS Deployment (Recommended)

Image
Image
Image

Step 1: Enable IIS

optionalfeatures.exe

Enable:

  • IIS
  • ASP.NET 4.8
  • .NET Extensibility
  • HTTP Redirect

Step 2: Application Pools

Create two pools:

  • Pulse.API
  • Pulse.Web

Settings:

  • .NET CLR: No Managed Code
  • Identity: ApplicationPoolIdentity

Step 3: IIS Sites

Pulse.API

  • Path: C:\Pulse\api
  • Port: 5001
  • App Pool: Pulse.API

Pulse.Web

  • Path: C:\Pulse\web
  • Port: 80
  • App Pool: Pulse.Web

web.config (Auto-Generated)

Make sure this exists in both folders:

<aspNetCore processPath="dotnet"
            arguments="pulse.Api.dll"
            hostingModel="InProcess" />

8️⃣ Firewall Rules

New-NetFirewallRule -DisplayName "Pulse Web" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "Pulse API" -Direction Inbound -Protocol TCP -LocalPort 5001 -Action Allow

9️⃣ Windows Services (Optional but Pro)

Instead of IIS, you can run both as Windows Services:

sc create PulseAPI binPath= "dotnet C:\Pulse\api\pulse.Api.dll"
sc create PulseWeb binPath= "dotnet C:\Pulse\web\pulse.Web.dll"

Then:

sc start PulseAPI
sc start PulseWeb

πŸ” Common Gotchas (Important)

βœ… MySQL uses utf8mb4
βœ… Use Legacy Authentication
βœ… AddDbContext must use UseMySql()
βœ… Migrations must run once
βœ… API must start before Web
βœ… IIS App Pool = No Managed Code


πŸš€ Recommended Production Ports

ComponentPort
Pulse.Web80 / 443
Pulse.API5001 (internal)
MySQL3306 (local only)

πŸ”š Final Result

  • Pulse.Web β†’ IIS β†’ Browser
  • Pulse.API β†’ IIS/Kestrel
  • MySQL β†’ Windows Service
  • Clean, stable, Windows-native setup