Cette page contient toutes les règles dont votre assistant IA a besoin pour préparer votre projet pour Ai to App. Vous n'avez pas besoin de la lire ; donnez simplement le message ci-dessous à votre assistant.
Lisez le guide à l'adresse https://aitoapp.com/fr/upload-guide. Préparez mon projet pour Ai to App selon ce guide, appliquez la liste de contrôle point par point et créez le fichier zip.
Ai to App examine et publie les sites et les applications téléversés sous forme de fichier zip. Les fichiers téléversés ne sont pas exécutés pendant l'examen. Une fois publiées, les applications serveur s'exécutent dans leur propre espace clos, séparé des autres projets. Ce guide contient toutes les règles nécessaires pour que le projet passe sans problème dès le premier téléversement.
1. Déterminer le type du projet
Ai to App reconnaît lui-même le type à partir des fichiers contenus dans le zip. Si plusieurs types correspondent, l'ordre ci-dessous s'applique ; celui qui est le plus haut l'emporte.
| Priorité | Type | Comment il est reconnu | Ce qu'il faut mettre dans le zip |
|---|---|---|---|
| 1 | Dockerfile | Dockerfile à la racine | Code source + Dockerfile |
| 2 | Next.js (serveur) | next dans les dépendances de package.json | Code source |
| 2 | Next.js (export statique) | output: 'export' dans next.config.* | L'INTÉRIEUR du dossier out après le build |
| 3 | Serveur Node.js | express, fastify, koa, hono, @nestjs/core, @hapi/hapi, restify, socket.io | Code source |
| 4 | Site compilé | vite, react-scripts, vue, @angular/core, astro, @sveltejs/vite-plugin-svelte, parcel, webpack + script build | L'INTÉRIEUR du dossier dist après le build (build pour react-scripts) |
| 5 | Node.js (générique) | Un script start ou un champ main dans package.json | Code source |
| 6 | Python | requirements.txt, pyproject.toml, Pipfile ou manage.py | Code source |
| 7 | .NET | .csproj / .fsproj à la racine | Code source |
| 8 | Site statique | Uniquement index.html et des fichiers HTML/CSS/JS | Les fichiers eux-mêmes |
Important :
- Pour les sites compilés (React, Vue, Vite, Angular, Svelte, Astro), exécutez d'abord
npm run build. Compressez en zip les fichiers À L'INTÉRIEUR du dossierdist(oubuild) obtenu.index.htmldoit se trouver directement à la racine du zip. - Les projets Go ne sont publiés qu'avec un
Dockerfile. - docker-compose n'est pas pris en charge ; seule l'application principale (Dockerfile) est exécutée. Ai to App fournit la base de données séparément (voir section 4).
2. Règles du zip
Limites
| Règle | Limite |
|---|---|
| Taille du fichier zip | au maximum 50 Mo |
| Taille totale des fichiers extraits du zip | Jusqu’à 200 Mo pour un site statique, jusqu’à 300 Mo pour une application serveur (100 Mo avec le forfait gratuit) |
| Taille d'un seul fichier | au maximum 25 Mo |
| Nombre de fichiers | Jusqu’à 2000 pour un site statique, jusqu’à 5000 pour une application serveur |
Structure des dossiers
- Les fichiers du projet doivent se trouver à la racine du zip ou dans un seul dossier de premier niveau.
- Pour un site statique,
index.htmldoit se trouver à la racine du zip ou dans l'unique dossier de premier niveau. - Deux fichiers au même chemin et les chemins dangereux contenant
../sont refusés.
À NE PAS mettre dans le zip (supprimés automatiquement, ils prennent de la place pour rien)
- Dépendances :
node_modules,.venv,venv,__pycache__,bower_components,.pytest_cache,.mypy_cache - Dossiers d'outils et de gestion de versions :
.git,.svn,.hg,.idea,.vscode,.vs,.cache,.turbo,.parcel-cache,.gradle - Sorties de compilation :
.next,.nuxt,.svelte-kit. Pour .NET, égalementbinetobj. - Fichiers système :
__MACOSX,.DS_Store,Thumbs.db,desktop.ini,*.pyc
Ne mettez JAMAIS dans le zip (supprimés et non conservés)
- Fichiers
.env: comme.env,.env.local,.env.production. Les fichiers d'exemple peuvent rester :.env.example,.env.sample,.env.template. Si votre ZIP contient un.env, le fichier n'est pas conservé ; seules les valeurs publiques avec les préfixesVITE_,NEXT_PUBLIC_,PUBLIC_,REACT_APP_vont à la compilation. Saisissez les valeurs secrètes dans le panneau. - Fichiers de clés et d'identifiants :
*.pem,*.key,*.p12,*.pfx,*.ppk,*.jks,*.keystore,id_rsa,id_ed25519,.npmrc,.pypirc,.netrc. Si l'un d'eux a déjà été partagé, renouvelez la clé.
Fichiers qui interrompent le téléversement
- Dans le code source d'une application : scripts et fichiers d'installation Windows (
.bat,.cmd,.ps1,.vbs,.scr,.msi). Les fichiers de programme compilés (.exe,.dll,.soet similaires) sont supprimés ; le serveur compile le projet à partir du code source. - Dans un site statique :
- Le code serveur et les fichiers exécutables sont interdits :
.php,.py,.rb,.pl,.cgi,.asp,.aspx,.cshtml,.jsp,.exe,.dll,.sh,.jar,.htaccess,.config. - Types autorisés :
.html,.htm,.css,.js,.mjs,.json,.webmanifest,.txt,.xml,.csv,.svg,.png,.jpg,.jpeg,.gif,.webp,.avif,.ico,.bmp,.woff,.woff2,.ttf,.otf,.eot,.mp4,.webm,.mp3,.ogg,.wav,.pdf. - Les fichiers
.mapet.mdsont ignorés.
- Le code serveur et les fichiers exécutables sont interdits :
3. Réglages obligatoires pour les applications serveur
Port et adresse
Ai to App fournit le port sur lequel l'application doit écouter via la variable d'environnement PORT. L'application doit se lier à l'adresse 0.0.0.0 ; localhost ou 127.0.0.1 ne sont pas accessibles de l'extérieur.
| Langage | Utilisation correcte |
|---|---|
| Node.js | app.listen(process.env.PORT || 3000, '0.0.0.0') |
| Python (FastAPI) | uvicorn main:app --host 0.0.0.0 --port $PORT |
| Python (Flask) | gunicorn app:app --bind 0.0.0.0:$PORT |
| Python (Django) | gunicorn config.wsgi --bind 0.0.0.0:$PORT |
| Go | ":" + os.Getenv("PORT") |
| .NET | Il NE doit PAS y avoir de ligne UseUrls(...) dans le code |
Commande de démarrage
- Node.js :
- Le script
startdepackage.jsondoit lancer le serveur de production, par ex."start": "node server.js". - Les commandes de développement NE doivent PAS figurer dans
start:vite,next dev,nodemon,ts-node-dev,tsx watch,webpack serve,react-scripts start,npm run dev. Elles doivent rester dans le scriptdev. - TypeScript : ajoutez
"build": "tsc"et définissez"start": "node dist/index.js". Compiler TypeScript à l'exécution est lent. - Ajoutez au zip le fichier de verrouillage (
package-lock.json,pnpm-lock.yaml,yarn.lockoubun.lockb). - Indiquez la version de Node via
package.json→engines.nodeou.nvmrc.
- Le script
- Python :
- FastAPI, Flask, Django, Streamlit et Gradio sont reconnus automatiquement.
- Si vous utilisez une autre structure, créez un
Procfileà la racine :web: <commande de démarrage>. La commande doit utiliser0.0.0.0et$PORT. - Flask :
gunicorndoit figurer dansrequirements.txt. - Django :
ALLOWED_HOSTSne doit pas être vide,DEBUG = Falsedoit être défini etSECRET_KEYdoit être lue depuis une variable d'environnement. - Indiquez la version de Python via
runtime.txtou.python-version.
- .NET : un
.csprojdoit se trouver à la racine. Ai to App compile avecdotnet publish -c Release; la version cible est lue depuisTargetFrameworkdans le.csproj. - Dockerfile : indiquez le port de l'application avec
EXPOSE. L'application doit tout de même lire la variablePORT.
4. Base de données
Ai to App installe lui-même la base de données et fournit les informations de connexion via une variable d'environnement. N'écrivez pas l'adresse de connexion dans le code ; lisez-la depuis la variable ci-dessous.
| Base de données | Variable d'environnement | Remarque |
|---|---|---|
| PostgreSQL | DATABASE_URL | Une base de données et un utilisateur distincts vous sont attribués |
| MySQL | DATABASE_URL | Une base de données distincte vous est attribuée |
| MongoDB | MONGODB_URI | Une base de données distincte vous est attribuée |
| Redis | REDIS_URL | |
| SQLite | DATABASE_PATH | Le fichier est conservé dans le dossier persistant (/data/app.db) |
| SQL Server | — | Non fourni ; indiquez l'adresse de votre propre serveur comme variable d'environnement ou passez à PostgreSQL |
| Supabase, Firebase, Neon, PlanetScale, Turso | vos propres variables | Saisissez les informations de connexion dans le tableau de bord comme variables d'environnement |
- Prisma : ajoutez le dossier
prisma/migrationsau zip ; sinon, les tables pourraient ne pas être créées automatiquement. - Alembic : si
alembic.iniexiste,alembic upgrade heads'exécute automatiquement avant la publication. - Fichier SQLite : le fichier SQLite contenu dans le zip n'est utilisé comme données initiales que lors de la première publication ; les téléversements suivants n'écrasent pas les données en production. Ne mettez pas dans le zip une base de test contenant des données personnelles.
- Mises à jour : lorsque vous téléversez une nouvelle version, les données de la base sont conservées.
5. Fichiers persistants
Le disque de l'espace où s'exécute l'application n'est pas persistant ; il est effacé à chaque nouvelle publication. Le seul dossier persistant est /data.
- Enregistrez sous
/datales photos et documents téléversés par les visiteurs, les fichiers générés et la base de données SQLite. - Lisez le chemin du dossier depuis la variable d'environnement
DATA_DIR; Ai to App la définit pour vous sur/data.
6. Informations secrètes et variables d'environnement
- N'écrivez pas les mots de passe, clés d'API et jetons dans le code ; lisez-les depuis des variables d'environnement. Vous saisissez les valeurs dans le tableau de bord Ai to App ; elles sont stockées chiffrées.
- Préfixes publics : les variables dont le nom commence par
VITE_,NEXT_PUBLIC_,REACT_APP_etPUBLIC_sont intégrées au code lors de la compilation et visibles par tous les visiteurs. Ne mettez aucune valeur secrète dans ces variables. - Système de connexion (NextAuth / Auth.js) :
NEXTAUTH_URL(ouAUTH_URL) doit être l'adresse réelle du site, etNEXTAUTH_SECRET(ouAUTH_SECRET) doit être renseigné. - OAuth (Google, GitHub) : ajoutez l'adresse de publication comme adresse de redirection autorisée dans les paramètres du fournisseur.
- Connexion avec Supabase : dans Supabase, sous Authentication > URL Configuration, indiquez votre adresse publiée dans Site URL et ajoutez l'adresse exacte dans Redirect URLs (
https://your-app.aitoapp.com/). Sinon, les liens des e-mails de confirmation et de connexion mènent àlocalhost:3000et la connexion n'aboutit pas. Pour la connexion Google, dans Google Cloud, ajoutez votre adresse publiée à Authorized JavaScript origins ethttps://PROJECT.supabase.co/auth/v1/callbackà Authorized redirect URIs. - Variables fournies par Ai to App lui-même :
PORT,HOST=0.0.0.0,DATA_DIR=/dataet les variables de base de données (section 4). Pour Node.js,NODE_ENV=production.
7. Ce que le code ne doit pas contenir
- Adresses
localhost: un code qui envoie des requêtes àhttp://localhost:...ouhttp://127.0.0.1:...s'adressera, une fois publié, à l'ordinateur du visiteur et ne fonctionnera pas. Lisez l'adresse depuis une variable d'environnement (par ex.import.meta.env.VITE_API_URL) ou, si c'est le même serveur, utilisez un chemin relatif (fetch('/api/...')). - Requêtes
/api/...dans un site statique : il n'y a pas de serveur derrière un site statique. Si une API est nécessaire, préparez le projet comme une seule application serveur (par ex. Express) qui fonctionne avec son API. - Port fixe :
const PORT = 3000ne doit pas figurer seul ; utilisezprocess.env.PORT || 3000. - Mode débogage :
debug=TrueouDEBUG = Truene doit pas être activé en production. - Secrets intégrés au code : une clé trouvée est considérée comme partagée ; renouvelez-la.
8. Liste de contrôle pour l'assistant
- Le type du projet a été déterminé (section 1).
- S'il s'agit d'un site compilé, le build a été effectué et seul l'intérieur du dossier
dist/build/outa été compressé en zip ;index.htmlest à la racine. - S'il s'agit d'une application serveur, le script
start(ou le Procfile) lance le serveur de production. - Le port est lu depuis la variable d'environnement
PORT; le serveur se lie à l'adresse0.0.0.0. - Il ne reste aucune adresse
localhost/127.0.0.1dans le code. - Les mots de passe et les clés ont été retirés du code ; ils sont lus depuis des variables d'environnement.
- La connexion à la base de données est lue depuis
DATABASE_URL/MONGODB_URI/REDIS_URL/DATABASE_PATH. - Les fichiers persistants sont écrits sous
/data. - Le fichier de verrouillage est présent (
package-lock.json, etc.). node_modules,.git,.venv,.next,bin,obj,.envet les fichiers de clés ne sont PAS dans le zip.- Le zip fait moins de 50 Mo, chaque fichier moins de 25 Mo ; 2000 fichiers au maximum.
9. À la fin du travail, dites-moi ceci
- L'emplacement exact du fichier zip préparé.
- Le type du projet et le langage ou le framework utilisé (par ex. « Node.js + Express »).
- La liste des variables d'environnement que je dois saisir dans le tableau de bord : le nom de chacune et son utilité. N'écrivez pas les valeurs ; c'est moi qui les saisirai.
- Un bref résumé des modifications que vous avez effectuées.
En cas de problème après l’importation du zip, Ai to App l’explique simplement ; collez ce texte dans votre assistant.
