Thank you for your interest in contributing to TinyFlow! This guide will help you get started.
- Search existing issues to avoid duplicates.
- Open a new issue using the Bug Report template.
- Include: steps to reproduce, expected vs actual behavior, and your environment (OS, Python/Node version).
- Open a new issue using the Feature Request template.
- Describe the problem, your proposed solution, and any alternatives you considered.
- Python 3.12+
- Node.js 20+ with pnpm
- uv (Python package manager)
- At least one LLM API key (GLM, OpenAI, or Anthropic)
cd backend
cp .env.example .env # Add your API key(s)
uv sync --extra dev # Install all dependencies including dev
make dev # Start dev server at http://localhost:8000cd frontend
pnpm install # Install dependencies
pnpm dev # Start dev server at http://localhost:3000- Fork the repository and create a branch from
main:git checkout -b feat/your-feature
- Make your changes with clear, focused commits.
- Add or update tests as appropriate.
- Ensure all checks pass before submitting:
# Backend cd backend && make test # Frontend cd frontend && pnpm check && pnpm test:run
- Open a Pull Request using the PR template. Link any related issues.
- Formatter & linter: Ruff
- Line length: 120 characters
- Run locally:
ruff check --fix . && ruff format .
- Linter: ESLint
- Formatter: Prettier
- Run locally:
pnpm check
We follow Conventional Commits:
<type>: <short description>
Types: feat, fix, docs, test, refactor, chore, ci
Examples:
feat: add memory decay configurationfix: resolve SSE reconnection on thread switchdocs: update architecture diagram
- All existing tests must pass.
- New features should include tests. Aim for meaningful coverage, not just line count.
- Backend:
pytestinbackend/tests/ - Frontend:
vitestinfrontend/src/and Playwright infrontend/e2e/
Be respectful, constructive, and collaborative. We are all here to build something useful together.