Skip to main content

Getting Started

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Set up the development environment
  4. Create a feature branch
git clone https://github.com/your-username/ondoki-web.git
cd ondoki-web
cp .env.example .env
make dev

Development Workflow

1

Create a Branch

Use conventional branch naming:
git checkout -b feat/my-feature
git checkout -b fix/bug-description
git checkout -b docs/update-readme
2

Make Changes

Edit code, add tests, verify everything works.
3

Run Tests

make test           # All tests
make test-backend   # Backend only (pytest)
make test-frontend  # Frontend only (Jest)
4

Lint

make lint           # Runs ruff (Python) + tsc (TypeScript)
5

Commit

Use Conventional Commits:
git commit -m "feat: add workflow export to PDF"
git commit -m "fix: resolve search ranking for empty queries"
git commit -m "docs: update API reference"
6

Submit PR

Push your branch and open a Pull Request with a clear description.

Code Style

Python (Backend)

  • Linter: Ruff
  • Formatting: Ruff formatter
  • Type hints: Encouraged on function signatures
  • Async: Use async/await for all database operations

TypeScript (Frontend)

  • Formatting: Prettier
  • Linting: ESLint with TypeScript rules
  • Types: TypeScript strict mode

Commit Messages

Follow Conventional Commits:
PrefixUse For
feat:New features
fix:Bug fixes
docs:Documentation changes
refactor:Code restructuring (no behavior change)
test:Adding or updating tests
chore:Build, CI, dependency updates
perf:Performance improvements

Pull Request Guidelines

  • Keep PRs focused — one feature or fix per PR
  • Include a clear description of what changed and why
  • Add or update tests for your changes
  • Ensure all tests pass before submitting
  • Link related GitHub issues

Reporting Issues

  • Use GitHub Issues
  • Include steps to reproduce
  • Include environment details (OS, browser, Docker version)
  • Screenshots are helpful for UI issues

Architecture

See Project Structure for codebase layout and Architecture for system design.

License

By contributing, you agree that your contributions will be licensed under the MIT License.