Last Updated: 2025-11-05
Quick reference for common commands, operations, and configurations.
- Quick Start
- Database Commands
- Code Generation
- Testing
- Development
- Git Workflow
- Docker Commands
- Database Access
# Clone repository
git clone https://github.com/rastrigin-systems/arfa.git
cd arfa
# Start database
make db-up
# Install tools (one-time)
make install-tools
# Generate all code
make generate
# Run tests
make test
# View documentation
open docs/database/schema-reference.mdRun make to see all available commands.
# Start PostgreSQL
make db-up
# Stop PostgreSQL
make db-down
# Reset database (⚠️ deletes all data)
make db-reset
# Run migrations
make db-migrate
# Rollback migrations
make db-rollback# PostgreSQL connection string
postgres://arfa:arfa_dev_password@localhost:5432/arfa
# Adminer web UI
open http://localhost:8080
# psql CLI
docker exec -it arfa-postgres psql -U arfa -d arfa
# Direct SQL query
docker exec arfa-postgres psql -U arfa -d arfa -c "SELECT COUNT(*) FROM employees"# List all tables
docker exec arfa-postgres psql -U arfa -d arfa -c "\dt"
# Describe table structure
docker exec arfa-postgres psql -U arfa -d arfa -c "\d employees"
# Count records in table
docker exec arfa-postgres psql -U arfa -d arfa -c "SELECT COUNT(*) FROM organizations"
# View all organizations
docker exec arfa-postgres psql -U arfa -d arfa -c "SELECT id, name, created_at FROM organizations"
# Check migrations status
docker exec arfa-postgres psql -U arfa -d arfa -c "SELECT version, dirty FROM schema_migrations"See Database documentation for complete guide.
# Install code generation tools (one-time)
make install-tools# Generate everything (ERD + API + DB + Mocks)
make generate
# Generate ERD docs only
make generate-erd
# Generate API code only
make generate-api
# Generate DB code only
make generate-db
# Generate mocks only
make generate-mocksManual:
# After changing platform/database/schema.sql
make db-reset && make generate-db && make generate-mocks
# After changing platform/api-spec/spec.yaml
make generate-api
# After changing SQL queries
make generate-db && make generate-mocks
# After changing interfaces (for mocks)
make generate-mocks
# Or regenerate everything
make generate# Run all tests with coverage
make test
# Run unit tests only (fast, no Docker required)
make test-unit
# Run integration tests only (requires Docker)
make test-integration
# Generate HTML coverage report
make test-coverage
# Open coverage report
open coverage.html# Test single package
go test ./services/api/internal/handlers/...
# Test with verbose output
go test -v ./services/api/internal/handlers/...
# Test with coverage
go test -cover ./services/api/internal/handlers/...
# Test specific function
go test -run TestCreateEmployee ./services/api/internal/handlers/...See Testing guide for complete guide.
# Build everything
make build
# Build API server
cd services/api && go build -o ../../bin/arfa-api ./cmd/server
# Build CLI
cd services/cli && go build -o ../../bin/arfa ./cmd/arfa-cli
# Build with specific tags
go build -tags integration -o bin/arfa-test ./services/cli/cmd/arfa-cli# Start all services with docker compose
make dev
# Run API server manually
./bin/arfa-api
# Run CLI manually
./bin/arfa-cli <command># Clean generated files and binaries
make clean
# Clean Docker volumes
docker volume prune
# Clean Go build cache
go clean -cache
# Remove test databases
docker rm -f $(docker ps -aq --filter "name=postgres")See PR Workflow for complete workflow.
# Update Go dependencies
go get -u ./...
go mod tidy
# Update specific dependency
go get -u github.com/org/package@latest
# Sync go.work
go work sync# API server logs
tail -f logs/api.log
# CLI logs
tail -f ~/.arfa/logs/cli.log
# Docker container logs
docker logs arfa-postgres -f
docker logs arfa-api -f# View all env vars
env | grep ARFA
# Set env var for session
export ARFA_API_URL=http://localhost:8080
# Set env var permanently (add to ~/.zshrc or ~/.bashrc)
echo 'export ARFA_API_URL=http://localhost:8080' >> ~/.zshrc
source ~/.zshrc# Show all available make targets
make help
# Run target with verbose output
make <target> VERBOSE=1- Contributing - Development workflow
- Testing - Testing guide
- Database - Database operations
- PR Workflow - Git workflow
- Debugging - Debugging guide