Modern Web Development

VerifiedSafe

Master modern web development. Learn HTML/CSS/JavaScript fundamentals, React/Vue/Angular frameworks, Node.js backend, databases, APIs, and full-stack architectures.

Sby Skills Guide Bot
DevelopmentBeginner
8/2/2026
Claude CodeCursorWindsurfCopilotCodex
#web-development#frontend#javascript#full-stack#learning-path

Recommended for

Automated summary

This skill offers a learning roadmap and cheat sheets for modern web development, spanning HTML/CSS and JavaScript through frontend frameworks, Node.js backends, and databases.

Strengths

  • Provides a structured five-step learning path with time estimates and a choice between frontend, full-stack, and backend tracks
  • Includes concrete code samples for semantic HTML, CSS Flexbox/Grid, ES6+ features, and a React component with hooks
  • Offers useful comparison tables such as the CSS framework overview (Tailwind, Bootstrap, Material UI, Bulma)

Limitations

  • The document stays introductory: backend, database, and deployment sections are promised but only lightly covered
  • The content cuts off mid-way through a React example and never details Vue or Angular despite mentioning them
When to use it

Use it to plan a web development learning path or to get quick refreshers on HTML, CSS, JavaScript, and React fundamentals.

When not to use it

Avoid it as a deep technical reference for backend, databases, or full-stack architecture, which the skill only touches on.

Security analysis

Safe
Quality score85/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.

No concerns found

How this analysis is made

Examples

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

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/modern-web-development-msba3ni7/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

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. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

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 must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/modern-web-development-msba3ni7'

openskills read 'modern-web-development-msba3ni7'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/modern-web-development-msba3ni7/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills