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 tool
Definir le nom du projet (kebab-case)
Creer le dossier projet local
mkdir NOM_PROJET && cd NOM_PROJET
Initialiser Git
git init
Creer repo GitHub
gh repo create NOM_PROJET --public --source=. --remote=origin
Premier commit et push
git add . && git commit -m "Initial commit" && git push -u origin master
Creer 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.fr
Projet 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.)