diff --git a/TODO.md b/TODO.md index 2c0f2cc..7410efc 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,3 @@ # TODO -- [x] Fix cross-field validation contamination — wrap file-field.php in
Aucun fichier sélectionné.
Index invalide.
' - . 'Aucun fichier sélectionné.
Erreur lors du téléchargement.
Type de fichier non accepté : ' . htmlspecialchars($upload['name']) . '
Fichier trop volumineux (' . round($upload['size'] / 1024 / 1024, 1) . ' MB). Maximum : ' . $maxMb . ' MB.
Erreur lors de la sauvegarde du fichier.
+ XAMXAM (formerly Posterg) is the thesis/TFE (Travail de Fin d'Études) repository + for the ERG — École de Recherche Graphique in Brussels. It is a purpose-built PHP 8.4 + + SQLite3 application deployed behind nginx. +
Three commercially available CMS products were evaluated against XAMXAM's requirements.
Headless Node.js CMS — self-hosted, open-source core
Flat-file PHP CMS — familiar language, no database required
PHP CMS + plugin ecosystem
+ ┌──────────────────────────────────────────────────────────────────────┐ + │ nginx (reverse proxy) │ + │ / → Next.js (port 3000) │ + │ /admin → Strapi admin UI (port 1337/admin) │ + │ /api → Strapi REST API (port 1337/api) │ + │ /partage/:slug → Next.js (student submission route) │ + └──────────────────────────────────────────────────────────────────────┘ + │ │ + ▼ ▼ + ┌──────────────────┐ ┌──────────────────────────────────────────┐ + │ Next.js 15 │ │ Strapi v5 (Node.js) │ + │ (public site + │ │ │ + │ student portal) │◄──►│ Content Types: Thesis, Author, │ + │ │ │ Supervisor, Tag, Format, Language, │ + │ - Home page │ │ ShareLink, AccessToken, SiteSettings │ + │ - TFE detail │ │ │ + │ - Search │ │ Plugins: │ + │ - /partage form │ │ • share-link (custom routes + logic) │ + │ - File proxy │ │ • file-access (token + cookie auth) │ + └──────────────────┘ │ • peertube (upload integration) │ + │ │ + │ Media: local upload provider │ + │ Database: SQLite (or PostgreSQL) │ + └──────────────────────────────────────────┘ + │ + ▼ + ┌──────────────────────────┐ + │ Storage (outside webroot) │ + │ /var/www/xamxam/uploads/ │ + │ (TFE PDFs, covers, │ + │ annexes, video, audio) │ + └──────────────────────────┘ +
/api/media/[...path]
media.php
/partage/:slug
strapi start
next start
+ Tags: native = ships out-of-the-box with the CMS, + plugin = available via an existing Strapi plugin or npm package, + custom = needs bespoke code, + drop = intentionally not reproduced (replaced or unnecessary). +
/api/theses
RANDOM()
pagination[page]
$containsi
strapi-plugin-fuzzy-search
limit_req_zone
koa-ratelimit
/tfe/[id]
populate[]=authors&populate[]=jury&populate[]=files
generateMetadata()
MAINTENANCE=1
access_type
file-access
HttpOnly
FileAccessController.php
is_published
Author
Supervisor
peertube
PeerTubeService.php
share-link
ExportController.php
strapi-plugin-audit-log
strapi-audit-log
auth_basic
SiteSettings
nodemailer
@strapi/provider-email-nodemailer
FormHelp
/partage/[slug]
/api/share-links/:slug/validate
/api/share-links/:slug/submit
/partage/index.php
TODO.md
/partage/[slug]/recap
Tag
just deploy-db
Estimated at 1 developer, full-time. Reduce scope or add a second dev to compress.
Thesis
ThesisFile
Orientation
ApProgram
FinalityType
Language
FormatType
LicenseType
AccessType
public.css
tfe.css
POST /api/file-access/request
file_access_tokens
ThesisCreateController
Image
+ The figures below illustrate what a realistic invoice from a junior freelance developer might look like + for this project. Assumptions: €350/day (junior solo rate, Western Europe), + 75 billable days of work spread across 18–19 weeks, with a 10% contingency buffer added as a separate + line item. VAT at 21% (Belgian standard rate, adjust for your jurisdiction). +
+ École de Recherche Graphique (ERG) + Rue du Page 87, 1050 Bruxelles + TVA: BE 0400.000.000 +
/api/media/[…path]
.sql
htpasswd
LDAP_SPEC.md
v_theses_full
v_theses_public
027_drop_banner_path.sql
oui/non
025_fix_oui_non_artefacts.sql
Crypto.php