Mon petit Outil de Gestion de postulations
  • JavaScript 64.8%
  • Python 33.9%
  • HTML 0.7%
  • CSS 0.6%
Find a file
Pascal Gailloud af1525918f Ne versionne que les gabarits légaux, pas les fichiers réels de l'exploitant
Les vrais documents légaux (server/legal/{cgu.txt, Confidentiality.txt,
imprint.txt}) portent des données personnelles et ne sont plus versionnés
(gitignore server/legal/*.txt). Seuls les gabarits *.txt.example (champs ⟨…⟩)
sont suivis ; copier + remplir par déploiement. Sans les fichiers réels, Full
retombe sur Personnel.

Tests Full rendus indépendants des fichiers réels via un LEGAL_DIR temporaire
(full_legal_dir()) — suite verte même sans les .txt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-04 16:42:32 +02:00
client Mentions légales pilotées par fichier en édition Full 2026-08-04 16:23:07 +02:00
server Ne versionne que les gabarits légaux, pas les fichiers réels de l'exploitant 2026-08-04 16:42:32 +02:00
.gitignore Ne versionne que les gabarits légaux, pas les fichiers réels de l'exploitant 2026-08-04 16:42:32 +02:00
CLAUDE.md Ne versionne que les gabarits légaux, pas les fichiers réels de l'exploitant 2026-08-04 16:42:32 +02:00
README.md Scaffold monorepo and shared data schema (steps 1-2) 2026-07-07 15:46:10 +02:00

JobTrack

Local-first job-application tracker.

  • /client — Mithril.js front-end with an Orbit.js data layer (offline store + sync).
  • /server — Django + Django REST Framework back-end serving a JSON:API under /api/v1/.

The app works fully offline; when a logged-in account has sync enabled (admin-controlled flag), the client synchronises its local Orbit store with the server in the background.

Requirements

  • Python ≥ 3.12 and uv (server)
  • Node.js ≥ 20 and npm (client)

Run the server

cd server
uv sync              # create the venv and install dependencies
uv run python manage.py migrate
uv run python manage.py createsuperuser   # for the /jtadmin admin
uv run python manage.py runserver         # http://127.0.0.1:8000
  • API: http://127.0.0.1:8000/api/v1/
  • Admin: http://127.0.0.1:8000/jtadmin/

Run the client

cd client
npm install
npm run dev          # http://localhost:5173

The client expects the API at http://127.0.0.1:8000 (configurable in client/src/config.js once the sync layer lands). Client and server run on different origins; CORS is configured server-side for the Vite dev origin.

Data model

Both sides define the same entities — Company, Contact, Application, Note — with:

  • client-generated UUID4 primary keys (records are created offline),
  • created_at / updated_at timestamps,
  • soft delete via a deleted_at tombstone (deletions must propagate across devices).

The application stage (À postuler / Envoyé / Entretien / Réponse / Clôturé) is a fixed enumeration shared by client and server rather than a table: the design fixes the five stages, and per-user stage rows would need seed records whose IDs conflict across offline devices.

Account erasure (DELETE /api/v1/me) is a hard delete, distinct from the per-record soft delete used for sync.