Développement web moderne

VérifiéSûr

Maîtrisez le développement web moderne. Apprenez les fondamentaux HTML/CSS/JavaScript, les frameworks React/Vue/Angular, le backend Node.js, les bases de données, les API et les architectures full-stack.

Spar Skills Guide Bot
DeveloppementDébutant
02/08/2026
Claude CodeCursorWindsurfCopilotCodex
#web-development#frontend#javascript#full-stack#learning-path

Recommandé pour

Synthèse automatique

Ce skill propose un parcours d'apprentissage et des aide-mémoire couvrant le développement web moderne, du HTML/CSS et JavaScript jusqu'aux frameworks frontend, au backend Node.js et aux bases de données.

Points forts

  • Propose un parcours structuré en cinq étapes avec des durées indicatives et un choix de trajectoire frontend, full-stack ou backend
  • Fournit des exemples de code concrets pour HTML sémantique, CSS Flexbox/Grid, les fonctionnalités ES6+ et un composant React avec hooks
  • Inclut des tableaux comparatifs utiles comme celui des frameworks CSS (Tailwind, Bootstrap, Material UI, Bulma)

Limites

  • Le document reste introductif : les sections sur le backend, les bases de données et le déploiement sont annoncées mais très peu détaillées
  • Le contenu s'arrête au milieu d'un exemple React, sans couvrir Vue ou Angular malgré leur mention
Quand l'utiliser

À utiliser pour cadrer l'apprentissage du développement web ou obtenir des rappels rapides sur les fondamentaux HTML, CSS, JavaScript et React.

Quand l'éviter

À éviter comme référence technique approfondie sur le backend, les bases de données ou l'architecture full-stack, que le skill ne fait qu'effleurer.

Analyse de sécurité

Sûr
Score qualité85/100

The skill is purely educational and informational. It contains no executable commands, no instructions to modify system files, access network resources, or handle sensitive data. All code examples are illustrative snippets for learning web development, with no risk of destructive or exfiltrating actions.

Aucun point d'attention détecté

Comment cette analyse est faite

Exemples

Plan a learning path
I want to become a full-stack web developer in about six months. Can you build me a week-by-week learning plan using the web-development-skill roadmap?
Pick a CSS framework
Compare Tailwind, Bootstrap, and Material UI for a small SaaS dashboard, and recommend one based on the framework comparison in this skill.
React data fetching example
Show me a modern React function component that fetches user data with useEffect and handles a loading state, following the patterns in this skill.

name: web-development-skill description: Master modern web development. Learn HTML/CSS/JavaScript fundamentals, React/Vue/Angular frameworks, Node.js backend, databases, APIs, and full-stack architectures. Use when building web applications, learning web technologies, or choosing tech stacks.

Web Development Skill

Complete guide to building modern web applications from frontend to full-stack systems.

Quick Start

Choose Your Path

Frontend Only → Full Stack → Backend Focus
     ↓             ↓            ↓
  React        Next.js/      Node.js +
  Vue/        Nuxt/         Database
  Angular     Blitz

Get Started in 5 Steps

  1. HTML & CSS Fundamentals (2-3 weeks)

    • Semantic HTML
    • CSS layouts (Flexbox, Grid)
    • Responsive design
  2. JavaScript Core (4-6 weeks)

    • ES6+ syntax
    • DOM manipulation
    • Async/await, Promises
    • Event handling
  3. Frontend Framework (4-8 weeks)

    • React (most popular)
    • Or: Vue (easier), Angular (enterprise)
    • Components, state, hooks
  4. Backend Basics (4-6 weeks)

    • Node.js + Express/Fastify
    • Database fundamentals
    • REST API design
  5. Deploy & Polish (ongoing)

    • Deployment platforms (Vercel, Netlify, Heroku)
    • Performance optimization
    • Monitoring and logging

Frontend Development

HTML & CSS Mastery

HTML5 Best Practices:

<!-- Semantic markup -->
<header>
  <nav>Navigation</nav>
</header>

<main>
  <article>
    <h1>Article Title</h1>
    <p>Content...</p>
  </article>
</main>

<footer>
  <p>&copy; 2024</p>
</footer>

<!-- Accessibility -->
<img src="image.jpg" alt="Descriptive text">
<button aria-label="Close menu">×</button>

CSS Modern Layout:

/* Flexbox - 1D layouts */
.flex-container {
  display: flex;
  justify-content: space-between;  /* horizontal */
  align-items: center;            /* vertical */
  gap: 1rem;
}

/* Grid - 2D layouts */
.grid-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
}

/* Responsive Design */
@media (max-width: 768px) {
  .grid-container {
    grid-template-columns: 1fr;
  }
}

CSS Framework Comparison:

| Framework | Approach | Learning Curve | Customization | |-----------|----------|---|---| | Tailwind | Utility-first | Medium | High | | Bootstrap | Component-based | Low | Medium | | Material UI | Design system | High | Low | | Bulma | Modern, minimal | Low | High |

JavaScript Fundamentals

ES6+ Essential Features:

// 1. Arrow Functions
const add = (a, b) => a + b;

// 2. Destructuring
const { name, age } = user;
const [first, second] = array;

// 3. Spread Operator
const newArr = [...oldArr, newItem];
const merged = { ...obj1, ...obj2 };

// 4. Template Literals
const message = `Hello, ${name}!`;

// 5. const vs let (always use these, not var)
const CONSTANT = 5;      // Never changes
let variable = 10;       // Can change

// 6. Async/Await (modern promises)
async function fetchData() {
  try {
    const response = await fetch('/api/data');
    const data = await response.json();
    return data;
  } catch (error) {
    console.error('Error:', error);
  }
}

// 7. Higher-order Functions
const numbers = [1, 2, 3, 4];
const doubled = numbers
  .filter(n => n > 2)        // Filter: [3, 4]
  .map(n => n * 2)           // Map: [6, 8]
  .reduce((acc, n) => acc + n, 0);  // Reduce: 14

Frontend Frameworks

React (Most Popular)

// Function Components + Hooks (modern way)
import { useState, useEffect } from 'react';

function UserProfile() {
  const [user, setUser] = useState(null);
  const [loading, setLoading] = useState(true);

  // Data fetching
  useEffect(() => {
    fetchUser().then(data => {
      setUser(data);
      setLoading(false);
    });
  }, []); // Empty dependency = run once

  if (loading) return <p>Loading...</p>;

  return (
    <div>
      <h1>{user.name}</h1>
      <p>{user.email}</p>
    </div>
  );
}

export default UserProfile;

Key Concepts:

  • Components: Reusable UI units
  • JSX: HTML-in-JavaScript
  • State: Component data (useState)
  • Props: Component parameters
  • Hooks: useState, useEffect, useContext
  • Context API: Global state management
  • Performance: React.memo, useMemo

Vue.js (Easier than React)

<template>
  <div class="user-profile">
    <h1>{{ user.name }}</h1>
    <p v-if="loading">Loading...</p>
    <button @click="increment">Count: {{ count }}</button>
  </div>
</template>

<script setup>
import { ref, onMounted } from 'vue';

const count = ref(0);
const user = ref(null);
const loading = ref(true);

onMounted(async () => {
  const data = await fetchUser();
  user.value = data;
  loading.value = false;
});

const increment = () => count.value++;
</script>

<style scoped>
.user-profile {
  padding: 1rem;
}
</style>

Angular (Enterprise)

  • Full framework with dependency injection
  • TypeScript-first
  • RxJS for reactive programming
  • Best for large enterprise applications

State Management

When to use:

  • Redux: Large apps with complex state
  • Zustand: Simple, modern alternative
  • Jotai: Atomic state management
  • MobX: Simplified reactive state

Redux Example:

// 1. Actions
const INCREMENT = 'INCREMENT';
const increment = () => ({ type: INCREMENT });

// 2. Reducer
const countReducer = (state = 0, action) => {
  if (action.type === INCREMENT) return state + 1;
  return state;
};

// 3. Store
const store = createStore(countReducer);

// 4. Use in React
const count = useSelector(state => state);
const dispatch = useDispatch();

// <button onClick={() => dispatch(increment())}>+</button>

Testing

// Jest + React Testing Library
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';

test('button increments count', async () => {
  render(<Counter />);
  const button = screen.getByRole('button', { name: /increment/i });

  await userEvent.click(button);
  expect(button).toHaveTextContent('Count: 1');
});

Backend Development

Node.js + Express

const express = require('express');
const app = express();

// Middleware
app.use(express.json());
app.use(cors());

// Routes
app.get('/api/users/:id', async (req, res) => {
  try {
    const user = await User.findById(req.params.id);
    res.json(user);
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

app.post('/api/users', async (req, res) => {
  const user = new User(req.body);
  await user.save();
  res.status(201).json(user);
});

// Error handling
app.use((err, req, res, next) => {
  console.error(err);
  res.status(500).json({ error: 'Internal Server Error' });
});

app.listen(3000, () => console.log('Server running'));

Database Integration

SQL (PostgreSQL):

const { Pool } = require('pg');
const pool = new Pool({
  user: 'username',
  password: 'password',
  host: 'localhost',
  port: 5432,
  database: 'mydb'
});

// Query
const result = await pool.query(
  'SELECT * FROM users WHERE id = $1',
  [userId]
);

NoSQL (MongoDB):

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  name: String,
  email: { type: String, unique: true },
  createdAt: { type: Date, default: Date.now }
});

const User = mongoose.model('User', userSchema);
const user = await User.findById(id);

RESTful API Design

HTTP Method Best Practices:

GET    /api/users          - List all users
GET    /api/users/:id      - Get single user
POST   /api/users          - Create user
PUT    /api/users/:id      - Update user (full)
PATCH  /api/users/:id      - Update user (partial)
DELETE /api/users/:id      - Delete user

Status Codes:

200 OK                 - Successful GET/PUT/PATCH
201 Created            - Successful POST
204 No Content         - DELETE, no response body
400 Bad Request        - Validation failed
401 Unauthorized       - Authentication required
403 Forbidden          - Authorization failed
404 Not Found          - Resource doesn't exist
500 Internal Error     - Server error

Authentication & Authorization

JWT (JSON Web Tokens):

const jwt = require('jsonwebtoken');

// Create token
const token = jwt.sign(
  { userId: user.id },
  process.env.JWT_SECRET,
  { expiresIn: '24h' }
);

// Verify middleware
const verifyToken = (req, res, next) => {
  const token = req.headers.authorization?.split(' ')[1];
  if (!token) return res.status(401).json({ error: 'No token' });

  jwt.verify(token, process.env.JWT_SECRET, (err, decoded) => {
    if (err) return res.status(401).json({ error: 'Invalid token' });
    req.userId = decoded.userId;
    next();
  });
};

Full Stack Integration

Next.js Example (React + Backend)

// pages/api/users/[id].js - API Route
export default async function handler(req, res) {
  if (req.method === 'GET') {
    const user = await getUser(req.query.id);
    res.json(user);
  } else if (req.method === 'PUT') {
    const updated = await updateUser(req.query.id, req.body);
    res.json(updated);
  }
}

// pages/users/[id].js - Page with SSR/SSG
export default function UserPage({ user }) {
  return <h1>{user.name}</h1>;
}

// Server-side props (SSR)
export async function getServerSideProps(context) {
  const user = await getUser(context.params.id);
  return { props: { user } };
}

Performance Optimization

Frontend:

- Code splitting (Webpack/Vite)
- Image optimization (next/image, WebP)
- CSS minification and autoprefixing
- Tree shaking (remove unused code)
- Lazy loading components
- Service Workers (offline support)

Backend:

- Database indexing
- Query optimization
- Caching (Redis)
- API response compression (gzip)
- Rate limiting
- Load balancing

Modern Tech Stacks

Recommended Stacks

Full Stack (Start Here):

Frontend:  React / Vue / Next.js
Backend:   Node.js + Express / Fastify
Database:  PostgreSQL
Hosting:   Vercel / Netlify (frontend)
           Heroku / Railway (backend)

Enterprise:

Frontend:  Angular / React
Backend:   Java Spring Boot / C# ASP.NET
Database:  PostgreSQL / Oracle
DevOps:    Docker, Kubernetes

Startup Friendly:

Frontend:  Next.js (full-stack)
Backend:   Next.js API Routes + Serverless
Database:  Firebase / Supabase
Hosting:   Vercel (all-in-one)

Learning Checklist

  • [ ] Understand HTML semantic elements
  • [ ] Master CSS layouts (Flexbox, Grid)
  • [ ] Know JavaScript ES6+ features
  • [ ] Built 2-3 frontend projects
  • [ ] Can manipulate DOM with vanilla JS
  • [ ] Know async/await and Promises
  • [ ] Learning or know a framework (React/Vue)
  • [ ] Understand state management
  • [ ] Built API with Node/Express
  • [ ] Know SQL/NoSQL basics
  • [ ] Can authenticate users (JWT)
  • [ ] Deployed a full-stack app
  • [ ] Ready for junior developer role!

Source: https://roadmap.sh/frontend, https://roadmap.sh/backend, https://roadmap.sh/full-stack

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/modern-web-development-msba3ni7/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/modern-web-development-msba3ni7' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/modern-web-development-msba3ni7/download' --output '.skill-downloads/modern-web-development-msba3ni7/SKILL.md.part' && mv '.skill-downloads/modern-web-development-msba3ni7/SKILL.md.part' '.skill-downloads/modern-web-development-msba3ni7/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/modern-web-development-msba3ni7/SKILL.md' && test -s '.skill-downloads/modern-web-development-msba3ni7/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/web-development-skill' && cp -R '.skill-downloads/modern-web-development-msba3ni7' '.claude/skills/web-development-skill'

Cursor
test -f '.skill-downloads/modern-web-development-msba3ni7/SKILL.md' && test -s '.skill-downloads/modern-web-development-msba3ni7/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/web-development-skill' && cp -R '.skill-downloads/modern-web-development-msba3ni7' '.cursor/skills/web-development-skill'

Codex
test -f '.skill-downloads/modern-web-development-msba3ni7/SKILL.md' && test -s '.skill-downloads/modern-web-development-msba3ni7/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/web-development-skill' && cp -R '.skill-downloads/modern-web-development-msba3ni7' '.agents/skills/web-development-skill'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/modern-web-development-msba3ni7'

openskills read 'modern-web-development-msba3ni7'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/modern-web-development-msba3ni7/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires