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
À utiliser pour cadrer l'apprentissage du développement web ou obtenir des rappels rapides sur les fondamentaux HTML, CSS, JavaScript et React.
À é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ûrThe 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 faiteExemples
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?Compare Tailwind, Bootstrap, and Material UI for a small SaaS dashboard, and recommend one based on the framework comparison in this skill.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
-
HTML & CSS Fundamentals (2-3 weeks)
- Semantic HTML
- CSS layouts (Flexbox, Grid)
- Responsive design
-
JavaScript Core (4-6 weeks)
- ES6+ syntax
- DOM manipulation
- Async/await, Promises
- Event handling
-
Frontend Framework (4-8 weeks)
- React (most popular)
- Or: Vue (easier), Angular (enterprise)
- Components, state, hooks
-
Backend Basics (4-6 weeks)
- Node.js + Express/Fastify
- Database fundamentals
- REST API design
-
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>© 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 annexesCe 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.mdDepuis 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’OpenSkillsopenskills 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 syncMode 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.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.