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éTypeComment il est reconnuCe qu'il faut mettre dans le zip
1DockerfileDockerfile à la racineCode source + Dockerfile
2Next.js (serveur)next dans les dépendances de package.jsonCode source
2Next.js (export statique)output: 'export' dans next.config.*L'INTÉRIEUR du dossier out après le build
3Serveur Node.jsexpress, fastify, koa, hono, @nestjs/core, @hapi/hapi, restify, socket.ioCode source
4Site compilévite, react-scripts, vue, @angular/core, astro, @sveltejs/vite-plugin-svelte, parcel, webpack + script buildL'INTÉRIEUR du dossier dist après le build (build pour react-scripts)
5Node.js (générique)Un script start ou un champ main dans package.jsonCode source
6Pythonrequirements.txt, pyproject.toml, Pipfile ou manage.pyCode source
7.NET.csproj / .fsproj à la racineCode source
8Site statiqueUniquement index.html et des fichiers HTML/CSS/JSLes 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 dossier dist (ou build) obtenu. index.html doit 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ègleLimite
Taille du fichier zipau maximum 50 Mo
Taille totale des fichiers extraits du zipJusqu’à 200 Mo pour un site statique, jusqu’à 300 Mo pour une application serveur (100 Mo avec le forfait gratuit)
Taille d'un seul fichierau maximum 25 Mo
Nombre de fichiersJusqu’à 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.html doit 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, également bin et obj.
  • 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éfixes VITE_, 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, .so et 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 .map et .md sont ignorés.

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.

LangageUtilisation correcte
Node.jsapp.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")
.NETIl NE doit PAS y avoir de ligne UseUrls(...) dans le code

Commande de démarrage

  • Node.js :
    • Le script start de package.json doit 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 script dev.
    • 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.lock ou bun.lockb).
    • Indiquez la version de Node via package.json → engines.node ou .nvmrc.
  • 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 utiliser 0.0.0.0 et $PORT.
    • Flask : gunicorn doit figurer dans requirements.txt.
    • Django : ALLOWED_HOSTS ne doit pas être vide, DEBUG = False doit être défini et SECRET_KEY doit être lue depuis une variable d'environnement.
    • Indiquez la version de Python via runtime.txt ou .python-version.
  • .NET : un .csproj doit se trouver à la racine. Ai to App compile avec dotnet publish -c Release ; la version cible est lue depuis TargetFramework dans le .csproj.
  • Dockerfile : indiquez le port de l'application avec EXPOSE. L'application doit tout de même lire la variable PORT.

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éesVariable d'environnementRemarque
PostgreSQLDATABASE_URLUne base de données et un utilisateur distincts vous sont attribués
MySQLDATABASE_URLUne base de données distincte vous est attribuée
MongoDBMONGODB_URIUne base de données distincte vous est attribuée
RedisREDIS_URL
SQLiteDATABASE_PATHLe 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, Tursovos propres variablesSaisissez les informations de connexion dans le tableau de bord comme variables d'environnement
  • Prisma : ajoutez le dossier prisma/migrations au zip ; sinon, les tables pourraient ne pas être créées automatiquement.
  • Alembic : si alembic.ini existe, alembic upgrade head s'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 /data les 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_ et PUBLIC_ 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 (ou AUTH_URL) doit être l'adresse réelle du site, et NEXTAUTH_SECRET (ou AUTH_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:3000 et la connexion n'aboutit pas. Pour la connexion Google, dans Google Cloud, ajoutez votre adresse publiée à Authorized JavaScript origins et https://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=/data et 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:... ou http://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 = 3000 ne doit pas figurer seul ; utilisez process.env.PORT || 3000.
  • Mode débogage : debug=True ou DEBUG = True ne 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 / out a été compressé en zip ; index.html est à 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'adresse 0.0.0.0.
  • Il ne reste aucune adresse localhost / 127.0.0.1 dans 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, .env et 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

  1. L'emplacement exact du fichier zip préparé.
  2. Le type du projet et le langage ou le framework utilisé (par ex. « Node.js + Express »).
  3. 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.
  4. 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.