A visual, interactive guide to web development concepts. Built for developers who learn better through diagrams, animations, and clear explanations.
Technical interviews often ask about HTTP, DNS, browser rendering, and other web fundamentals. This project provides visual explanations with the exact terminology engineers use, helping you understand and articulate these concepts clearly.
- Visual Diagrams: Animated SVG diagrams that show how things actually work
- Interactive Exploration: Click to expand, hover for details, step through processes
- Key Terms: Interview-ready definitions for important concepts
- Dark Theme: Easy on the eyes, modern design
- HTTP/HTTPS - Request/response cycle, methods, status codes, headers, TLS handshake
- DNS - Domain resolution, hierarchy, record types, caching, TTL
- How the Internet Works - TCP/IP stack, packets, routing, IP addressing, TCP vs UDP
- Browser Rendering - DOM, CSSOM, render tree, layout, paint, composite
- JavaScript Event Loop - Call stack, task queue, microtasks, async execution
- REST APIs - Resources, endpoints, CRUD operations, versioning, error handling
- WebSockets - Handshake process, bi-directional messaging, connection lifecycle, comparison with polling/SSE
- GraphQL - Queries, mutations, subscriptions, schema types, resolvers, REST vs GraphQL comparison
- Authentication - Sessions/cookies, JWT tokens, OAuth 2.0 flows, security best practices
- Web Security - CORS, XSS (Reflected/Stored/DOM), CSRF, CSP headers, SQL injection, clickjacking, IDOR
- Web Security - CORS, XSS, CSRF
- Caching Strategies - Browser, CDN, server
- Databases - SQL vs NoSQL, indexing
- Server Architecture - Load balancing, scaling
- Node.js 18+
- npm or pnpm
# Clone the repository
git clone https://github.com/MarkKatsDesign/webdevguide.git
cd webdevguide
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:5173 in your browser.
npm run build
npm run preview # Preview the build locallysrc/
├── lib/
│ ├── components/
│ │ ├── topics/ # Topic-specific components
│ │ │ └── http/ # HTTP topic components
│ │ │ ├── HttpTopic.svelte
│ │ │ ├── RequestResponse.svelte
│ │ │ ├── HttpMethods.svelte
│ │ │ ├── StatusCodes.svelte
│ │ │ ├── TlsHandshake.svelte
│ │ │ └── HttpHeaders.svelte
│ │ └── ui/ # Reusable UI components
│ │ ├── TopicCard.svelte
│ │ ├── KeyTerm.svelte
│ │ ├── DiagramContainer.svelte
│ │ └── Section.svelte
│ └── data/
│ └── topics.ts # Topic metadata
├── routes/
│ ├── +layout.svelte # Main layout with navigation
│ ├── +page.svelte # Home page
│ └── topics/
│ └── [slug]/ # Dynamic topic pages
└── app.css # Global styles + Tailwind
-
Add topic metadata in
src/lib/data/topics.ts:{ slug: 'dns', title: 'DNS', description: 'How domain names resolve to IP addresses', icon: '🔍', color: 'cyan', category: 'Foundation', implemented: true // Set to true when ready }
-
Create topic folder at
src/lib/components/topics/[your-topic]/ -
Create the main component
[YourTopic]Topic.svelte:<script lang="ts"> import { Section, KeyTerm, DiagramContainer } from '$lib/components/ui'; // Import your diagram components </script> <div class="space-y-12"> <Section title="Overview" subtitle="..."> <!-- Content --> </Section> <!-- More sections --> </div>
-
Register in the page - Update
src/routes/topics/[slug]/+page.svelte:import YourTopic from "$lib/components/topics/your-topic/YourTopic.svelte"; const topicComponents = { http: HttpTopic, "your-topic": YourTopic, // Add here };
<Section title="My Section" subtitle="Optional subtitle">
<!-- Your content -->
</Section><DiagramContainer title="Diagram Title" description="Description">
<YourDiagram />
</DiagramContainer><KeyTerm
term="HTTP"
definition="HyperText Transfer Protocol..."
color="blue"
/><TopicCard topic={topicObject} index={0} />- SvelteKit - Full-stack framework
- TypeScript - Type safety
- Tailwind CSS - Styling
- Svelte Transitions - Animations
- Background:
#0f172a(dark-900) - Cards:
#1e293b(dark-800) - Borders:
#334155(dark-700) - Accents: blue, green, orange, purple, cyan, pink, yellow
- Use Svelte's built-in
fly,fade,slidetransitions - Keep animations subtle (200-500ms)
- Always provide play/pause controls for continuous animations
- Use
animation-delayfor staggered effects
Contributions are welcome! If you'd like to add a new topic:
- Fork the repository
- Create a feature branch
- Add your topic following the structure above
- Submit a pull request
MIT