No description
Find a file
Заид Омар Медхат 38c7ff5e56
Some checks failed
Deploy / deploy (push) Has been cancelled
Add Albion Free Market parity roadmap
Full catalog of AFM's features with our current status (have/partial/
missing), a concrete first-phase plan (quality-aware pricing, price
history + EMV, arbitrage flipper, Black Market flipper), a prioritized
backlog toward fuller parity, and reference notes on how AFM is built.
Planning doc only — no code changes yet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 05:28:18 +05:00
.forgejo/workflows Client/server split, Postgres, auth, Windows agent, Docker deploy 2026-08-23 04:10:08 +05:00
agent Travel directions, agent resilience, opportunities clarity 2026-08-23 04:53:28 +05:00
docs Add Albion Free Market parity roadmap 2026-08-23 05:28:18 +05:00
server Backend caching + AODP refetch cooldown 2026-08-23 05:09:38 +05:00
shared Travel directions, agent resilience, opportunities clarity 2026-08-23 04:53:28 +05:00
web Client routing: per-tab URLs + state in query params 2026-08-23 05:16:41 +05:00
.dockerignore Client/server split, Postgres, auth, Windows agent, Docker deploy 2026-08-23 04:10:08 +05:00
.env f 2026-08-23 04:31:08 +05:00
.env.example f 2026-08-23 04:29:17 +05:00
.gitignore f 2026-08-23 04:31:08 +05:00
docker-compose.yml f 2026-08-23 04:29:17 +05:00
Dockerfile Client/server split, Postgres, auth, Windows agent, Docker deploy 2026-08-23 04:10:08 +05:00
package-lock.json Client routing: per-tab URLs + state in query params 2026-08-23 05:16:41 +05:00
package.json Client/server split, Postgres, auth, Windows agent, Docker deploy 2026-08-23 04:10:08 +05:00
README.md Client/server split, Postgres, auth, Windows agent, Docker deploy 2026-08-23 04:10:08 +05:00

Albion Economy Assistant

Tells you what to craft, refine, enchant, haul, and watch in Albion Online — using live market prices, the game's own recipe data, and your character's destiny board progress.

Architecture

Three deployable pieces plus a shared library:

  • server/ — Fastify + TypeScript API that also serves the web UI. Stores everything in a shared Postgres. Deployable (Docker) or run locally.
  • web/ — Vite + React UI (built and served by the server in production).
  • agent/ — a small Windows companion that runs on your gaming PC. It reads game-local data a deployed server can't see (world map, live market orders) and pushes it to the server over an authenticated API. See agent/README.md.
  • shared/ — world-map parsing + packet capture, reused by server and agent.
[ Your gaming PC ]                         [ Server (VPS / Forgejo deploy) ]
  Albion Online                              albion-economy container
  agent  ── HTTPS + API key ──►  /api/ingest/*   ├─ serves web UI
  (world map, market orders)                      └─ Postgres (shared, `backend` net)
                                             Nginx Proxy Manager (`proxy` net) → subdomain
  You ── browser ──────────────►  the same server (web UI, API key in browser)

Run locally (single machine)

Needs a Postgres to point at. Quick throwaway one:

docker run -d --name albion-pg -e POSTGRES_PASSWORD=pw -e POSTGRES_DB=albion -p 5432:5432 postgres:16-alpine
export DATABASE_URL=postgres://postgres:pw@127.0.0.1:5432/albion   # PowerShell: $env:DATABASE_URL=...
npm install
npm run gamedata     # download items/recipes into Postgres (first time)
npm run dev          # API on :4310, Vite UI on :5173

Open http://localhost:5173. With no ALBION_API_KEY set, the API is open (fine for localhost).

Deploy (Docker + Forgejo)

The repo ships a Dockerfile, docker-compose.yml, and .forgejo/workflows/deploy.yml.

  1. On the host, have your shared Postgres reachable on an external Docker network named backend, and Nginx Proxy Manager on proxy. Create the database: CREATE DATABASE albion;
  2. Add Forgejo Actions secrets: DATABASE_URL (e.g. postgres://albion:pw@postgres:5432/albion) and ALBION_API_KEY (a long random string).
  3. Push to master (or run the workflow manually). It builds the image and docker compose up -d. The container joins proxy + backend; point an NPM proxy host at albion-economy:4310 and assign your subdomain.
  4. First boot auto-downloads and parses game data into Postgres.

Locally you can mirror it: create .env from .env.example, ensure the proxy/backend networks exist, then docker compose up -d.

Security

  • ALBION_API_KEY is required in the compose file. Every /api/* route (except /api/health) needs Authorization: Bearer <key> (or ?apiKey=). The web UI prompts for it once and stores it in the browser; the agent sends it from its config.
  • Put it behind HTTPS via NPM. For extra safety, keep the subdomain access-listed or behind a private network — an API key is a floor, not a ceiling.

Pages

  • Opportunities — ranks every craft/refine/enchant for a city by profit: return rates (city bonuses + focus), station fees, taxes, and recursive buy-vs-craft input decisions. Sort by profit, ROI, or silver-per-focus. Uses your active character profile.
  • Travel Planner — safe-only vs all-zones routing (with red/black danger counts) over the real zone graph, plus a haul advisor ranking what to carry between cities by profit per weight.
  • Market Watch — price alert rules checked on an interval.
  • Character — destiny board profiles (mastery/spec per category) that drive focus costs and taxes.
  • Game Sniffer — status of firsthand price capture (when the server runs on your PC; otherwise use the agent).
  • Item Browser / Game Data / Settings — recipe explorer, patch-day refresh, server/proxy/game-path config.

Character & game-local data

There is no official API for character progress, so the Character page lets you enter destiny board levels by hand. The agent can also push world-map and market data from your PC. Capturing your own traffic is the SBI-tolerated technique (Albion Data Project style) — read-only, no memory reading, no injection.

After a game patch

  • Game Data page → re-download game data (or the agent/npm run gamedata).
  • Travel Planner → re-import the world map (or npm run agent -- world).
  • Balance constants (return rates, taxes, city bonuses) are editable via PUT /api/economy/config — config, not code.

Tests

npm test           # economy math (vitest); the engine is pure, no DB needed