8.1 KiB
go-guess
Recruitment workspace for interviewers to define job profiles and a reusable question library, manage participants, extract known traits from uploaded CVs, invite candidates who match at least 60% of a posting's labels and skills, and run timed assessments followed by collaborative interviews.
| Module | github.com/danyel/go-guess/backend · go 1.27.1 · 37 Go files |
| Endpoints | 48 endpoints |
| Components | 1 component directory |
| Tests | 65 in 13 files |
| Go lines | 7331 lines |
Everything between the generated markers is rewritten by every sync. Notes written outside the markers are kept.
For Users
What this application does
Recruitment workspace for interviewers to define job profiles and a reusable question library, manage participants, extract known traits from uploaded CVs, invite candidates who match at least 60% of a posting's labels and skills, and run timed assessments followed by collaborative interviews.
The project ships its own README at README.md, which is the long form of this page. The three audience tabs split the same facts three ways so you only read the part that concerns you.
Reading this in go-doc
Open the page and pick the tab that matches you:
- User — you use the finished application. This section is all you need.
- Operator — you run it. Configuration, ports and deployment notes are under that tab.
- Developer — you integrate with it or change it. The API and layout tables are under that tab.
The feedback panel stores a note per audience, tagged with your badge, so operators and developers can see which audience raised it.
Where the original documentation lives
This project already carries 5 Markdown documents. They stay in the project repository: this page points at them instead of copying them, so there is always exactly one copy of the truth.
| Document | Size |
|---|---|
.github/copilot-instructions.md |
6859 bytes |
README.md |
16487 bytes |
deploy/helm/go-guess/README.md |
11878 bytes |
deploy/nginx/README.md |
2385 bytes |
frontend/README.md |
8725 bytes |
For Operators
Running it locally
The root Makefile defines 3 targets:
make dockermake docker-pushmake docker-run
Local containers
The compose file defines these services:
| Service | Image | Published ports |
|---|---|---|
| db | postgres:18-alpine |
internal only |
| rabbitmq | rabbitmq:4-alpine |
internal only |
| app | built locally | internal only |
| bdd | built locally | internal only |
| db | postgres:18-alpine |
internal only |
| rabbitmq | rabbitmq:4-management-alpine |
internal only |
| api | nexus.urpi.be/docker-hosted/go-guess-api:0.0.1 |
internal only |
| web | nexus.urpi.be/docker-hosted/go-guess-web:0.0.1 |
internal only |
Image
Dockerfile builds from node:26-alpine, golang:1.27.1-alpine, alpine:3.22 in stages: frontend, backend, tools and exposes 8080.
Configuration
Every environment variable found in the source or in a .env file:
| Variable | Example | Found in |
|---|---|---|
APP_ENV |
— | source |
DATABASE_URL |
— | source |
GO_LOOSE_BASE_URL |
— | source |
GO_LOOSE_CA_FILE |
— | source |
JWT_SECRET |
— | source |
Network surface
Ports referenced across the project: 5432, 8080.
Deployment artefacts
Helm 1 chart found:
deploy/helm/go-guess
Operations documentation that already exists
Read these in place rather than duplicating them here:
deploy/helm/go-guess/README.md— Go Guess Helm chartdeploy/nginx/README.md— Dedicated-server reverse proxy
For Developers
Module layout
- backend/go.mod — module github.com/danyel/go-guess/backend, go 1.27.1, 13 direct and 58 indirect dependencies
HTTP API
Every route registration found in the source:
| Method | Path | Handler |
|---|---|---|
GET |
/api/auth/callback |
CompleteExternalLogin |
GET |
/api/auth/login |
BeginExternalLogin |
POST |
/api/auth/login |
Login |
GET |
/api/auth/logout |
ExternalLogout |
POST |
/api/auth/logout |
ExternalLogout |
GET |
/api/auth/session |
ExternalSession |
GET |
/api/health |
Health |
GET |
/api/interviews/{token} |
GetInterview |
POST |
/api/interviews/{token}/accept |
AcceptInterview |
PUT |
/api/interviews/{token}/answers/{questionId} |
SaveAnswer |
POST |
/api/interviews/{token}/finish |
FinishInterview |
GET |
/api/invitations |
ListInbox |
PATCH |
/api/invitations/{id} |
UpdateInbox |
GET |
/api/jobs |
ListJobs |
POST |
/api/jobs |
CreateJob |
GET |
/api/jobs/{id} |
GetJob |
PATCH |
/api/jobs/{id} |
UpdateJob |
GET |
/api/jobs/{id}/candidates |
Candidates |
GET |
/api/jobs/{id}/interviews |
ListScheduledInterviews |
POST |
/api/jobs/{id}/interviews |
CreateScheduledInterview |
GET |
/api/jobs/{id}/invitations |
ListInvitations |
POST |
/api/jobs/{id}/invitations |
CreateInvitation |
GET |
/api/jobs/{id}/invitations/{invitationId} |
ReviewInvitation |
PATCH |
/api/jobs/{id}/invitations/{invitationId}/outcome |
SetInvitationOutcome |
DELETE |
/api/jobs/{id}/questions/{questionId} |
DetachQuestion |
POST |
/api/jobs/{id}/questions/{questionId} |
AttachQuestion |
GET |
/api/openapi.json |
ServeHTTP |
GET |
/api/participant-meetings/{token} |
GetParticipantMeeting |
GET |
/api/participant-meetings/{token}/events |
ParticipantMeetingEvents |
GET |
/api/participants |
ListParticipants |
POST |
/api/participants |
CreateParticipant |
GET |
/api/participants/{id} |
GetParticipant |
GET |
/api/participants/{id}/cv |
ParticipantCV |
PUT |
/api/participants/{id}/cv |
UpdateParticipantCV |
GET |
/api/participants/{id}/photo |
ParticipantPhoto |
GET |
/api/questions |
ListQuestions |
POST |
/api/questions |
CreateQuestion |
PATCH |
/api/questions/{id} |
SetQuestionDeprecated |
PUT |
/api/questions/{id} |
UpdateQuestion |
GET |
/api/schedule |
ListCalendar |
GET |
/api/scheduled-interviews/{id} |
GetScheduledInterview |
PATCH |
/api/scheduled-interviews/{id}/document |
UpdateScheduledInterviewDocument |
GET |
/api/scheduled-interviews/{id}/events |
InterviewEvents |
GET |
/api/scheduled-interviews/{id}/notes |
ListInterviewNotes |
POST |
/api/scheduled-interviews/{id}/notes |
CreateInterviewNote |
PATCH |
/api/scheduled-interviews/{id}/status |
UpdateScheduledInterviewStatus |
GET |
/api/users |
ListUsers |
POST |
/api/users |
CreateUser |
Direct dependencies
github.com/danyel/go-loosev0.0.0-20261005194805-49ab89ae46fdgithub.com/go-chi/chi/v5v5.2.3github.com/golang-jwt/jwt/v5v5.3.0github.com/google/uuidv1.6.0github.com/jackc/pgx/v5v5.11.0github.com/ledongthuc/pdfv0.0.0-20260907135840-6c8c28e0e8a0github.com/pressly/goose/v3v3.26.0github.com/rabbitmq/amqp091-gov1.15.0github.com/testcontainers/testcontainers-gov0.44.0github.com/testcontainers/testcontainers-go/modules/postgresv0.44.0golang.org/x/cryptov0.54.0gorm.io/driver/postgresv1.6.0gorm.io/gormv1.31.0
Directory map
| Directory | Files | Lines | Likely purpose |
|---|---|---|---|
frontend/ |
93 | 7311 | frontend assets |
backend/ |
50 | 114904 | unknown — inspect directly |
deploy/ |
28 | 135 | deployment manifests |
bdd/ |
10 | 253 | tests |
docker/ |
2 | 80 | operational tooling |
scripts/ |
1 | 28 | operational tooling |
Languages
- Go — 37 files, 7331 lines
- TypeScript — 74 files, 7207 lines
- JSON — 8 files, 5116 lines
- CSS — 1 file, 2983 lines
- YAML — 28 files, 2740 lines
- Markdown — 5 files, 984 lines
- SQL — 10 files, 388 lines
- JavaScript — 6 files, 185 lines
- Templates — 1 file, 109 lines
- conf — 3 files, 88 lines