web-development-skill
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.
$ Instalar
git clone https://github.com/pluginagentmarketplace/custom-plugin-nextjs /tmp/custom-plugin-nextjs && cp -r /tmp/custom-plugin-nextjs/developer-roadmap-plugin/skills/web-development ~/.claude/skills/custom-plugin-nextjs// tip: Run this command in your terminal to install the 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
Repository
