Web API that allows Github projects to be appraised for individual contributions by members of a team.
- Ruby - See
.ruby-versionfor required version - Redis - Required for caching appraisal results
- AWS Account - For SQS message queue (worker communication)
Using rake tasks (recommended):
rake redis:start # Start Redis Docker container
rake redis:stop # Stop Redis when done
rake redis:status # Check connectivityOr manually with Homebrew (macOS):
brew install redis
brew services start redisbundle installcp config/secrets_example.yml config/secrets.ymlEdit config/secrets.yml and add your:
GITHUB_TOKEN- GitHub personal access token- AWS credentials for SQS queue
bundle exec rake db:migrate # Development database
RACK_ENV=test bundle exec rake db:migrate # Test databaserake redis:status # Check Redis connectivity
rake queues:status # Check SQS queue statusrake run # Start API server on port 9090
rake worker:run:dev # Start background worker (in separate terminal)rake spec # Run unit and integration tests
bash spec/acceptance_tests # Run full acceptance tests (starts worker automatically)This project uses Clean Architecture with separate DDD-style layers for the API and background worker:
- API (
app/): Handles HTTP requests, database, GitHub integration - Worker (
workers/): Handles git clone/blame operations, Redis caching
Both use parallel layer structures: domain/, infrastructure/, presentation/, application/
See CLAUDE.md for detailed architecture documentation.
GET /
Status:
- 200: API server running (happy)
GET /projects/{owner_name}/{project_name}[/{folder}/]
Status
- 200: appraisal returned (happy)
- 404: project or folder not found (sad)
- 500: problems finding or cloning Github project (bad)
POST /projects/{owner_name}/{project_name}
Status
- 201: project stored (happy)
- 404: project or folder not found on Github (sad)
- 500: problems storing the project (bad)