No description
  • Python 99.1%
  • HTML 0.5%
  • Shell 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Alexander Siol 5d621383bb feat: retune shipped suggestion weights to 1/1/2/4
The default ranking now leans everyone-can-join (coverage at 4) and
deliberate intent (favorites at 2) instead of the historical
equal-weight formula — a developer baseline ('for now') to iterate on
with the debug-menu experiments. The old ranking survives as the
explicit vector 1/1/1/0 and stays pinned by test; score/order
expectations across the endpoint, scoring, and visibility suites moved
with the retune.
2026-09-30 23:47:50 +02:00
dev feat: the dev seeder also maintains the public Demo.1234 account 2026-09-26 22:29:28 +02:00
docs/decisions add cli "seed-users" command 2026-09-06 18:27:35 +02:00
migrations feat: app_meta key-value table (data freshness groundwork) 2026-09-30 21:20:04 +02:00
src/gw2suggest feat: retune shipped suggestion weights to 1/1/2/4 2026-09-30 23:47:50 +02:00
tests feat: retune shipped suggestion weights to 1/1/2/4 2026-09-30 23:47:50 +02:00
.gitignore gitignore Claude Code settings 2026-02-17 23:30:34 +01:00
AGENTS.md feat: retune shipped suggestion weights to 1/1/2/4 2026-09-30 23:47:50 +02:00
alembic.ini Fix .env handling 2026-02-15 21:43:02 +01:00
IDEAS.md allow excluding categories from suggestions 2026-02-22 17:47:31 +01:00
LICENSE Initial commit 2026-02-15 00:39:54 +01:00
opencode.json refactor agents instructions into generic format for opencode 2026-09-10 00:06:43 +02:00
pyproject.toml refactor: hash passwords with argon2-cffi directly, dropping passlib 2026-09-24 22:21:16 +02:00
README.md reformat with 120-line length limit 2026-09-06 18:49:15 +02:00
uv.lock refactor: hash passwords with argon2-cffi directly, dropping passlib 2026-09-24 22:21:16 +02:00

GW2 Suggest API

GW2 Suggest is a companion web application for Guild Wars 2 that helps groups of players find achievements to tackle together.

Tech Stack

  • FastAPI: Web framework.
  • SQLAlchemy 2.0: ORM (using async support).
  • Alembic: Database migrations.
  • Pydantic v2: Data validation and settings.
  • Celery: Background tasks.
  • sqladmin: Admin interface.
  • SQLite: Default development database.

Getting Started

Prerequisites

  • Python 3.13+
  • uv (recommended)

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd gw2suggest-api
    
  2. Install dependencies:

    uv sync
    

Running the Application

  1. Start the development server:

    uv run uvicorn gw2suggest.main:app --reload
    
  2. Start the Celery worker (requires Redis):

    # In a new terminal
    $env:PYTHONPATH="src"
    uv run celery -A gw2suggest.celery_app worker --loglevel=info
    

The API will be available at http://127.0.0.1:8000. Swagger documentation: http://127.0.0.1:8000/docs.

Database Migrations

Apply migrations to your local SQLite database:

uv run alembic upgrade head

Running Tests

uv run pytest

Linting and Formatting

uv run ruff check .
uv run ruff format .

Manual Testing with .http file

You can use tests/test_main.http for quick manual testing of the endpoints. This file is compatible with:

  • PyCharm: Built-in HTTP Client. Open the file and click the green "Run" arrow next to requests.
  • VS Code: Install the REST Client extension to execute requests directly from the editor.
  • JetBrains IDEs: Any JetBrains IDE (IntelliJ, WebStorm, etc.) supports this format out of the box.

Documentation

See AGENTS.md for detailed development guidelines and best practices.