v1.0.0-rc.4
Implements both IndieAuth flows per W3C specification: - Authentication flow (response_type=id): Code redeemed at authorization endpoint, returns only user identity - Authorization flow (response_type=code): Code redeemed at token endpoint, returns access token Changes: - Authorization endpoint GET: Accept response_type=id (default) and code - Authorization endpoint POST: Handle code verification for authentication flow - Token endpoint: Validate response_type=code for authorization flow - Store response_type in authorization code metadata - Update metadata endpoint: response_types_supported=[code, id], code_challenge_methods_supported=[S256] The default behavior now correctly defaults to response_type=id when omitted, per IndieAuth spec section 5.2. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Gondulf IndieAuth Server
A self-hosted IndieAuth server implementation following the W3C IndieAuth specification. IndieAuth enables users to use their own domain as their identity when signing into third-party applications.
Features
- Full W3C IndieAuth specification compliance
- Client self-registration capability
- Built on OAuth 2.0 with PKCE support
- Simple, maintainable codebase
- Single administrator model
Requirements
- Python 3.10 or higher
- SQLite 3.35 or higher
- uv (for environment management)
Installation
1. Install uv
Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh
Using pip:
pip install uv
Verify installation:
uv --version
2. Clone the Repository
git clone <repository-url> gondulf
cd gondulf
3. Set Up Development Environment
# Create virtual environment
uv venv
# Install the project in development mode with all dependencies
uv pip install -e ".[dev,test]"
Usage
Running the Development Server
uv run uvicorn src.gondulf.main:app --reload --host 127.0.0.1 --port 8000
The server will be available at http://127.0.0.1:8000
Running Tests
# Run all tests
uv run pytest
# Run with coverage report
uv run pytest --cov=src/gondulf --cov-report=term-missing
# Run specific test categories
uv run pytest -m unit
uv run pytest -m integration
uv run pytest -m e2e
Code Quality Checks
# Linting
uv run ruff check .
# Type checking
uv run mypy src/gondulf
# Format code
uv run ruff format .
# Security scanning
uv run bandit -r src/gondulf
Development Workflow
All commands use uv run to execute within the project's virtual environment - no activation required.
Common commands:
uv run python script.py- Run a Python scriptuv run pytest- Run testsuv run ruff check .- Lint codeuv pip install package- Add a dependencyuv pip list- List installed packages
See /docs/standards/development-environment.md for detailed development environment documentation.
Project Structure
gondulf/
├── src/
│ └── gondulf/ # Main application code
│ └── __init__.py
├── tests/ # Test suite
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ └── e2e/ # End-to-end tests
├── docs/ # Documentation
│ ├── architecture/ # System architecture
│ ├── designs/ # Feature designs
│ ├── decisions/ # Architecture Decision Records
│ ├── standards/ # Coding and process standards
│ └── roadmap/ # Version planning
└── pyproject.toml # Project configuration
Documentation
- Architecture Overview:
/docs/architecture/overview.md - IndieAuth Protocol:
/docs/architecture/indieauth-protocol.md - Coding Standards:
/docs/standards/coding.md - Testing Standards:
/docs/standards/testing.md - Git Workflow:
/docs/standards/git.md
Contributing
This project follows strict architectural and development standards. Please review:
/docs/standards/coding.md- Coding conventions/docs/standards/testing.md- Testing requirements/docs/standards/git.md- Git workflow and commit format
All code must:
- Include comprehensive tests (minimum 80% coverage)
- Pass linting and type checking
- Follow conventional commits format
- Be reviewed before merging to main
License
MIT License - see LICENSE file for details
References
Description
Languages
Python
95.1%
Shell
3.3%
HTML
1.1%
Dockerfile
0.5%