Site web moderne destiné à publier des articles optimisés SEO pour une audience étudiants et jeunes actifs (18-30 ans) sur le thème "Smart Budget".
- ✅ Design moderne, coloré et premium
- ✅ Mobile-first avec animations légères (Framer Motion)
- ✅ Pages : Accueil, Catégories, Articles
- ✅ Newsletter intégrée (formulaire + popup)
- ✅ Typographie optimisée pour la lecture longue
- ✅ Sommaire automatique dans les articles
- ✅ Éditeur Markdown ultra simple
- ✅ Checklist SEO guidée avec score en temps réel
- ✅ Champs : titre, résumé, mot-clé principal, catégories
- ✅ Aperçu avant publication
- ✅ Dashboard avec statistiques
- ✅ URLs propres (
/article/mon-article) - ✅ Sitemap.xml et robots.txt automatiques
- ✅ HTML sémantique avec Schema.org Article
- ✅ Open Graph et meta tags automatiques
- ✅ Lazy loading images
- ✅ Optimisé Lighthouse
- ✅ Formulaires sur toutes les pages
- ✅ Double opt-in par email
- ✅ Stockage des emails en base
- ✅ Templates email stylés
- Framework : Next.js 14 (App Router)
- Styling : Tailwind CSS + Design System custom
- Base de données : SQLite via Prisma
- Auth : NextAuth.js
- Animations : Framer Motion
- Emails : Nodemailer
- Contenu : MDX
- Node.js 18+
- npm ou pnpm
- Cloner et installer les dépendances
cd "Site News"
npm install- Configurer l'environnement
cp .env.example .envModifier .env avec vos valeurs (voir section Configuration).
- Initialiser la base de données
npm run db:push
npm run db:seed- Lancer le serveur de développement
npm run devLe site est accessible sur http://localhost:3000
L'admin est accessible sur http://localhost:3000/admin
- Email:
admin@smartbudget.fr - Mot de passe:
SmartBudget2024!
# Base de données
DATABASE_URL="file:./dev.db"
# NextAuth (générer une clé secrète pour la prod)
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=votre-cle-secrete-32-caracteres
# Admin initial
ADMIN_EMAIL=admin@smartbudget.fr
ADMIN_PASSWORD=VotreMotDePasseSecurise!
# Email SMTP (pour newsletter)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=votre-email@gmail.com
SMTP_PASSWORD=votre-app-password
EMAIL_FROM=Smart Budget <noreply@smartbudget.fr>
# Site
NEXT_PUBLIC_SITE_URL=https://smartbudget.fr
NEXT_PUBLIC_SITE_NAME=Smart Budget- Aller sur
/admin - Cliquer sur "Nouvel article"
- Remplir les champs :
- Titre : 50-60 caractères, avec le mot-clé principal
- Contenu : Écrire en Markdown
- Résumé : 150-160 caractères pour la meta description
- Mot-clé principal : Le terme SEO cible
- Catégorie : Choisir parmi les existantes
- Image : URL de l'image de couverture
- Vérifier le score SEO (viser 70+)
- Sauvegarder en brouillon ou publier
# Titre principal
Introduction de l'article...
## Sous-titre
Paragraphe avec **texte en gras** et *italique*.
### Liste à puces
- Point 1
- Point 2
- Point 3
### Tableau
| Colonne 1 | Colonne 2 |
|-----------|-----------|
| Valeur 1 | Valeur 2 |
### Blockquote (conseil)
> 💡 **Astuce** : Votre conseil ici
### Lien interne
[Voir cet article](/article/slug-article)
### Code
\`code inline\` ou bloc de code avec \`\`\`Modifier tailwind.config.ts :
colors: {
primary: {
500: '#0ea5e9', // Couleur principale
// ...
},
accent: {
500: '#d946ef', // Couleur accent
// ...
},
}Modifier lib/config.ts :
export const siteConfig = {
name: 'Smart Budget',
description: 'Votre description',
// ...
}Modifier lib/config.ts > mainNav et footerNav.
Via Prisma Studio :
npm run db:studioOu directement dans le seed (prisma/seed.ts).
- Pusher le code sur GitHub
- Importer le projet sur Vercel
- Configurer les variables d'environnement
- Utiliser une base PostgreSQL (Vercel Postgres ou Supabase)
Modifier prisma/schema.prisma pour PostgreSQL :
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}Similaire à Vercel. Utiliser le plugin @netlify/plugin-nextjs.
L'éditeur vérifie automatiquement :
- ✅ Titre entre 50-60 caractères
- ✅ Mot-clé dans le titre
- ✅ Meta description 150-160 caractères
- ✅ Mot-clé dans la description
- ✅ Contenu de 800+ mots
- ✅ Densité du mot-clé correcte
- ✅ Sous-titres H2/H3
- ✅ Image de couverture
- ✅ Texte alt sur les images
- ✅ Liens internes
npm run dev # Serveur de développement
npm run build # Build de production
npm run start # Lancer la production
npm run db:push # Synchroniser le schéma Prisma
npm run db:studio # Interface Prisma Studio
npm run db:seed # Peupler la base avec des données exemple├── app/
│ ├── admin/ # Pages CMS
│ ├── api/ # Routes API
│ ├── article/ # Page article dynamique
│ ├── categorie/ # Page catégorie dynamique
│ ├── newsletter/ # Pages confirmation newsletter
│ ├── layout.tsx # Layout principal
│ ├── page.tsx # Page d'accueil
│ ├── globals.css # Styles globaux
│ ├── sitemap.ts # Sitemap automatique
│ └── robots.ts # Robots.txt
├── components/
│ ├── layout/ # Header, Footer
│ ├── newsletter/ # Composants newsletter
│ └── ui/ # Design system
├── lib/
│ ├── auth.ts # Configuration NextAuth
│ ├── config.ts # Configuration site
│ ├── db.ts # Client Prisma
│ ├── email.ts # Envoi d'emails
│ ├── seo.ts # Utilitaires SEO
│ └── utils.ts # Fonctions utilitaires
├── prisma/
│ ├── schema.prisma # Schéma base de données
│ └── seed.ts # Données initiales
└── public/ # Assets statiques
Pour toute question ou problème, ouvrir une issue sur GitHub.
MIT - Libre d'utilisation commerciale et personnelle.