Skip to content

Architecture

pedrokarim edited this page Jun 11, 2026 · 1 revision

Architecture

Stack

Domaine Techno
Framework Next.js 16 (App Router, output: standalone), React 19
Runtime / paquets Bun (inclut bun:sqlite)
Auth NextAuth v5 (Credentials, sessions JWT), bcrypt
UI Tailwind CSS v4, shadcn/ui + Radix, Lucide, Framer Motion, next-themes
Images Sharp (miniatures, traitement)
Validation Zod
État / data TanStack Query/Table, Jotai, Zustand, nuqs
Données fichiers JSON + SQLite (bun:sqlite) dans data/
Tests Vitest + Testing Library
Analytics PostHog

Le README mentionne « Next.js 14 » mais le dépôt est en Next.js 16 / React 19, NextAuth 5 beta.

Stockage des données

Pas de base relationnelle externe. Tout vit sous data/ :

  • JSON : users.json, api-keys.json, history.json, secure-files.json, starred-files.json, deletion-tokens.json
  • SQLite (bun:sqlite) : albums.db, logs.db, base des thèmes

Les fichiers uploadés sont sur disque dans uploads/ (+ uploads/thumbnails/).

Structure du projet

Dossier Rôle
app/ App Router — pages (groupes (app), (catalog), (marketing), (tools)) et api/
components/ Composants React (ui/ shadcn, gallery/, albums/, api-keys/, modules/, settings/…)
lib/ Logique cœur : auth, upload, api-key-validator, rate-limit, history, modules/, i18n/, theme/, sse.ts, utils/ (SQLite)
modules/ Plugins de traitement (voir Modules)
hooks/ Hooks React
store/ Stores client (Zustand/Jotai)
schemas/ Schémas Zod
themes/ · utils/ · actions/ Thèmes, utilitaires couleur/CSS, Server Actions
config/ uploads.json, theme.ts, exemples
data/ Données runtime (JSON + SQLite)
uploads/ Fichiers uploadés
cli/ CLI Bun (index.ts + commands/: setup, users, logs, clean, deploy-cron…)
sharex-mobile/ App Expo/React Native (voir Application mobile)
tests/ · stories/ · docs/ · assets/ Tests, stories, docs, captures

Fichiers racine notables

auth.ts (NextAuth), middleware.ts (protection des routes + CORS + logs, runtime nodejs), next.config.mjs, components.json (shadcn), Dockerfile + docker-compose.yml, vitest.config.ts.

Routage & protection

middleware.ts protège tout sauf les routes publiques (/, /login, /img-handler) et quelques routes API publiques (/api/upload, /api/auth/*, …). Les rôles (admin / user) sont portés par le JWT et vérifiés côté routes admin.

Clone this wiki locally