2.3 KiB
2.3 KiB
Development Environment Recommendations
This stack is most maintainable when the dev environment is repeatable and configuration is centralized. The current scripts assume Ubuntu 16.04 and hard-coded dependencies. The goal here is to make the environment predictable without touching the protocol or rewriting core services.
Key recommendations:
- Standardize the dev workflow with containers (prefer
docker-compose). - Centralize ports, credentials, and paths into a single
.envfile. - Provide a single entrypoint script to build/start/stop/log services.
- Keep database and service initialization scripted and idempotent.
Focused Plan (Maintainability Only)
Phase 1: Audit and Baseline (1–3 days)
- Inventory the current scripts and dependencies in
hearthmod/. - Confirm service ports and startup order (gameserver → lobbyserver → web).
- Capture required Couchbase buckets and data seed steps.
Phase 2: Repeatable Local Environment (1–2 weeks)
- Add
docker-compose.ymlto orchestrate Couchbase, gameserver, lobbyserver, and web services. - Add
.env.examplefor all required configuration values. - Create a single
./devor./scripts/dev.shentrypoint:dev build(build C services and web assets)dev up(start all services)dev down(stop services)dev logs(tail logs)
Phase 3: Configuration Cleanup (1–2 weeks)
- Replace hard-coded ports and credentials with env-configured values.
- Add a minimal config loader in
hm_weband in C servers (config file or env). - Update nginx config to use env-substituted paths.
Phase 4: Minimal Tests + Docs (1 week)
- Add a simple smoke test script that validates service ports and Couchbase connectivity.
- Document the workflow in
README-dev.mdand update top-level README with a pointer.
Deliverables Checklist
docker-compose.ymlwith defined services and volumes.env.examplewith required config variables- A single dev entrypoint script
- Updated docs (this file) and a quick-start section
Non-Goals (Intentionally Deferred)
- Updating Hearthstone protocol compatibility
- Rewriting the database or switching away from Couchbase
- Migrating C services to a different language
If you want, I can start by drafting the docker-compose.yml and a dev script
tailored to the current repo layout.