diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8aa6685
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,24 @@
+# .NET
+bin/
+obj/
+out/
+*.user
+*.suo
+*.userosscache
+.vs/
+
+# Godot 4
+.import/
+export_presets.cfg
+*.translation
+# Mono build artifacts if you enable C# on the client later
+client/.godot/
+
+# OS / editor
+.DS_Store
+*.swp
+.idea/
+
+# Local secrets
+.env
+.env.*.local
diff --git a/NeonSprawl.sln b/NeonSprawl.sln
new file mode 100644
index 0000000..1ae92d7
--- /dev/null
+++ b/NeonSprawl.sln
@@ -0,0 +1,27 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "server", "server", "{8683E7E4-B4D9-4001-8E99-DA987A03A73D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NeonSprawl.Server", "server/NeonSprawl.Server/NeonSprawl.Server.csproj", "{098FCB1C-4A31-4E36-8D9C-1F1CEECDFF50}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {098FCB1C-4A31-4E36-8D9C-1F1CEECDFF50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {098FCB1C-4A31-4E36-8D9C-1F1CEECDFF50}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {098FCB1C-4A31-4E36-8D9C-1F1CEECDFF50}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {098FCB1C-4A31-4E36-8D9C-1F1CEECDFF50}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(NestedProjects) = postSolution
+ {098FCB1C-4A31-4E36-8D9C-1F1CEECDFF50} = {8683E7E4-B4D9-4001-8E99-DA987A03A73D}
+ EndGlobalSection
+EndGlobal
diff --git a/README.md b/README.md
index 1cfb03b..46c3cac 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-# Untitled Cyberpunk MMO
+# Neon Sprawl
-Planning and vision for a classless, crafting-focused cyberpunk MMORPG (solo-dev scope). See [`cyberpunk_mmo_vision_86a57ef3.plan.md`](cyberpunk_mmo_vision_86a57ef3.plan.md).
+**Neon Sprawl** is the working title for a classless, crafting-focused sci-fi / cyberpunk MMORPG (solo-dev scope). Product intent and phase gates: [`neon_sprawl_vision.plan.md`](neon_sprawl_vision.plan.md).
## Tech stack (locked)
@@ -15,3 +15,33 @@ Full rationale and constraints: [`docs/architecture/tech_stack.md`](docs/archite
## Decomposition
Epic-level breakdown: [`docs/decomposition/README.md`](docs/decomposition/README.md).
+
+## Repository layout (prototype scaffold)
+
+| Path | Purpose |
+|------|---------|
+| [`NeonSprawl.sln`](NeonSprawl.sln) | .NET solution |
+| [`server/NeonSprawl.Server/`](server/NeonSprawl.Server/) | ASP.NET Core game server |
+| [`client/`](client/) | Godot 4.x project (import `project.godot`) |
+| [`content/`](content/) | JSON data + JSON Schema (`skills/`, `schemas/`) |
+| [`docker-compose.yml`](docker-compose.yml) | Local **PostgreSQL** (`docker compose up -d`) |
+
+### Run the server
+
+```bash
+cd server/NeonSprawl.Server && dotnet run
+```
+
+Then open `http://localhost:5253/health` (port from `launchSettings.json`).
+
+### Run Postgres locally
+
+```bash
+docker compose up -d
+```
+
+Connection (dev): host `localhost`, port `5432`, database `neon_sprawl`, user `neon_sprawl`, password `neon_sprawl_dev`.
+
+### Run the client
+
+Open the [`client/`](client/) folder in **Godot 4.2+** and run the main scene (see [`client/README.md`](client/README.md)).
diff --git a/client/README.md b/client/README.md
new file mode 100644
index 0000000..4e8e4a5
--- /dev/null
+++ b/client/README.md
@@ -0,0 +1,12 @@
+# Neon Sprawl — Godot client
+
+Open this **`client/`** directory as a project in **Godot 4.2+** (4.x recommended).
+
+- Main scene: `scenes/main.tscn` (bootstrap `scripts/main.gd`).
+- Networking will use **WebSocket** or **TCP** to the C# server; authoritative logic stays on the server per [`docs/architecture/tech_stack.md`](../docs/architecture/tech_stack.md).
+
+## First run
+
+1. Install [Godot 4.x](https://godotengine.org/download).
+2. In the project manager, **Import** and select `client/project.godot`.
+3. Press **F5** to run the main scene.
diff --git a/client/icon.svg b/client/icon.svg
new file mode 100644
index 0000000..da3561f
--- /dev/null
+++ b/client/icon.svg
@@ -0,0 +1,4 @@
+
diff --git a/client/project.godot b/client/project.godot
new file mode 100644
index 0000000..7d439a8
--- /dev/null
+++ b/client/project.godot
@@ -0,0 +1,20 @@
+; Godot 4.x project — import this folder in the Godot project manager.
+
+config_version=5
+
+[application]
+
+config/name="Neon Sprawl"
+config/description="Neon Sprawl — prototype client (isometric MMO; planning docs in repo root)."
+run/main_scene="res://scenes/main.tscn"
+config/features=PackedStringArray("4.2", "Forward Plus")
+config/icon="res://icon.svg"
+
+[display]
+
+window/size/viewport_width=1280
+window/size/viewport_height=720
+
+[rendering]
+
+textures/canvas_textures/default_texture_filter=0
diff --git a/client/scenes/main.tscn b/client/scenes/main.tscn
new file mode 100644
index 0000000..39b869a
--- /dev/null
+++ b/client/scenes/main.tscn
@@ -0,0 +1,6 @@
+[gd_scene load_steps=2 format=3 uid="uid://cyberpunkmmo_main"]
+
+[ext_resource type="Script" path="res://scripts/main.gd" id="1_main"]
+
+[node name="Main" type="Node3D"]
+script = ExtResource("1_main")
diff --git a/client/scripts/main.gd b/client/scripts/main.gd
new file mode 100644
index 0000000..e45a4d4
--- /dev/null
+++ b/client/scripts/main.gd
@@ -0,0 +1,4 @@
+extends Node3D
+
+func _ready() -> void:
+ print("Neon Sprawl client bootstrap (Godot). Connect to game server TBD.")
diff --git a/content/README.md b/content/README.md
new file mode 100644
index 0000000..a16b047
--- /dev/null
+++ b/content/README.md
@@ -0,0 +1,10 @@
+# Content data
+
+Data-driven definitions (skills, items, recipes, quests) validated in CI with **JSON Schema**.
+
+| Path | Purpose |
+|------|---------|
+| [`schemas/`](schemas/) | JSON Schema files (`*.schema.json`) |
+| [`skills/`](skills/) | Skill catalogs and related tables |
+
+Server load path and hot-reload policy are TBD; keep files versioned here as the source of truth.
diff --git a/content/schemas/skill-def.schema.json b/content/schemas/skill-def.schema.json
new file mode 100644
index 0000000..9a21a8d
--- /dev/null
+++ b/content/schemas/skill-def.schema.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://neon-sprawl.local/schemas/skill-def.json",
+ "title": "SkillDef",
+ "type": "object",
+ "additionalProperties": false,
+ "required": ["id", "category", "displayName"],
+ "properties": {
+ "id": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9_]*$"
+ },
+ "category": {
+ "type": "string",
+ "enum": ["gathering", "crafting", "combat", "exploration", "utility", "social"]
+ },
+ "displayName": { "type": "string", "minLength": 1 }
+ }
+}
diff --git a/content/skills/prototype_skills.json b/content/skills/prototype_skills.json
new file mode 100644
index 0000000..bf55cbc
--- /dev/null
+++ b/content/skills/prototype_skills.json
@@ -0,0 +1,20 @@
+{
+ "schemaVersion": 1,
+ "skills": [
+ {
+ "id": "gathering_scrap",
+ "category": "gathering",
+ "displayName": "Scrap Salvaging"
+ },
+ {
+ "id": "crafting_engineering",
+ "category": "crafting",
+ "displayName": "Street Engineering"
+ },
+ {
+ "id": "combat_ballistics",
+ "category": "combat",
+ "displayName": "Ballistics"
+ }
+ ]
+}
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..d060f15
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,21 @@
+# Local PostgreSQL for prototype / dev. Start: docker compose up -d
+services:
+ postgres:
+ image: postgres:16-alpine
+ container_name: neon-sprawl-postgres
+ environment:
+ POSTGRES_USER: neon_sprawl
+ POSTGRES_PASSWORD: neon_sprawl_dev
+ POSTGRES_DB: neon_sprawl
+ ports:
+ - "5432:5432"
+ volumes:
+ - neon_sprawl_pgdata:/var/lib/postgresql/data
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U neon_sprawl -d neon_sprawl"]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+
+volumes:
+ neon_sprawl_pgdata:
diff --git a/docs/architecture/tech_stack.md b/docs/architecture/tech_stack.md
index fd5a0e7..3507571 100644
--- a/docs/architecture/tech_stack.md
+++ b/docs/architecture/tech_stack.md
@@ -105,5 +105,5 @@ Revisit this document if:
## Related docs
-- [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../cyberpunk_mmo_vision_86a57ef3.plan.md) — product locks and phase gates
+- [`neon_sprawl_vision.plan.md`](../neon_sprawl_vision.plan.md) — product locks and phase gates
- [`docs/decomposition/README.md`](../decomposition/README.md) — epic/module decomposition
diff --git a/docs/decomposition/README.md b/docs/decomposition/README.md
index f0af86d..612574b 100644
--- a/docs/decomposition/README.md
+++ b/docs/decomposition/README.md
@@ -2,7 +2,7 @@
This workspace contains detailed planning artifacts derived from the finalized master plan:
-- Source of truth: `cyberpunk_mmo_vision_86a57ef3.plan.md`
+- Source of truth: [`neon_sprawl_vision.plan.md`](../neon_sprawl_vision.plan.md)
- Tech stack baseline: [`docs/architecture/tech_stack.md`](../architecture/tech_stack.md)
- Scope here: executable decomposition (epics, modules, milestones)
diff --git a/docs/decomposition/epics/_epic_template.md b/docs/decomposition/epics/_epic_template.md
index 889497f..d8f0f3a 100644
--- a/docs/decomposition/epics/_epic_template.md
+++ b/docs/decomposition/epics/_epic_template.md
@@ -2,7 +2,7 @@
## Source Anchors
-- Master epic reference: `cyberpunk_mmo_vision_86a57ef3.plan.md`
+- Master epic reference: `neon_sprawl_vision.plan.md`
- Related modules: ``
## Objective
diff --git a/docs/decomposition/epics/epic_01_core_player_runtime.md b/docs/decomposition/epics/epic_01_core_player_runtime.md
index e4e3877..a77e67e 100644
--- a/docs/decomposition/epics/epic_01_core_player_runtime.md
+++ b/docs/decomposition/epics/epic_01_core_player_runtime.md
@@ -2,7 +2,7 @@
## Source Anchors
-- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 1
+- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 1
- Related modules: E1.M1, E1.M2, E1.M3, E1.M4
## Ownership and success (Level 1)
diff --git a/docs/decomposition/epics/epic_02_classless_progression.md b/docs/decomposition/epics/epic_02_classless_progression.md
index 36442d3..372a71b 100644
--- a/docs/decomposition/epics/epic_02_classless_progression.md
+++ b/docs/decomposition/epics/epic_02_classless_progression.md
@@ -2,7 +2,7 @@
## Source Anchors
-- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 2
+- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 2
- Related modules: E2.M1, E2.M2, E2.M3, E2.M4
## Ownership and success (Level 1)
diff --git a/docs/decomposition/epics/epic_03_crafting_economy.md b/docs/decomposition/epics/epic_03_crafting_economy.md
index 4c68350..2fc18c3 100644
--- a/docs/decomposition/epics/epic_03_crafting_economy.md
+++ b/docs/decomposition/epics/epic_03_crafting_economy.md
@@ -2,7 +2,7 @@
## Source Anchors
-- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 3
+- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 3
- Related modules: E3.M1, E3.M2, E3.M3, E3.M4, E3.M5
## Ownership and success (Level 1)
diff --git a/docs/decomposition/epics/epic_04_world_topology.md b/docs/decomposition/epics/epic_04_world_topology.md
index 356f137..f72db9d 100644
--- a/docs/decomposition/epics/epic_04_world_topology.md
+++ b/docs/decomposition/epics/epic_04_world_topology.md
@@ -2,7 +2,7 @@
## Source Anchors
-- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 4
+- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 4
- Related modules: E4.M1, E4.M2, E4.M3, E4.M4
## Ownership and success (Level 1)
diff --git a/docs/decomposition/epics/epic_05_pve_combat.md b/docs/decomposition/epics/epic_05_pve_combat.md
index 93e288e..26962a8 100644
--- a/docs/decomposition/epics/epic_05_pve_combat.md
+++ b/docs/decomposition/epics/epic_05_pve_combat.md
@@ -2,7 +2,7 @@
## Source Anchors
-- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 5
+- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 5
- Related modules: E5.M1, E5.M2, E5.M3, E5.M4
## Ownership and success (Level 1)
diff --git a/docs/decomposition/epics/epic_06_pvp_security.md b/docs/decomposition/epics/epic_06_pvp_security.md
index 5d6ce5a..928a110 100644
--- a/docs/decomposition/epics/epic_06_pvp_security.md
+++ b/docs/decomposition/epics/epic_06_pvp_security.md
@@ -2,7 +2,7 @@
## Source Anchors
-- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 6
+- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 6
- Related modules: E6.M1, E6.M2, E6.M3, E6.M4
## Ownership and success (Level 1)
diff --git a/docs/decomposition/epics/epic_07_quest_faction.md b/docs/decomposition/epics/epic_07_quest_faction.md
index aa0b6b2..9791736 100644
--- a/docs/decomposition/epics/epic_07_quest_faction.md
+++ b/docs/decomposition/epics/epic_07_quest_faction.md
@@ -2,7 +2,7 @@
## Source Anchors
-- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 7
+- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 7
- Related modules: E7.M1, E7.M2, E7.M3, E7.M4
## Ownership and success (Level 1)
diff --git a/docs/decomposition/epics/epic_08_social_guild.md b/docs/decomposition/epics/epic_08_social_guild.md
index 2796408..16d8bf9 100644
--- a/docs/decomposition/epics/epic_08_social_guild.md
+++ b/docs/decomposition/epics/epic_08_social_guild.md
@@ -2,7 +2,7 @@
## Source Anchors
-- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 8
+- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 8
- Related modules: E8.M1, E8.M2, E8.M3, E8.M4
## Ownership and success (Level 1)
diff --git a/docs/decomposition/epics/epic_09_liveops_integrity.md b/docs/decomposition/epics/epic_09_liveops_integrity.md
index 82d9786..c4a450c 100644
--- a/docs/decomposition/epics/epic_09_liveops_integrity.md
+++ b/docs/decomposition/epics/epic_09_liveops_integrity.md
@@ -2,7 +2,7 @@
## Source Anchors
-- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 9
+- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 9
- Related modules: E9.M1, E9.M2, E9.M3, E9.M4
## Ownership and success (Level 1)
diff --git a/cyberpunk_mmo_vision_86a57ef3.plan.md b/neon_sprawl_vision.plan.md
similarity index 98%
rename from cyberpunk_mmo_vision_86a57ef3.plan.md
rename to neon_sprawl_vision.plan.md
index bd753a8..9a8e8c8 100644
--- a/cyberpunk_mmo_vision_86a57ef3.plan.md
+++ b/neon_sprawl_vision.plan.md
@@ -1,6 +1,6 @@
---
-name: Cyberpunk MMO Vision
-overview: Create a 50,000-foot planning document for a sci-fi/cyberpunk MMORPG inspired by RuneScape, focused on classless progression and deep crafting, with optional PvP and questing.
+name: Neon Sprawl Vision
+overview: Create a 50,000-foot planning document for Neon Sprawl, a sci-fi/cyberpunk MMORPG inspired by RuneScape, focused on classless progression and deep crafting, with optional PvP and questing.
todos:
- id: lock-critical-decisions
content: Combat model and world topology are locked; remaining decision is progression pace.
@@ -20,11 +20,11 @@ todos:
isProject: false
---
-# Cyberpunk MMORPG 50,000-Foot Plan
+# Neon Sprawl — 50,000-Foot Plan
## Vision and Product Intent
-Build a long-lived online world that captures the freedom and progression depth of RuneScape while delivering a distinct sci-fi/cyberpunk identity. The core player fantasy is to start as a low-tier citizen of a mega-city ecosystem and grow into a high-impact operator through any combination of skills, professions, social play, and questlines.
+**Neon Sprawl** is a long-lived online world that captures the freedom and progression depth of RuneScape while delivering a distinct sci-fi/cyberpunk identity. The core player fantasy is to start as a low-tier citizen of a mega-city ecosystem and grow into a high-impact operator through any combination of skills, professions, social play, and questlines.
## Delivery Model Constraint (Locked)
diff --git a/server/NeonSprawl.Server/NeonSprawl.Server.csproj b/server/NeonSprawl.Server/NeonSprawl.Server.csproj
new file mode 100644
index 0000000..87441a4
--- /dev/null
+++ b/server/NeonSprawl.Server/NeonSprawl.Server.csproj
@@ -0,0 +1,11 @@
+
+
+
+ net8.0
+ enable
+ enable
+ NeonSprawl.Server
+ NeonSprawl.Server
+
+
+
diff --git a/server/NeonSprawl.Server/Program.cs b/server/NeonSprawl.Server/Program.cs
new file mode 100644
index 0000000..ddbd094
--- /dev/null
+++ b/server/NeonSprawl.Server/Program.cs
@@ -0,0 +1,14 @@
+var builder = WebApplication.CreateBuilder(args);
+var app = builder.Build();
+
+app.MapGet("/", () => Results.Text(
+ "Neon Sprawl game server — GET /health for JSON status.",
+ "text/plain"));
+
+app.MapGet("/health", () => Results.Json(new
+{
+ status = "ok",
+ service = "NeonSprawl.Server",
+}));
+
+app.Run();
diff --git a/server/NeonSprawl.Server/Properties/launchSettings.json b/server/NeonSprawl.Server/Properties/launchSettings.json
new file mode 100644
index 0000000..0d1b63a
--- /dev/null
+++ b/server/NeonSprawl.Server/Properties/launchSettings.json
@@ -0,0 +1,29 @@
+{
+ "$schema": "http://json.schemastore.org/launchsettings.json",
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:45900",
+ "sslPort": 0
+ }
+ },
+ "profiles": {
+ "http": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": true,
+ "applicationUrl": "http://localhost:5253",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
diff --git a/server/NeonSprawl.Server/appsettings.Development.json b/server/NeonSprawl.Server/appsettings.Development.json
new file mode 100644
index 0000000..0c208ae
--- /dev/null
+++ b/server/NeonSprawl.Server/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ }
+}
diff --git a/server/NeonSprawl.Server/appsettings.json b/server/NeonSprawl.Server/appsettings.json
new file mode 100644
index 0000000..10f68b8
--- /dev/null
+++ b/server/NeonSprawl.Server/appsettings.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*"
+}
diff --git a/server/README.md b/server/README.md
new file mode 100644
index 0000000..8a756ac
--- /dev/null
+++ b/server/README.md
@@ -0,0 +1,17 @@
+# Game server (`NeonSprawl.Server`)
+
+ASP.NET Core **.NET 8** host for authoritative simulation (prototype: HTTP + health only).
+
+## Run
+
+```bash
+cd server/NeonSprawl.Server
+dotnet run
+```
+
+- Default URL is printed by Kestrel (see `Properties/launchSettings.json`, typically `http://localhost:5253`).
+- Check `GET /health` for a JSON heartbeat.
+
+## Solution
+
+From repo root: `dotnet build NeonSprawl.sln`