Files
Code_of_Conquest/api
Phillip Tarrant 30c3b800e6 feat(api): add luck (LUK) stat to character system
Add new Luck stat to the character stats system with class-specific values:
- Assassin: 12 (highest - critical specialists)
- Luminary: 11 (divine favor)
- Wildstrider/Lorekeeper: 10 (average)
- Arcanist/Oathkeeper: 9 (modest)
- Vanguard: 8 (default - relies on strength)
- Necromancer: 7 (lowest - dark arts cost)

Changes:
- Add luck field to Stats dataclass with default of 8
- Add LUCK to StatType enum
- Update all 8 class YAML files with luck values
- Display LUK in character panel (play page) and detail page
- Update DATA_MODELS.md documentation

Backward compatible: existing characters without luck default to 8.
2025-11-26 12:27:18 -06:00
..
2025-11-24 23:10:55 -06:00
2025-11-24 23:10:55 -06:00
2025-11-24 23:10:55 -06:00
2025-11-24 23:10:55 -06:00
2025-11-24 23:10:55 -06:00
2025-11-24 23:10:55 -06:00
2025-11-24 23:10:55 -06:00
2025-11-24 23:10:55 -06:00
2025-11-24 23:10:55 -06:00

Code of Conquest - API Backend

Flask-based REST API backend for Code of Conquest, an AI-powered D&D-style game.

Overview

This is the API backend component of Code of Conquest. It provides:

  • RESTful API endpoints for game functionality
  • Business logic and game mechanics
  • Database operations (Appwrite)
  • AI integration (Claude, Replicate)
  • Background job processing (RQ + Redis)
  • Authentication and authorization

Architecture

Tech Stack:

  • Framework: Flask 3.x
  • Database: Appwrite (NoSQL)
  • Job Queue: RQ (Redis Queue)
  • Cache: Redis
  • AI: Anthropic Claude, Replicate
  • Logging: Structlog
  • WSGI Server: Gunicorn

Key Components:

  • /app/api - API endpoint blueprints
  • /app/models - Data models (dataclasses)
  • /app/services - Business logic and external integrations
  • /app/utils - Helper functions
  • /app/tasks - Background job handlers
  • /app/data - Game data (YAML files)

Setup

Prerequisites

  • Python 3.11+
  • Redis server
  • Appwrite instance (cloud or self-hosted)

Installation

  1. Create virtual environment:
python3 -m venv venv
source venv/bin/activate
  1. Install dependencies:
pip install -r requirements.txt
  1. Configure environment:
cp .env.example .env
# Edit .env with your credentials
  1. Initialize database:
python scripts/init_database.py

Running Locally

Development mode:

# Make sure Redis is running
docker-compose up -d

# Activate virtual environment
source venv/bin/activate

# Set environment
export FLASK_ENV=development

# Run development server
python wsgi.py

The API will be available at http://localhost:5000

Production mode:

gunicorn --bind 0.0.0.0:5000 --workers 4 wsgi:app

Configuration

Environment-specific configs are in /config:

  • development.yaml - Local development settings
  • production.yaml - Production settings

Key settings:

  • Server: Port, workers
  • Redis: Connection settings
  • RQ: Queue configuration
  • AI: Model settings, rate limits
  • Auth: Session, password requirements
  • CORS: Allowed origins

API Documentation

See API_REFERENCE.md for complete endpoint documentation.

Base URL

  • Development: http://localhost:5000
  • Production: https://api.codeofconquest.com

Authentication

Uses Appwrite session-based authentication with HTTP-only cookies.

Response Format

All endpoints return standardized JSON responses:

{
  "app": "Code of Conquest",
  "version": "0.1.0",
  "status": 200,
  "timestamp": "2025-01-15T10:30:00Z",
  "result": {...},
  "error": null
}

Testing

Run tests with pytest:

# Activate virtual environment
source venv/bin/activate

# Run all tests
pytest

# Run with coverage
pytest --cov=app tests/

# Run specific test file
pytest tests/test_character.py

Background Jobs

The API uses RQ for background processing:

Start RQ worker:

rq worker ai_tasks combat_tasks marketplace_tasks --url redis://localhost:6379

Monitor jobs:

rq info --url redis://localhost:6379

Directory Structure

api/
├── app/                    # Application code
│   ├── api/               # API endpoint blueprints
│   ├── models/            # Data models
│   ├── services/          # Business logic
│   ├── utils/             # Utilities
│   ├── tasks/             # Background jobs
│   ├── ai/                # AI integration
│   ├── game_logic/        # Game mechanics
│   └── data/              # Game data (YAML)
├── config/                # Configuration files
├── tests/                 # Test suite
├── scripts/               # Utility scripts
├── logs/                  # Application logs
├── docs/                  # API documentation
├── requirements.txt       # Python dependencies
├── wsgi.py               # WSGI entry point
├── docker-compose.yml    # Redis service
└── .env.example          # Environment template

Development

See CLAUDE.md in the project root for:

  • Coding standards
  • Development workflow
  • Project structure guidelines
  • Git conventions

Deployment

See DEPLOYMENT.md for production deployment instructions.

  • Public Web: /public_web - Traditional web frontend
  • Godot Client: /godot_client - Native game client

Both frontends consume this API backend.

License

Proprietary - All rights reserved