docs: add initial README and OpenSpec proposal
Add comprehensive README.md documenting project purpose, architecture, tech stack, and development workflow. Includes OpenSpec proposal (add-initial-readme) with project documentation specification. The README describes current state only (early development phase) and serves as entry point for developers and AI assistants. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
# 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:
|
||||
|
||||
1. **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
|
||||
|
||||
2. **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](https://github.com/astral-sh/uv) package manager
|
||||
|
||||
### Setup
|
||||
|
||||
```bash
|
||||
# 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](https://openspec.dev) for specification-driven development:
|
||||
|
||||
1. **Review existing specs** in `openspec/specs/`
|
||||
2. **Create change proposals** in `openspec/changes/` before implementing features
|
||||
3. **Validate proposals** with `openspec validate --strict`
|
||||
4. **Implement changes** following the proposal
|
||||
5. **Archive completed changes** after deployment
|
||||
|
||||
See `openspec/AGENTS.md` for detailed workflow instructions.
|
||||
|
||||
### Working with Git Worktrees
|
||||
|
||||
We use git worktrees for parallel development:
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
1. Read `openspec/project.md` for project conventions
|
||||
2. For new features, create an OpenSpec proposal first
|
||||
3. Follow the coding style (Black, isort, ruff)
|
||||
4. Write tests for new functionality
|
||||
5. Use conventional commits (`feat:`, `fix:`, `docs:`, etc.)
|
||||
|
||||
## License
|
||||
|
||||
The MIT License
|
||||
|
||||
## Contact
|
||||
|
||||
Markus Graf - [info@markusgraf.ch](mailto:info@markusgraf.ch)
|
||||
|
||||
## Acknowledgments
|
||||
|
||||
Built with support from:
|
||||
- [Strawberry GraphQL](https://strawberry.rocks)
|
||||
- [FastAPI](https://fastapi.tiangolo.com)
|
||||
- [OpenSpec](https://openspec.dev)
|
||||
@@ -0,0 +1,16 @@
|
||||
# Add Initial README
|
||||
|
||||
## Why
|
||||
The project currently has no README.md file. According to `openspec/project.md`, we maintain a README.md as the primary project documentation and entry point for developers and AI assistants. A README is essential for anyone discovering this repository on Codeberg.
|
||||
|
||||
## What Changes
|
||||
- Add README.md to project root describing current state
|
||||
- Document the project's purpose and vision
|
||||
- Explain OpenSpec-based development workflow
|
||||
- Provide setup instructions for contributors
|
||||
- **Note**: README describes *current* state only, not planned features
|
||||
|
||||
## Impact
|
||||
- Affected specs: project-documentation (new capability)
|
||||
- Affected code: None (documentation only)
|
||||
- No breaking changes
|
||||
@@ -0,0 +1,34 @@
|
||||
# Project Documentation Specification
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: README File
|
||||
The project root SHALL contain a README.md file that serves as the primary entry point for developers and AI assistants.
|
||||
|
||||
#### Scenario: Repository discovery
|
||||
- **WHEN** a developer or AI assistant discovers the repository
|
||||
- **THEN** they can read README.md to understand project purpose and current state
|
||||
|
||||
### Requirement: Current State Documentation
|
||||
The README.md SHALL accurately describe only the current implementation state, not planned features.
|
||||
|
||||
#### Scenario: Accurate project status
|
||||
- **WHEN** reading the README.md
|
||||
- **THEN** it reflects what is actually implemented
|
||||
- **AND** does not promise or describe unimplemented features
|
||||
|
||||
### Requirement: Getting Started Guide
|
||||
The README.md SHALL include instructions for contributors to get started with development.
|
||||
|
||||
#### Scenario: New contributor onboarding
|
||||
- **WHEN** a new contributor wants to start developing
|
||||
- **THEN** README.md provides clear setup steps
|
||||
- **AND** explains the OpenSpec-based workflow
|
||||
|
||||
### Requirement: OpenSpec Reference
|
||||
The README.md SHALL reference the OpenSpec documentation structure for detailed specifications.
|
||||
|
||||
#### Scenario: Finding detailed specs
|
||||
- **WHEN** a developer needs detailed technical specifications
|
||||
- **THEN** README.md directs them to the `openspec/` directory
|
||||
- **AND** explains how to read and create proposals
|
||||
@@ -0,0 +1,13 @@
|
||||
# Implementation Tasks
|
||||
|
||||
## 1. Documentation
|
||||
- [x] 1.1 Draft README.md content reflecting current project state
|
||||
- [x] 1.2 Include project overview and purpose
|
||||
- [x] 1.3 Document OpenSpec workflow for contributors
|
||||
- [x] 1.4 Add getting started section for contributors
|
||||
- [x] 1.5 Include license and contact information
|
||||
- [x] 1.6 Review README.md for accuracy against project.md
|
||||
|
||||
## 2. Validation
|
||||
- [x] 2.1 Verify OpenSpec validation passes
|
||||
- [x] 2.2 Ensure README.md aligns with openspec/project.md conventions
|
||||
Reference in New Issue
Block a user