SPB Git forge

spb/spb-cloud

Public
10commits 1branches 0releases
3.2 MBsize
maindefault branch
2 h agolast push
JavaScript 56.7% TypeScript 42.6%

Add detailed README with badges, architecture docs, and .env.example

Comprehensive README with project metrics badges, feature comparison table,
full architecture documentation, API reference, deployment guides (local,
Nginx, Docker), security details, and roadmap. Added .env.example for
easy setup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
simon-pierre boucher committed 7 mo ago (Feb 18, 2026) parent e0cf05c

2 changed files +460 −20

added .env.example +7 −0
@@ -0,0 +1,7 @@
1 +DATABASE_URL="file:./dev.db"
2 +SESSION_PASSWORD="change-me-min-32-characters-long-secret-key"
3 +ANTHROPIC_API_KEY="sk-ant-api03-your-key-here"
4 +ENCRYPTION_KEY="change-me-32-characters-encryption"
5 +BACKUP_DIR="./backups"
6 +UPLOAD_DIR="./uploads"
7 +MAX_FILE_SIZE="524288000"
modified README.md +453 −20
@@ -1,36 +1,469 @@
1 −This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
1 +<p align="center">
2 + <img src="https://img.shields.io/badge/SPB_Cloud-v2.0-blue?style=for-the-badge&logo=cloud&logoColor=white" alt="Version" />
3 +</p>
2 4
3 −## Getting Started
5 +<h1 align="center">SPB Private Cloud</h1>
4 6
5 −First, run the development server:
7 +<p align="center">
8 + <strong>Cloud personnel priv&eacute;, souverain, s&eacute;curis&eacute; et mobile-first.</strong><br/>
9 + Plus clean que Dropbox. Plus priv&eacute; que Google Drive. 100% local-first.
10 +</p>
11 +
12 +<p align="center">
13 + <img src="https://img.shields.io/badge/Next.js-14-black?style=flat-square&logo=nextdotjs&logoColor=white" alt="Next.js" />
14 + <img src="https://img.shields.io/badge/TypeScript-5-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript" />
15 + <img src="https://img.shields.io/badge/Tailwind_CSS-3.4-06B6D4?style=flat-square&logo=tailwindcss&logoColor=white" alt="Tailwind" />
16 + <img src="https://img.shields.io/badge/Prisma-ORM-2D3748?style=flat-square&logo=prisma&logoColor=white" alt="Prisma" />
17 + <img src="https://img.shields.io/badge/SQLite-Database-003B57?style=flat-square&logo=sqlite&logoColor=white" alt="SQLite" />
18 + <img src="https://img.shields.io/badge/Claude_AI-Sonnet_4.5-D97706?style=flat-square&logo=anthropic&logoColor=white" alt="Claude AI" />
19 +</p>
20 +
21 +<p align="center">
22 + <img src="https://img.shields.io/badge/License-Private-red?style=flat-square" alt="License" />
23 + <img src="https://img.shields.io/badge/Platform-macOS%20%7C%20Linux%20%7C%20VPS-lightgrey?style=flat-square" alt="Platform" />
24 + <img src="https://img.shields.io/badge/Mobile-Responsive-green?style=flat-square&logo=apple&logoColor=white" alt="Mobile" />
25 + <img src="https://img.shields.io/badge/Auth-2FA%20TOTP-purple?style=flat-square&logo=keycdn&logoColor=white" alt="2FA" />
26 + <img src="https://img.shields.io/badge/Encryption-AES--256--GCM-orange?style=flat-square&logo=letsencrypt&logoColor=white" alt="Encryption" />
27 + <img src="https://img.shields.io/badge/API-REST%20v1-blue?style=flat-square&logo=fastapi&logoColor=white" alt="API" />
28 +</p>
29 +
30 +---
31 +
32 +## Qu'est-ce que SPB Cloud ?
33 +
34 +SPB Private Cloud est un cloud personnel auto-h&eacute;berg&eacute; con&ccedil;u pour offrir un contr&ocirc;le total sur vos donn&eacute;es. Aucune d&eacute;pendance &agrave; Google, Dropbox ou iCloud. Vos fichiers restent chez vous, chiffr&eacute;s, accessibles depuis n'importe quel appareil.
35 +
36 +### Pourquoi SPB Cloud ?
37 +
38 +| | SPB Cloud | Google Drive | Dropbox |
39 +|---|---|---|---|
40 +| **Propri&eacute;t&eacute; des donn&eacute;es** | Vous | Google | Dropbox |
41 +| **Chiffrement at-rest** | AES-256-GCM | Oui (leur cl&eacute;) | Oui (leur cl&eacute;) |
42 +| **IA int&eacute;gr&eacute;e** | Claude Sonnet 4.5 | Gemini (limit&eacute;) | Non |
43 +| **OCR intelligent** | Oui (Vision IA) | Basique | Non |
44 +| **Co&ucirc;t mensuel** | 0$ (auto-h&eacute;berg&eacute;) | 2.99$/mois+ | 11.99$/mois+ |
45 +| **Code source** | Acc&egrave;s complet | Ferm&eacute; | Ferm&eacute; |
46 +| **Multi-utilisateur** | Oui (roles) | Oui | Oui |
47 +| **2FA TOTP** | Oui | Oui | Oui |
48 +| **API REST** | Oui | Oui | Oui |
49 +
50 +---
51 +
52 +## Fonctionnalit&eacute;s
53 +
54 +### Gestion de fichiers
55 +- Upload multi-fichiers avec drag & drop
56 +- Upload depuis cam&eacute;ra mobile
57 +- Rename, delete, move, duplicate
58 +- Organisation en dossiers imbriqu&eacute;s
59 +- Breadcrumb navigation
60 +- Vue grille et liste
61 +- S&eacute;lection multiple + actions en lot
62 +- T&eacute;l&eacute;chargement de dossiers en ZIP
63 +- Progress bar d'upload
64 +
65 +### Preview de fichiers
66 +- Images (JPG, PNG, GIF, WebP, SVG)
67 +- Vid&eacute;os (MP4, WebM, MOV)
68 +- Audio (MP3, WAV, OGG) avec waveform
69 +- PDF avec navigation de pages
70 +- Code source avec syntax highlighting (20+ langages)
71 +- Markdown avec rendu
72 +- CSV/JSON avec tableau interactif
73 +- Archives ZIP (exploration du contenu)
74 +
75 +### Intelligence Artificielle (Claude Sonnet 4.5)
76 +- **Recherche s&eacute;mantique** : trouvez des fichiers par description naturelle
77 +- **Chat IA** : posez des questions sur vos fichiers
78 +- **Auto-tagging** : classification automatique par contenu
79 +- **OCR intelligent** : extraction de texte depuis images et PDFs
80 +- **Description IA** : g&eacute;n&eacute;ration automatique de descriptions
81 +
82 +### S&eacute;curit&eacute;
83 +- Hash bcrypt pour les mots de passe
84 +- Authentification 2FA TOTP (Google Authenticator, Authy)
85 +- Chiffrement AES-256-GCM at-rest
86 +- Sessions HTTP-only cookies (iron-session)
87 +- Rate limiting sur le login
88 +- CSRF protection
89 +- Validation des types de fichiers
90 +
91 +### Multi-utilisateur
92 +- Syst&egrave;me de r&ocirc;les : Admin, User, Viewer
93 +- Gestion CRUD des utilisateurs
94 +- Permissions par r&ocirc;le
95 +- Logs d'activit&eacute; par utilisateur
96 +
97 +### Partage s&eacute;curis&eacute;
98 +- Liens de partage avec token unique
99 +- Protection par mot de passe optionnel
100 +- Date d'expiration configurable
101 +- Mode t&eacute;l&eacute;chargement ou aper&ccedil;u seul
102 +- D&eacute;sactivation instantan&eacute;e
103 +- Gestion centralis&eacute;e des liens
104 +
105 +### Syst&egrave;me de backup
106 +- Backup complet (DB + fichiers) en ZIP
107 +- Backup incr&eacute;mental
108 +- Historique des backups avec statut
109 +- Suppression des anciens backups
110 +
111 +### Notifications
112 +- Notifications en temps r&eacute;el (polling 30s)
113 +- Badge avec compteur non-lus
114 +- Types : upload, backup, IA, partage
115 +- Marquer comme lu / tout lire
116 +
117 +### API REST publique
118 +- Authentification par cl&eacute; API (Bearer token)
119 +- G&eacute;n&eacute;ration et r&eacute;vocation de cl&eacute;s
120 +- Permissions configurable (read, write, admin)
121 +- Expiration optionnelle des cl&eacute;s
122 +- Endpoint : `GET /api/v1/files`
123 +
124 +### Interface
125 +- Design mobile-first (iPhone optimis&eacute;)
126 +- Mode clair / sombre avec persistance
127 +- Touch targets 44px minimum
128 +- Bottom sheet modals sur mobile
129 +- Safe area support (notch iPhone)
130 +- Sidebar collapsible
131 +- Animations Framer Motion
132 +- Typographie Inter
133 +
134 +---
135 +
136 +## Stack technique
137 +
138 +<p align="center">
139 + <img src="https://img.shields.io/badge/Frontend-Next.js_14-000000?style=for-the-badge&logo=nextdotjs" alt="Next.js" />
140 + <img src="https://img.shields.io/badge/Language-TypeScript_5-3178C6?style=for-the-badge&logo=typescript" alt="TypeScript" />
141 + <img src="https://img.shields.io/badge/Styling-Tailwind_CSS-06B6D4?style=for-the-badge&logo=tailwindcss" alt="Tailwind" />
142 + <img src="https://img.shields.io/badge/Animation-Framer_Motion-FF0055?style=for-the-badge&logo=framer" alt="Framer" />
143 +</p>
144 +<p align="center">
145 + <img src="https://img.shields.io/badge/ORM-Prisma-2D3748?style=for-the-badge&logo=prisma" alt="Prisma" />
146 + <img src="https://img.shields.io/badge/Database-SQLite-003B57?style=for-the-badge&logo=sqlite" alt="SQLite" />
147 + <img src="https://img.shields.io/badge/Auth-iron--session-FF6600?style=for-the-badge" alt="iron-session" />
148 + <img src="https://img.shields.io/badge/AI-Anthropic_Claude-D97706?style=for-the-badge&logo=anthropic" alt="Claude" />
149 +</p>
150 +
151 +---
152 +
153 +## Installation
154 +
155 +### Pr&eacute;requis
156 +
157 +- **Node.js** 18+
158 +- **npm** 9+
159 +- Cl&eacute; API Anthropic (pour les fonctionnalit&eacute;s IA)
160 +
161 +### Installation rapide
6 162
7 163 ```bash
164 +# 1. Cloner le repo
165 +git clone https://github.com/simonpierreboucher02/spb-private-cloud.git
166 +cd spb-private-cloud
167 +
168 +# 2. Installer les d&eacute;pendances
169 +npm install
170 +
171 +# 3. Configurer l'environnement
172 +cp .env.example .env
173 +# &Eacute;diter .env avec vos valeurs
174 +
175 +# 4. Initialiser la base de donn&eacute;es
176 +npx prisma db push
177 +npx tsx prisma/seed.ts
178 +
179 +# 5. Lancer l'application
8 180 npm run dev
9 −# or
10 −yarn dev
11 −# or
12 −pnpm dev
13 −# or
14 −bun dev
15 181 ```
16 182
17 −Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
183 +L'application sera accessible sur [http://localhost:3000](http://localhost:3000).
184 +
185 +### Configuration (.env)
186 +
187 +```env
188 +DATABASE_URL="file:./dev.db"
189 +SESSION_PASSWORD="votre-secret-session-min-32-caracteres"
190 +ANTHROPIC_API_KEY="sk-ant-api03-..."
191 +ENCRYPTION_KEY="votre-cle-encryption-32-caracteres"
192 +BACKUP_DIR="./backups"
193 +UPLOAD_DIR="./uploads"
194 +MAX_FILE_SIZE="524288000"
195 +```
196 +
197 +### Identifiants par d&eacute;faut
198 +
199 +| Champ | Valeur |
200 +|---|---|
201 +| **Email** | `admin@spbcloud.local` |
202 +| **Mot de passe** | `admin123` |
203 +| **R&ocirc;le** | Admin |
204 +
205 +> **Important** : Changez le mot de passe apr&egrave;s la premi&egrave;re connexion via Admin > Utilisateurs.
206 +
207 +---
208 +
209 +## Architecture
210 +
211 +```
212 +spb-private-cloud/
213 +├── app/
214 +│ ├── admin/ # Pages administration
215 +│ │ ├── activity/ # Historique d'activit&eacute;
216 +│ │ ├── api-keys/ # Gestion cl&eacute;s API
217 +│ │ ├── backup/ # Gestion backups
218 +│ │ ├── settings/ # Param&egrave;tres (2FA)
219 +│ │ ├── shares/ # Liens partag&eacute;s
220 +│ │ └── users/ # Gestion utilisateurs
221 +│ ├── api/
222 +│ │ ├── ai/ # Endpoints IA (search, chat, tag, ocr, describe)
223 +│ │ ├── auth/ # Login, logout, 2FA
224 +│ │ ├── backup/ # CRUD backups
225 +│ │ ├── files/ # CRUD fichiers + bulk + versions
226 +│ │ ├── folders/ # CRUD dossiers + ZIP download
227 +│ │ ├── keys/ # CRUD cl&eacute;s API
228 +│ │ ├── notifications/# Notifications
229 +│ │ ├── shares/ # Liens de partage
230 +│ │ ├── tags/ # Tags
231 +│ │ ├── users/ # Gestion utilisateurs
232 +│ │ └── v1/ # API REST publique
233 +│ ├── dashboard/ # File explorer
234 +│ ├── login/ # Page de connexion
235 +│ └── shared/ # Pages de partage public
236 +├── components/
237 +│ ├── admin/ # Composants admin
238 +│ ├── ai/ # Panel IA
239 +│ ├── files/ # FileCard, FileExplorer, BulkActions
240 +│ ├── folders/ # FolderCard, CreateFolderModal
241 +│ ├── layout/ # AppShell, Sidebar, MobileNav, Notifications
242 +│ ├── preview/ # Preview engine + plugins (image, video, pdf...)
243 +│ ├── tags/ # TagBadge, TagSelector
244 +│ ├── theme/ # ThemeProvider, ThemeToggle
245 +│ └── ui/ # Button, Modal, SearchBar
246 +├── lib/
247 +│ ├── ai.ts # Int&eacute;gration Claude API
248 +│ ├── auth.ts # Authentification multi-user
249 +│ ├── backup.ts # Syst&egrave;me de backup
250 +│ ├── encryption.ts # Chiffrement AES-256-GCM
251 +│ ├── notifications.ts # Syst&egrave;me de notifications
252 +│ ├── prisma.ts # Client Prisma
253 +│ ├── rate-limit.ts # Rate limiting
254 +│ ├── session.ts # Configuration sessions
255 +│ ├── storage.ts # Gestion fichiers sur disque
256 +│ └── utils.ts # Utilitaires
257 +├── prisma/
258 +│ ├── schema.prisma # Sch&eacute;ma de base de donn&eacute;es
259 +│ └── seed.ts # Seed admin user
260 +├── types/
261 +│ └── files.ts # Types TypeScript
262 +└── uploads/ # Stockage fichiers (git-ignored)
263 +```
264 +
265 +---
266 +
267 +## Base de donn&eacute;es
268 +
269 +### Mod&egrave;les Prisma
270 +
271 +| Mod&egrave;le | Description |
272 +|---|---|
273 +| `User` | Utilisateurs avec r&ocirc;les et 2FA |
274 +| `File` | Fichiers avec m&eacute;tadonn&eacute;es, IA, chiffrement |
275 +| `Folder` | Dossiers imbriqu&eacute;s (arbre r&eacute;cursif) |
276 +| `SharedLink` | Liens de partage s&eacute;curis&eacute;s |
277 +| `Permission` | Permissions par dossier/utilisateur |
278 +| `ActivityLog` | Journal d'activit&eacute; |
279 +| `FileMetadata` | M&eacute;tadonn&eacute;es &eacute;tendues (favoris, annotations) |
280 +| `Tag` / `FileTag` | Syst&egrave;me de tags |
281 +| `FileVersion` | Versioning de fichiers |
282 +| `Notification` | Notifications utilisateur |
283 +| `ApiKey` | Cl&eacute;s API REST |
284 +| `BackupLog` | Historique des backups |
285 +
286 +---
287 +
288 +## API REST
289 +
290 +### Authentification
291 +
292 +Toutes les requ&ecirc;tes &agrave; l'API publique n&eacute;cessitent un header `Authorization` :
293 +
294 +```bash
295 +curl -H "Authorization: Bearer spb_votre_cle_api" \
296 + https://votre-domaine/api/v1/files
297 +```
298 +
299 +### Endpoints
300 +
301 +| M&eacute;thode | Endpoint | Description |
302 +|---|---|---|
303 +| `GET` | `/api/v1/files` | Lister les fichiers |
304 +| `GET` | `/api/v1/files?folderId=xxx` | Fichiers d'un dossier |
305 +
306 +### G&eacute;n&eacute;rer une cl&eacute; API
307 +
308 +1. Connectez-vous en tant qu'admin
309 +2. Allez dans **Administration > Cl&eacute;s API**
310 +3. Cliquez **Nouvelle cl&eacute;**
311 +4. Copiez la cl&eacute; g&eacute;n&eacute;r&eacute;e (affich&eacute;e une seule fois)
312 +
313 +---
314 +
315 +## D&eacute;ploiement
316 +
317 +### Mac Studio / NAS (local)
318 +
319 +```bash
320 +# Build de production
321 +npm run build
322 +
323 +# Lancer en production
324 +PORT=3001 npm start
325 +```
326 +
327 +### VPS (avec Nginx)
328 +
329 +```nginx
330 +server {
331 + listen 443 ssl;
332 + server_name cloud.votredomaine.com;
333 +
334 + ssl_certificate /etc/letsencrypt/live/cloud.votredomaine.com/fullchain.pem;
335 + ssl_certificate_key /etc/letsencrypt/live/cloud.votredomaine.com/privkey.pem;
336 +
337 + client_max_body_size 500M;
338 +
339 + location / {
340 + proxy_pass http://127.0.0.1:3001;
341 + proxy_http_version 1.1;
342 + proxy_set_header Upgrade $http_upgrade;
343 + proxy_set_header Connection 'upgrade';
344 + proxy_set_header Host $host;
345 + proxy_set_header X-Real-IP $remote_addr;
346 + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
347 + proxy_set_header X-Forwarded-Proto $scheme;
348 + proxy_cache_bypass $http_upgrade;
349 + }
350 +}
351 +```
352 +
353 +### Docker (optionnel)
354 +
355 +```dockerfile
356 +FROM node:18-alpine
357 +WORKDIR /app
358 +COPY package*.json ./
359 +RUN npm ci
360 +COPY . .
361 +RUN npx prisma generate
362 +RUN npm run build
363 +EXPOSE 3000
364 +CMD ["npm", "start"]
365 +```
366 +
367 +---
368 +
369 +## Roadmap
370 +
371 +### Fait
372 +- [x] Upload multi-fichiers + drag & drop
373 +- [x] Organisation en dossiers imbriqu&eacute;s
374 +- [x] Preview 10+ formats (PDF, images, vid&eacute;o, audio, code, markdown...)
375 +- [x] Partage s&eacute;curis&eacute; avec expiration et mot de passe
376 +- [x] Mode clair / sombre
377 +- [x] Multi-utilisateur avec r&ocirc;les
378 +- [x] 2FA TOTP
379 +- [x] Recherche IA (Claude Sonnet 4.5)
380 +- [x] Chat IA int&eacute;gr&eacute;
381 +- [x] Auto-tagging IA
382 +- [x] OCR intelligent (images + PDF)
383 +- [x] Chiffrement AES-256-GCM
384 +- [x] Syst&egrave;me de backup
385 +- [x] Notifications
386 +- [x] API REST avec cl&eacute;s
387 +- [x] Actions en lot (supprimer, d&eacute;placer, ZIP, chiffrer)
388 +- [x] Interface mobile-first (iPhone optimis&eacute;)
389 +
390 +### &Agrave; venir
391 +- [ ] Migration PostgreSQL
392 +- [ ] HTTPS / SSL int&eacute;gr&eacute;
393 +- [ ] Corbeille (soft delete)
394 +- [ ] Thumbnails auto-g&eacute;n&eacute;r&eacute;s
395 +- [ ] Video streaming HLS
396 +- [ ] Infinite scroll
397 +- [ ] Docker Compose
398 +- [ ] WebDAV
399 +- [ ] Sync multi-device
400 +
401 +---
402 +
403 +## S&eacute;curit&eacute;
404 +
405 +SPB Cloud est con&ccedil;u avec la s&eacute;curit&eacute; en priorit&eacute; :
406 +
407 +| Mesure | D&eacute;tail |
408 +|---|---|
409 +| **Mots de passe** | Hash bcrypt (12 rounds) |
410 +| **2FA** | TOTP RFC 6238 (Google Authenticator) |
411 +| **Sessions** | Cookies HTTP-only, SameSite, expiration 24h |
412 +| **Chiffrement** | AES-256-GCM avec cl&eacute; d&eacute;riv&eacute;e (scrypt) |
413 +| **Rate limiting** | 5 tentatives/min sur login |
414 +| **API Keys** | SHA-256 hash, jamais stock&eacute;es en clair |
415 +| **Upload** | Limite de taille configurable |
416 +
417 +---
418 +
419 +## Auteurs
420 +
421 +<table>
422 + <tr>
423 + <td align="center">
424 + <strong>Simon-Pierre Boucher</strong><br/>
425 + Cr&eacute;ateur & Propri&eacute;taire<br/>
426 + <a href="https://www.spboucher.ai">www.spboucher.ai</a><br/>
427 + <a href="mailto:spbou4@protonmail.com">spbou4@protonmail.com</a>
428 + </td>
429 + <td align="center">
430 + <strong>Claude Opus 4.6</strong><br/>
431 + Co-auteur & D&eacute;veloppeur IA<br/>
432 + <a href="https://anthropic.com">Anthropic</a><br/>
433 + Architecture, code, optimisation mobile
434 + </td>
435 + </tr>
436 +</table>
18 437
19 −You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
438 +---
20 439
21 −This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
440 +## Statistiques du projet
22 441
23 −## Learn More
442 +<p align="center">
443 + <img src="https://img.shields.io/badge/Fichiers-139-blue?style=for-the-badge" alt="Files" />
444 + <img src="https://img.shields.io/badge/Lignes_de_code-21%2C456-green?style=for-the-badge" alt="Lines" />
445 + <img src="https://img.shields.io/badge/API_Routes-32-orange?style=for-the-badge" alt="API Routes" />
446 + <img src="https://img.shields.io/badge/Composants-28-purple?style=for-the-badge" alt="Components" />
447 +</p>
24 448
25 −To learn more about Next.js, take a look at the following resources:
449 +<p align="center">
450 + <img src="https://img.shields.io/badge/Preview_Plugins-10-teal?style=flat-square" alt="Plugins" />
451 + <img src="https://img.shields.io/badge/Mod%C3%A8les_DB-12-red?style=flat-square" alt="DB Models" />
452 + <img src="https://img.shields.io/badge/Fonctions_IA-5-yellow?style=flat-square" alt="AI Functions" />
453 + <img src="https://img.shields.io/badge/D%C3%A9pendances-42-grey?style=flat-square" alt="Dependencies" />
454 +</p>
26 455
27 −- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
28 −- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
456 +---
29 457
30 −You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
458 +## Contact
31 459
32 −## Deploy on Vercel
460 +- **Email** : [spbou4@protonmail.com](mailto:spbou4@protonmail.com)
461 +- **Site web** : [www.spboucher.ai](https://www.spboucher.ai)
462 +- **GitHub** : [github.com/simonpierreboucher02](https://github.com/simonpierreboucher02)
33 463
34 −The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
464 +---
35 465
36 −Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
466 +<p align="center">
467 + <sub>Built with passion by Simon-Pierre Boucher & Claude Opus 4.6</sub><br/>
468 + <sub>&copy; 2024-2026 SPB Private Cloud. Tous droits r&eacute;serv&eacute;s.</sub>
469 +</p>
37 470