Skip to content

CI/CD ​

Both repositories use GitHub Actions for continuous integration. All checks must pass before merging to main.

Backend Pipeline ​

The backend CI runs on every push and pull request:

yaml
# Simplified workflow
jobs:
  test:
    steps:
      - Setup Ruby 3.4, PostgreSQL
      - bundle install
      - bin/rubocop          # Code style
      - bin/brakeman         # Security scan
      - bin/bundler-audit    # Dependency vulnerabilities
      - bundle exec rspec    # Test suite
      - Check coverage       # SimpleCov, 80% minimum

Checks ​

CheckToolThreshold
Code styleRuboCopZero offenses
SecurityBrakemanZero warnings
DependenciesBundler AuditNo known CVEs
TestsRSpecAll passing
CoverageSimpleCov80% minimum

TIP

The backend currently has 674 specs with 99% coverage, well above the 80% minimum.

Mobile Pipeline ​

The mobile CI runs on every push and pull request:

yaml
# Simplified workflow
jobs:
  test:
    steps:
      - Setup Node.js 20
      - npm install
      - npx tsc --noEmit     # TypeScript check
      - npm test              # Jest test suite
      - Check coverage        # 30% minimum

Checks ​

CheckToolThreshold
Type safetyTypeScript compilerZero errors
TestsJestAll passing
CoverageJest coverage30% minimum

The mobile coverage threshold is lower than the backend because UI components are harder to unit test and much of the app's correctness comes from TypeScript type checking.

Deployment ​

Deployment is not yet automated in CI. Current process:

  • Backend: Manual deploy to production server
  • Mobile: EAS Build + EAS Submit for App Store / Play Store releases

Branch Strategy ​

  • main is the production branch
  • Feature branches are merged via pull request
  • CI must pass before merge
  • No force pushes to main

Internal documentation — not for public distribution