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:
159
README.md
Normal file
159
README.md
Normal 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)
|
||||
Reference in New Issue
Block a user