No description
  • Python 99.7%
  • Mako 0.3%
Find a file
2026-04-03 00:42:47 +02:00
migrations calculate and store deprecated bits for achievements 2026-03-10 23:59:09 +01:00
src/gw2suggest fix mastery track/point ambiguity in progress sync 2026-04-03 00:42:47 +02:00
tests add manual testing hints 2026-03-11 00:38:40 +01:00
.gitignore gitignore Claude Code settings 2026-02-17 23:30:34 +01:00
AGENTS.md Initial commit 2026-02-15 00:39:54 +01:00
alembic.ini Fix .env handling 2026-02-15 21:43:02 +01:00
CLAUDE.md Trying out Claude Code instead of JetBrains Junie 2026-02-15 23:53:57 +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
pyproject.toml let claude fix code quality issues 2026-02-22 21:38:04 +01:00
README.md Initial commit 2026-02-15 00:39:54 +01:00
uv.lock optional sentry integration 2026-02-22 00:43:49 +01: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

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.