Thank you for your interest in contributing to Arfa! This document provides guidelines and information for contributors.
- Fork the repository and clone your fork
- Set up the development environment following Getting Started
- Create a branch for your changes:
git checkout -b feature/your-feature-name - Make your changes with tests
- Submit a pull request
- Go 1.24+
- PostgreSQL 15+
- Node.js 20+ (for web UI)
- Docker (for local development)
# Start dependencies
docker compose up -d
# Install tools and generate code
make install-tools
make generate
# Run tests
make test
# Build all services
make buildWe use code generation for type-safe database queries and API types:
make generate # Regenerate all codeNever edit files in generated/ - they are regenerated from source.
- Run
make testand ensure all tests pass - Run
make lintand fix any issues - Add tests for new functionality
- Update documentation if needed
Use conventional commits format:
feat: Add new featurefix: Fix bug in Xdocs: Update documentationrefactor: Refactor X for claritytest: Add tests for Xchore: Update dependencies
- All PRs require at least one approval
- CI checks must pass
- Maintain test coverage (target: 85%)
See Architecture Overview for details on:
- Service structure (API, CLI, Web)
- Database schema
- Code generation pipeline
- Multi-tenancy design
We follow test-driven development (TDD). See Testing Guide for:
- Unit testing patterns
- Integration testing with TestContainers
- Test fixtures and utilities
Please report security vulnerabilities to sergei@rastrigin.systems. Do not open public issues for security concerns.
- All database queries must include
org_idfor multi-tenancy - Never commit secrets or credentials
- Use parameterized queries (sqlc handles this)
We are committed to providing a welcoming and inclusive environment. Please:
- Be respectful and constructive
- Welcome newcomers
- Focus on what is best for the community
- Open a GitHub Discussion
- Check existing Issues
By contributing, you agree that your contributions will be licensed under the MIT License.