88a82b1e4e125a39e3ad27195d83a48e7ddb9dfb
Move completed change to archive (2025-11-19-add-initial-readme) and create project-documentation specification with 4 requirements for README maintenance. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Clubber
A toolset for managing members of non-profit societies (Vereine) with AI-powered administration.
Overview
Clubber provides a GraphQL API for member management combined with an MCP (Model Context Protocol) server that enables AI assistants to help with society administration tasks.
Current Status: Early development - OpenSpec documentation and project structure in place.
Architecture
The system consists of two main components:
-
GraphQL API - Core backend for member data management
- Built with FastAPI and Strawberry GraphQL
- Database-agnostic design (SQLite for development, PostgreSQL for production)
- SQLAlchemy 2.0 ORM with async support
-
MCP Server - AI assistant integration layer
- Connects to the GraphQL API
- Provides tools for AI agents to manage society operations
- Service account authentication
Tech Stack
- Python 3.11+ - Primary language
- uv - Fast package and project manager
- FastAPI - Async web framework
- Strawberry GraphQL - Type-safe GraphQL with Python type hints
- SQLAlchemy 2.0 - Database ORM
- Alembic - Database migrations
Project Structure
clubber/
├── openspec/ # Specification-driven development
│ ├── project.md # Project conventions and context
│ ├── specs/ # Current specifications
│ └── changes/ # Change proposals
├── CLAUDE.md # AI assistant instructions
└── README.md # This file
Getting Started
Prerequisites
- Python 3.11 or higher
- uv package manager
Setup
# Clone the repository
git clone ssh://git@codeberg.org/gurix/clubber.git
cd clubber
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Set up the project (when implemented)
# uv venv
# uv pip install -e .
Development Workflow
This project uses OpenSpec for specification-driven development:
- Review existing specs in
openspec/specs/ - Create change proposals in
openspec/changes/before implementing features - Validate proposals with
openspec validate --strict - Implement changes following the proposal
- Archive completed changes after deployment
See openspec/AGENTS.md for detailed workflow instructions.
Working with Git Worktrees
We use git worktrees for parallel development:
# Create a worktree for a feature branch
git worktree add ../clubber-feature-name feature/feature-name
# Work in the worktree
cd ../clubber-feature-name
# Remove worktree after merge
git worktree remove ../clubber-feature-name
Contributing
- Read
openspec/project.mdfor project conventions - For new features, create an OpenSpec proposal first
- Follow the coding style (Black, isort, ruff)
- Write tests for new functionality
- Use conventional commits (
feat:,fix:,docs:, etc.)
License
The MIT License
Contact
Markus Graf - info@markusgraf.ch
Acknowledgments
Built with support from:
Languages
Python
70.2%
JavaScript
29%
Mako
0.8%