Gosling, the Lite edition
Gooseplicant ships as one kit with two web apps on the same server, API and database: the full HR app, and Gosling, the Gooseplicant file browser, which sorts applicants by location and then position. The EDITION setting decides whether you run both or Gosling only.
The two editions#
| Concern | EDITION=full (default) | EDITION=lite |
|---|---|---|
/ats/ | The Gooseplicant HR app | Redirects (302) to /ats/lite/, as does every HR-app path |
/ats/lite/ | Gosling, alongside the HR app | Gosling |
| API | Everything | The Gosling subset; other routes answer 404 not_in_edition |
| Modules | As configured in Settings | audit and retention only; the others are off whatever Settings say |
/ats/ingest | On | On: your website form keeps posting applications |
The edition is deployment configuration, not a workspace setting: it's what you chose to run, so it lives next to your secrets rather than in the app. If you use a different BASE_PATH, replace /ats accordingly.
What Gosling does#
- Folders: All applicants, then each location (your sites) with counts, then the positions applied for at that location (grouped regardless of capitalization) and a No position folder when needed. Links are shareable hash URLs such as
/ats/lite/#/s/<siteId>. - The list: name, position, date applied, file count and source (website or imported), with full-text search, a date range, a source filter and sorting. Checkboxes and shift-click select ranges; Select all in this folder goes beyond the loaded page.
- The applicant pane: contact details, files with an inline PDF preview and download, and the application in form order with sensitive answers masked until revealed. Move to location…, Delete (admins; right to erasure) and, when the HR app is available, Open in Gooseplicant.
- Selection actions: export a zip, or move everyone selected to one location.
- Import of old application emails and PDFs, and zip export of a selection, a folder or everything.
- Admin (admins only): Locations (name, id and the aliases that drive import sorting), Users, General (company name and brand theme) and Retention & audit.
- The same light and dark themes, brand colors, row density and keyboard conventions as the HR app: press ? for shortcuts, j/k to move through the list, m to move applicants.
Not in Gosling: pipeline stages, ratings, notes, jobs, the talent pool, and emails to applicants or HR.
Roles in Gosling#
| Role | Can |
|---|---|
| Viewer | Browse, search, preview and download files. |
| Recruiter | Also reveal sensitive answers, move applicants between locations, import and export. |
| Admin | Also manage locations, users and retention, read the audit log, and erase a person. |
Everyone is limited to the locations they're assigned in Users, exactly as in the HR app. See the security model.
Set the edition#
EDITION accepts exactly full or lite (lowercase). Unset or empty means full. Anything else is a configuration error: Node.js and Docker refuse to start and name the variable, and a Worker answers with a generic 500 and logs the variable name until it is fixed.
Docker#
Add it to the ats service's environment in docker-compose.yml, then recreate the container:
environment:
PUBLIC_URL: https://ats.example.com
EDITION: lite
# ...the rest as beforedocker compose up -dNode.js#
Add a line to your environment file (for example /etc/ats/ats.env) and restart the service:
EDITION=litesudo systemctl restart atsCloudflare#
The shipped apps/cloudflare/wrangler.toml already has the variable under [vars]. Change it and deploy:
[vars]
EDITION = "lite"npm run deploy -w @ats/cloudflareYour Cloudflare Access application for the ats path already covers /ats/lite/; nothing changes there.
URLs#
| Path | What |
|---|---|
/ats/ | The HR app (full), or a redirect to Gosling (lite). |
/ats/lite/ | Gosling, in both editions. Sign-in is the same as for the HR app. |
/ats/api/* | The JSON API. In lite, only the routes Gosling uses. |
/ats/ingest | The signed intake your website posts to, in both editions. See Connect a form. |
What lite switches off#
- Web app:
/ats/and every HR-app path redirect to/ats/lite/. - API: routes only the HR app uses answer
404with the codenot_in_edition(after sign-in, so they reveal nothing to strangers). Editing an application is limited to moving it to another location. Saving settings refuses pipeline stages, email templates and the full-only modules. - Modules: only
auditandretentionrun. Talent-pool suggestions, candidate email and HR notifications are off, whatever is stored in Settings.
What stays on in lite: sign-in and roles, locations, users, the brand theme, sensitive fields, reveal, file downloads, CSV and zip export, import, deleting a person, the audit log and the signed intake from your website.
Upgrade from Gosling to Gooseplicant#
- Set
EDITION=fullOr remove the variable;
fullis the default. Restart the container or service, or deploy the Worker, as above. - That's it
Both editions use the same database, so nothing is migrated, re-imported or re-uploaded. Applications collected in Gosling start in the first pipeline stage (by default New), ready to move. Gosling stays available at
/ats/lite/. - Turn on what you need
In Settings → Modules, switch on candidate email or HR notifications once mail is configured, and review Pipeline stages and Email templates. See Modules.
Going the other way works too: with EDITION=lite the full-only features are hidden and paused, not deleted, and they come back when you switch to full again.