Exploration de l’arborescence et des scripts
Découvre la structure des fichiers, les scripts de développement et la page d’accueil.
Accéder gratuitement à cette formation
Renseigne ton email pour débloquer immédiatement cette formation gratuite.
Dans cette première étape, on va plonger dans la structure de ton projet movies-speaker généré par create-next-app en Next.js 15. L’objectif est de comprendre où se situent les principales briques (routes, styles, configurations, scripts) pour pouvoir rapidement naviguer et démarrer efficacement ton dev.
Arborescence générale
Voici le squelette minimal que tu retrouves juste après avoir lancé :
1npx create-next-app@latest movies-speaker
1movies-speaker/2├── next.config.js3├── package.json4└── app/5├── globals.css6├── layout.tsx7└── page.tsx
La
app/est le point d’entrée de l’App Router (nouveau système de routing),
contrairement à l’ancien dossierpages/de Next.js 13-.
Détail du dossier app/
1app/2├── components/ # tes UI React3├── history/ # route /history4├── login/ # route /login5├── register/ # route /register6├── server/ # logique serveur (RSC, Actions, DB, auth…)7├── globals.css # styles globaux via Tailwind8├── layout.tsx # wrapper HTML commun à toutes les pages9├── page.tsx # route racine `/`10├── LoginForm.tsx # Client Component du formulaire de login11└── RegisterForm.tsx # Client Component du formulaire d’inscription
Chaque dossier */page.tsx devient une route de ton appli.
Par exemple, app/login/page.tsx correspond à https://localhost:3000/login.
Scripts dans package.json
Avant tout dev, on jette un œil aux scripts prédéfinis :
1{2"name": "movies-speaker",3"scripts": {4"dev": "next dev", // lance le serveur de dev5"build": "next build", // compile pour la prod6"start": "next start" // démarre le build en production7},8"dependencies": {9"next": "^15.0.0",10"react": "^18.0.0",11"tailwindcss": "^3.0.0",12"prisma": "^6.0.0"13}14}
npm run devouvre ton appli en hot-reload surhttp://localhost:3000.build+startservent à tester la version compilée (SSR + RSC).
Tip
Pendant le dev, privilégie npm run dev : tu profites du TurboPack
(compilation ultra-rapide) et de l’auto-refresh.
Configuration de Next.js
Le fichier next.config.js est généré vide par défaut.
Tu y ajouteras, par exemple, les domaines d’images autorisés ou des réécritures de route :
1/** @type {import('next').NextConfig} */2const nextConfig = {3images: {4remotePatterns: [5{6protocol: 'https',7hostname: 'image.tmdb.org',8},9],10},11};1213export default nextConfig;
Ici, on autorise image.tmdb.org pour l’optimisation des posters via <Image />.
Le cœur de l’App : layout.tsx et page.tsx
layout.tsx
C’est le wrapper partagé sur toutes les routes :
1export default async function RootLayout({ children }) {2const user = await getOptionalUser(); // RSC côté serveur3return (4<html lang="en">5<body>6<header>…navbar…</header>7{children}8</body>9</html>10);11}
- Le layout est un React Server Component : tu peux y appeler
directement des fonctions côté serveur (
getOptionalUser).
page.tsx (home)
La route / qui affiche la liste de films et séries :
1export default async function Home() {2const [movies, series, user] = await Promise.all([3getMovies(),4getSeries(),5getOptionalUser(),6]);78return (9<main>10<h1>Movies</h1>11<div>…boucle produits…</div>12<h1>Series</h1>13<div>…boucle séries…</div>14</main>15);16}
- React Server Component par défaut dès que tu utilises
async+await - Les appels
getMovies(),getSeries()etgetOptionalUser()s’effectuent
côté serveur, sans exposer tes clés d’API ou la couche Prisma au client.
Le dossier server/
On isole toute la logique back-end (Prisma, auth, appels API externes) :
1app/server/2├── db.ts # instanciation de PrismaClient3├── session.ts # gestion du cookie de session4├── auth.ts # Server Actions pour login/register5├── movies.ts # wrappers TMDB + RSC pour fetch et cache6└── history.ts # ajout / suppression / lecture historique
Chaque fonction exportée est précédée de use server ou use cache
pour indiquer à Next.js de ne pas la compiler pour le client.
Pourquoi séparer server/
Cela te garantit que tout ce qui est sensible (connexion Prisma, clé API TMDB) reste dans le Node.js et ne fuit jamais dans le bundle front.
Workflow de développement
- Install & configure :
Terminal1npm install
- Lancer le dev :
Terminal1npm run dev
- Ouvre
http://localhost:3000et vérifie que ton titre et tes routes
s’affichent bien. - Ajoute des dossiers et fichiers dans
app/pour créer de nouvelles routes.
Exercices rapides
- Explore la racine et note les scripts disponibles (
dev,build,start).
Lancenpm run devpuis stoppe-le. - Ouvre
next.config.jset ajoute un domaine imaginaire (ex.example.com)
sousimages.remotePatterns. Redémarre le serveur et vérifie qu’aucune
erreur n’apparaît. - Crée dans
app/une nouvelle routeabout/page.tsxqui affiche
<h1>À propos</h1>. Ouvrehttp://localhost:3000/about.- Bonus : teste avec un composant async qui retourne du contenu après
unawait new Promise(r => setTimeout(r, 500)).
- Bonus : teste avec un composant async qui retourne du contenu après
Tu maîtrises maintenant l’ossature de ton projet Next.js 15, son routing,
la séparation front / back, et la configuration initiale. On passe
au chargement des données avec Prisma et TMDB dans la prochaine leçon !