Ma Stack
Checklist complete pour la creation de nouveaux projets
Progression0 / 50 taches
Definir le type de projet
Types possibles:
- Site statique (Vercel + domaine Vercel)
- App web avec backend (PocketBase sur Hetzner)
- App mobile iOS (Swift)
- Projet grande envergure (Supabase/MongoDB + Vercel)
- CLI toolDefinir le nom du projet (kebab-case)
Creer le dossier projet local
mkdir NOM_PROJET && cd NOM_PROJETInitialiser Git
git initCreer repo GitHub
gh repo create NOM_PROJET --public --source=. --remote=originPremier commit et push
git add . && git commit -m "Initial commit" && git push -u origin masterCreer CLAUDE.md a la racine
# NOM_PROJET
## Infos
- Type: [site/app/cli/mobile]
- Description: ...
- URL prod: ...
- URL repo: https://github.com/seydou-music/NOM_PROJET
## Stack
- Frontend: HTML/CSS/JS | React | Next.js | Swift
- Backend: PocketBase | Supabase | MongoDB
- Hebergement: GitHub Pages | Vercel | Hetzner VPS
## Commandes
...
## Structure
...
## TODOs
- [ ] ...Ajouter le projet dans STACK-COMPLETE.md (Projets Actifs)
[VERCEL] Creer index.html de baseopt
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>NOM_PROJET</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<script src="script.js"></script>
</body>
</html>[VERCEL] Importer projet depuis GitHubopt
https://vercel.com/new
> Import Git Repository
> Selectionner seydou-music/NOM_PROJET
> Deploy[VERCEL] Verifier deploiement automatiqueopt
https://NOM_PROJET.vercel.app/[VERCEL] Acheter domaine sur Vercel (optionnel)opt
https://vercel.com/domains
> Search & Buy
> mondomaine.fr
> ~10-15EUR/an pour .fr[VERCEL] Lier domaine au projetopt
Project Settings > Domains
> Add > mondomaine.fr
> DNS configure automatiquement si achete sur Vercel[VERCEL] Verifier HTTPS actif (automatique)opt
https://mondomaine.fr[PB] Choisir port disponibleopt
Ports utilises:
8090 - Dashboard SNCF
8091 - All Time Squad
8092 - Y-Collaborator
8093+ disponibles[PB] SSH vers Hetzneropt
ssh root@37.27.247.194[PB] Creer dossier instanceopt
mkdir -p /opt/pocketbase/NOM_PROJET[PB] Copier binaireopt
cp /home/pocketbase/pocketbase /opt/pocketbase/NOM_PROJET/[PB] Creer service systemdopt
cat > /etc/systemd/system/pocketbase-NOM_PROJET.service << 'EOF'
[Unit]
Description=PocketBase NOM_PROJET
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/pocketbase/NOM_PROJET/pocketbase serve --http="0.0.0.0:PORT"
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable pocketbase-NOM_PROJET
systemctl start pocketbase-NOM_PROJET[PB] Ouvrir port firewallopt
ufw allow PORT/tcp[PB] Creer compte adminopt
http://37.27.247.194:PORT/_/[PB] Creer collections necessairesopt
[PB] Mettre a jour registre (POCKETBASE-MULTI-INSTANCES.md)opt
[SUPABASE] Creer projet sur supabase.comopt
https://supabase.com/dashboard/projects[SUPABASE] Recuperer URL et anon keyopt
Settings > API
SUPABASE_URL=https://xxx.supabase.co
SUPABASE_ANON_KEY=eyJ...[SUPABASE] Creer tables dans Table Editoropt
[SUPABASE] Configurer Row Level Security (RLS)opt
[MONGODB] Creer cluster sur mongodb.comopt
https://cloud.mongodb.com/[MONGODB] Recuperer connection stringopt
MONGODB_URI=mongodb+srv://user:pass@cluster.mongodb.net/NOM_PROJET[GRANDE ENVERGURE] Configurer .env.localopt
# .env.local (NE PAS COMMIT)
DATABASE_URL=...
API_KEY=...
NEXT_PUBLIC_APP_URL=...[GRANDE ENVERGURE] Deployer sur Vercelopt
https://vercel.com/new
Importer depuis GitHub > Configurer env vars > Deploy[iOS] Creer projet Xcodeopt
Xcode > File > New > Project > App
Bundle ID: com.seydou.NOM_PROJET
Language: Swift
Interface: SwiftUI[iOS] Definir Deployment Target (iOS 17+)opt
[iOS] Ajouter .gitignore pour Xcodeopt
# Xcode
*.xcodeproj/*
!*.xcodeproj/project.pbxproj
*.xcworkspace/*
!*.xcworkspace/contents.xcworkspacedata
DerivedData/
*.hmap
*.ipa
*.dSYM.zip
*.dSYM[iOS] Configurer App Store Connect (si publication)opt
https://appstoreconnect.apple.com/[SEO] Creer robots.txtopt
# NOM_PROJET - robots.txt
# https://mondomaine.fr
User-agent: *
Allow: /
Disallow: /admin
Disallow: /api/
# Crawlers specifiques
User-agent: Googlebot
Allow: /
User-agent: Bingbot
Allow: /
User-agent: Twitterbot
Allow: /
User-agent: facebookexternalhit
Allow: /
# Sitemap
Sitemap: https://mondomaine.fr/sitemap.xml[SEO] Creer sitemap.xmlopt
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<!-- Page d'accueil FR (default) -->
<url>
<loc>https://mondomaine.fr/</loc>
<lastmod>2025-01-17</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
<xhtml:link rel="alternate" hreflang="fr" href="https://mondomaine.fr/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mondomaine.fr/en" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://mondomaine.fr/" />
</url>
<!-- Page d'accueil EN -->
<url>
<loc>https://mondomaine.fr/en</loc>
<lastmod>2025-01-17</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
</urlset>[SEO] Ajouter meta tags essentielsopt
<title>Titre unique - 50-60 caracteres</title>
<meta name="description" content="Description unique 150-160 caracteres">
<meta name="robots" content="index, follow">
<meta name="keywords" content="mot-cle1, mot-cle2, mot-cle3">
<link rel="canonical" href="https://mondomaine.fr/">
<!-- Open Graph -->
<meta property="og:title" content="Titre">
<meta property="og:description" content="Description">
<meta property="og:type" content="website">
<meta property="og:url" content="https://mondomaine.fr/">
<meta property="og:image" content="https://mondomaine.fr/opengraph.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:site_name" content="NOM_PROJET">
<meta property="og:locale" content="fr_FR">
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Titre">
<meta name="twitter:description" content="Description">
<meta name="twitter:image" content="https://mondomaine.fr/opengraph.png">
<!-- Structured Data (JSON-LD) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "NOM_PROJET",
"url": "https://mondomaine.fr"
}
</script>[SEO] Creer image opengraph.png (1200x630px)opt
# Avec sips (macOS natif)
sips -z 630 1200 logo.png --out public/opengraph.png
# Ou avec ImageMagick
convert logo.png -resize 1200x630 -background white -gravity center -extent 1200x630 public/opengraph.png[SEO] Deployer et verifier fichiers accessiblesopt
https://mondomaine.fr/robots.txt
https://mondomaine.fr/sitemap.xml[SEO] Ajouter propriete Google Search Consoleopt
https://search.google.com/search-console
> Ajouter une propriete > Prefixe de l'URL[SEO] Valider propriete via DNS TXT ou fichier HTMLopt
[SEO] Soumettre sitemapopt
Search Console > Sitemaps > Ajouter > sitemap.xml[SEO] Demander indexation pages principalesopt
Search Console > Inspection URL > Demander l'indexation[SEO] Verifier indexation (attendre 3j-2sem)opt
site:mondomaine.frProjet accessible (URL ou app fonctionnelle)
CLAUDE.md complet et a jour
Code commite et pousse sur GitHub
STACK-COMPLETE.md mis a jour (Projets Actifs)
Registres mis a jour si applicable (PocketBase, etc.)