chore: adding docs
This commit is contained in:
parent
23816d00f7
commit
81c5112409
39 changed files with 7257 additions and 2 deletions
208
data/docs/go-guess.md
Normal file
208
data/docs/go-guess.md
Normal file
|
|
@ -0,0 +1,208 @@
|
|||
<!-- go-doc:generated:begin source=go-guess signature=90ddd0df374708488503ed13e3d69a04 generated=2026-10-07 08:28 UTC -->
|
||||
# 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 docker`
|
||||
- `make docker-push`
|
||||
- `make 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 chart
|
||||
- `deploy/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-loose` v0.0.0-20261005194805-49ab89ae46fd
|
||||
- `github.com/go-chi/chi/v5` v5.2.3
|
||||
- `github.com/golang-jwt/jwt/v5` v5.3.0
|
||||
- `github.com/google/uuid` v1.6.0
|
||||
- `github.com/jackc/pgx/v5` v5.11.0
|
||||
- `github.com/ledongthuc/pdf` v0.0.0-20260907135840-6c8c28e0e8a0
|
||||
- `github.com/pressly/goose/v3` v3.26.0
|
||||
- `github.com/rabbitmq/amqp091-go` v1.15.0
|
||||
- `github.com/testcontainers/testcontainers-go` v0.44.0
|
||||
- `github.com/testcontainers/testcontainers-go/modules/postgres` v0.44.0
|
||||
- `golang.org/x/crypto` v0.54.0
|
||||
- `gorm.io/driver/postgres` v1.6.0
|
||||
- `gorm.io/gorm` v1.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
|
||||
<!-- go-doc:generated:end -->
|
||||
Loading…
Add table
Add a link
Reference in a new issue