chore: initialize gondulf project structure

Set up Python project with uv environment management and FastAPI stack.

Project structure:
- src/gondulf/ - Main application package
- tests/ - Test suite directory
- pyproject.toml - Project configuration with dependencies
- README.md - Project documentation
- uv.lock - Dependency lock file

Dependencies configured:
- FastAPI + Uvicorn for web framework
- SQLAlchemy for database ORM
- pytest + coverage for testing
- ruff, black, mypy, flake8 for code quality
- Development environment using uv direct execution model

All project standards reviewed and implemented per:
- /docs/standards/coding.md
- /docs/standards/testing.md
- /docs/standards/git.md
- /docs/standards/development-environment.md
- /docs/standards/versioning.md
This commit is contained in:
2025-11-20 10:42:10 -07:00
commit 6d21442705
17 changed files with 4301 additions and 0 deletions

159
README.md Normal file
View File

@@ -0,0 +1,159 @@
# 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:**
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
**Using pip:**
```bash
pip install uv
```
Verify installation:
```bash
uv --version
```
### 2. Clone the Repository
```bash
git clone <repository-url> gondulf
cd gondulf
```
### 3. Set Up Development Environment
```bash
# 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
```bash
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
```bash
# 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
```bash
# 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 script
- `uv run pytest` - Run tests
- `uv run ruff check .` - Lint code
- `uv pip install package` - Add a dependency
- `uv 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:
1. `/docs/standards/coding.md` - Coding conventions
2. `/docs/standards/testing.md` - Testing requirements
3. `/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
- [W3C IndieAuth Specification](https://www.w3.org/TR/indieauth/)
- [OAuth 2.0 Authorization Framework](https://datatracker.ietf.org/doc/html/rfc6749)
- [PKCE (RFC 7636)](https://datatracker.ietf.org/doc/html/rfc7636)