Files
BanGUI/CONTRIBUTING.md
Lukas 85d05ee582 docs: add editorconfig setup and remove completed task
- Add EditorConfig section to CONTRIBUTING.md with IDE plugins table
- Remove Issue #28 from Tasks.md (pre-commit hooks now documented)
2026-05-03 18:07:33 +02:00

3.3 KiB

Contributing to BanGUI

Welcome! This guide covers everything you need to know to set up your dev environment, understand the codebase, and submit changes.


Dev Setup

1 — Clone and init

git clone <repo-url>
cd BanGUI
cp .env.example .env
python -c 'import secrets; print(secrets.token_hex(32))'
# paste output as BANGUI_SESSION_SECRET in .env

2 — Start the stack

make up

Backend: http://127.0.0.1:8000 · Frontend (Vite proxy): http://127.0.0.1:5173

3 — Editor Setup

Install EditorConfig plugin for your IDE. Ensures consistent formatting (indent style, line endings) across all editors.

IDE Plugin
VS Code EditorConfig (ms-vscode.editorconfig)
PyCharm / IntelliJ Built-in (enable in Settings → Editor → Code Style)
Vim / Neovim editorconfig-vim
Sublime Text EditorConfig

4 — Pre-commit hooks

Backend (pre-commit, all languages):

pip install pre-commit
pre-commit install

Frontend (husky, TypeScript validation):

cd frontend && npm install
npx husky install

Hooks run automatically on every git commit. To run manually:

pre-commit run --all-files        # backend hooks
cd frontend && npm run validate:types  # frontend type check

Project Structure

BanGUI/
├── backend/          Python FastAPI app
│   └── app/
│       ├── routers/  HTTP endpoint handlers
│       ├── services/ Business logic
│       ├── repos/   Data access
│       ├── models/   Pydantic request/response/domain models
│       └── utils/   Shared helpers
├── frontend/         React + TypeScript + Fluent UI v9
│   └── src/
│       ├── pages/   Route-level page components
│       ├── components/  Reusable UI components
│       ├── hooks/   Custom React hooks
│       └── types/   Shared TypeScript types
├── Docs/             Architecture, design, and feature documentation
└── Docker/           Container compose files

Code Quality

Tool Scope Command
ruff Backend linting cd backend && ruff check .
ruff-format Backend formatting cd backend && ruff format .
mypy --strict Backend type checking cd backend && mypy --strict app
tsc --noEmit Frontend type checking cd frontend && tsc --noEmit
eslint Frontend linting cd frontend && eslint src
prettier --check Frontend formatting cd frontend && prettier --check src

All checks must pass before committing. CI runs the same suite.


Testing

# Backend
cd backend && pytest --cov=app --cov-report=term-missing

# Frontend — run once
cd frontend && npm test

Stack

Layer Stack
Backend Python 3.12+, FastAPI, Pydantic v2, aiosqlite, structlog
Frontend TypeScript, React, Fluent UI v9, Vite
Container Docker Compose (development + production)

Key Docs