Web DevProject: tests that run on every pushA test suite that only runs on your laptop is a suggestion. Wire Vitest into GitHub Actions so every push and pull request runs it automatically.Sep 11, 2026·5 min
Web DevTesting React componentsTest what a user can see and click, not internal state or class names. Build a live save-link form, then test it with Testing Library like a real user.Sep 11, 2026·5 min
Web DevCode coverage and the lies it tells100% coverage means every line ran during the suite. It says nothing about whether the right values were checked. A real bug that coverage missed.Sep 10, 2026·5 min
Web DevTest databases, fixtures and isolationShared test databases cause the flakiest failures in any suite. See why Linkstash defaults to an in-memory database, and how fixtures set up test data.Sep 10, 2026·5 min
Web DevIntegration-testing LinkstashUnit tests check one function. Integration tests check the whole request through routing, auth, and validation. Real supertest tests against a real API.Sep 9, 2026·4 min
Web DevTesting async code without flakesA test that passes locally and fails randomly in CI is almost always a missing await. Learn the pattern, fake timers, and why Express 5 changed the game.Sep 9, 2026·4 min
Web DevMocks, stubs and fakesReplace the database, the email API, or a slow dependency with something you control. Three techniques, what they're each for, and where they go wrong.Sep 8, 2026·4 min
Web DevEdge cases and the bugs you would have shippedThe bugs that reach production almost never live in the happy path. Two real tests, from a real code review, show what actually catching them looks like.Sep 8, 2026·5 min
Web DevArrange, act, assert: the shape of a good testEvery clear test follows the same three-part shape. Learn to spot it, write it on purpose, and see why messy tests almost always skip a step.Sep 7, 2026·5 min
Web DevTDD: red, green, refactorWrite the test before the code that passes it. A live walkthrough of the red-green-refactor loop, building a slugify function from nothing.Sep 7, 2026·5 min
Web DevWhy write testsTests don't prove your code works. They're what lets you change it six months from now without breaking something you can't see happen.Sep 6, 2026·5 min
Web DevYour first unit test with VitestInstall Vitest, write one real assertion, and see exactly what expect() checks under the hood before you ever run npx vitest for real.Sep 6, 2026·5 min
Web DevProject: the Linkstash API end to endThe complete Linkstash architecture in one diagram: every route and decision from this series, tied together and ready for you to build your own version.Sep 5, 2026·6 min
Web DevRealtime with WebSocketsWhy request/response can't push updates to a client, how the WebSocket handshake upgrades an HTTP connection, and where realtime would sit next to Linkstash.Sep 5, 2026·5 min
Web DevPagination, filtering and sortingThe intParam helper that stops a negative limit from becoming SQLite's 'no limit at all', plus how Linkstash filters with LIKE and sorts newest first.Sep 4, 2026·6 min
Web DevUser accounts and password hashing done rightWhy registerUser inserts first and catches the UNIQUE violation instead of checking first, and why verifyUser hashes a dummy password on every failed login.Sep 4, 2026·7 min
Web DevAuthentication: sessions vs JWTHow Linkstash's opaque session tokens actually work end to end, and the real tradeoff against JWTs: revocability versus a database lookup on every request.Sep 3, 2026·6 min
Web DevValidating input before it ruins your dayUse Zod's safeParse to reject bad input at the boundary before it reaches your database, with the exact credentials and newLink schemas from Linkstash.Sep 3, 2026·6 min
Web DevConnecting a databaseWire better-sqlite3 into Express, understand prepared statements as the fix for SQL injection, and why WAL mode is meaningless on an in-memory database.Sep 2, 2026·8 min
Web DevError handling and the async trapHow Express 5's four-argument error middleware works, why route order matters for the 404 catch-all, and the async trap Express 4 developers had to work around.Sep 2, 2026·6 min
Web DevMiddleware: the chain every request walksWhat middleware actually is in Express, how the (req, res, next) signature works, and the exact bug you get when a middleware forgets to call next.Sep 1, 2026·6 min
Web DevDesigning a REST API that ages wellREST conventions that actually matter: resource-shaped URLs, HTTP verbs over action names, and status codes that tell the truth, with Linkstash's real routes.Sep 1, 2026·5 min
Web DevExpress 5: your first routesInstall Express 5.2, write your first routes with async/await, and see why Express 5 forwards rejected promises to error handling automatically.Aug 31, 2026·6 min
Web DevRoute params, query strings and bodiesThe three places a request carries data in Express: :id route params, ?limit= query strings, and JSON bodies, with real Linkstash routes for each.Aug 31, 2026·6 min
Web DevYour first Node server, no frameworkBuild an HTTP server with nothing but Node's built-in http module, then see exactly which parts of that work Express will do for you.Aug 30, 2026·6 min
Web DevWhat a backend actually doesWhy a browser can't talk to a database directly, what a backend is responsible for, and the API contract you'll build across this whole series.Aug 30, 2026·5 min
CSHTTP: the request and response contractThe anatomy of an HTTP request and response: methods, headers, bodies, and status codes. Inspect real request/response pairs interactively.Aug 26, 2026·5 min
Web DevSQL Project: Design and Query a DatabasePut it together: design a small library database with SQL, create the tables, add data, and answer real questions with joins and aggregates. Fully runnable.Jul 25, 2026·11 min
Web DevSQL Window Functions, Explained SimplyWindow functions in SQL without the headache: OVER, PARTITION BY, ROW_NUMBER, RANK, and running totals. Keep every row while you rank and total, live.Jul 25, 2026·9 min
Web DevSQL Indexes and Query PerformanceMake SQL queries fast: what an index is, when to add one with CREATE INDEX, reading EXPLAIN QUERY PLAN, and the trade-offs, explained simply, with examples.Jul 24, 2026·8 min
Web DevDatabase Relationships and Foreign KeysModel relationships in SQL: one-to-many and many-to-many, foreign keys, and how the orders/customers/products tables connect, with a diagram and live queries.Jul 24, 2026·9 min
Web DevCreating Tables and Schema in SQLDesign tables with SQL: CREATE TABLE, column data types, PRIMARY KEY, NOT NULL, DEFAULT, and UNIQUE constraints. Build and query a table live in your browser.Jul 23, 2026·10 min
Web DevSQL INSERT, UPDATE and DELETEChange data in SQL: INSERT new rows, UPDATE existing ones, and DELETE safely, plus why a missing WHERE is dangerous. With live, runnable examples.Jul 23, 2026·8 min
Web DevSQL Joins: INNER, LEFT and How They WorkCombine tables in SQL with joins: INNER JOIN, LEFT JOIN, join keys, and joining three tables, explained with a diagram and live, runnable queries.Jul 22, 2026·8 min
Web DevSQL Subqueries and Nested QueriesUse a query inside a query: SQL subqueries in WHERE with IN and EXISTS, scalar subqueries, and subqueries in FROM, with live, runnable examples.Jul 22, 2026·9 min
Web DevSQL Aggregate Functions: COUNT, SUM, AVGSummarize data in SQL with aggregate functions (COUNT, SUM, AVG, MIN, MAX) and understand how they collapse many rows into one, with live queries to run.Jul 21, 2026·7 min
Web DevSQL GROUP BY and HAVING, ExplainedGroup rows and summarize per group with SQL GROUP BY, then filter groups with HAVING, and learn why HAVING isn't WHERE. With live, runnable queries.Jul 21, 2026·8 min
Web DevSQL ORDER BY, LIMIT and DISTINCTSort and trim SQL results: ORDER BY ascending/descending, sorting by multiple columns, LIMIT and OFFSET for paging, with live runnable queries.Jul 20, 2026·8 min
Web DevSQL WHERE: Filtering Rows with ConditionsFilter rows in SQL with WHERE: comparison and logical operators, BETWEEN, IN, LIKE, and IS NULL, with live, runnable queries in your browser.Jul 20, 2026·8 min
Web DevSQL SELECT Basics: Querying Your DataThe SQL SELECT statement, explained: choose columns, use SELECT *, rename with AS, and remove duplicates with DISTINCT, runnable live in your browser.Jul 19, 2026·9 min
Web DevWhy Learn SQL in 2026 (and What a Database Is)What SQL and relational databases are, why every app needs one, and your first live query, runnable in your browser against a real database.Jul 19, 2026·7 min
Web DevMigrate a JavaScript Project to TypeScriptA practical capstone: convert a small JavaScript project to TypeScript step by step, covering tsconfig, types, and fixing errors, hands-on.Jul 18, 2026·9 min
Web DevTypeScript Utility Types You'll Actually UseThe TypeScript utility types worth knowing: Partial, Pick, Omit, Record, and Required, and what each does, with runnable examples.Jul 18, 2026·8 min
Web DevTypeScript Generics, Finally ExplainedGenerics in TypeScript without the headache: reusable, type-safe functions and types, from <T> to constraints, with examples.Jul 17, 2026·7 min
Web DevUsing TypeScript with React, PracticallyType React the practical way: props, state, events, and children, the patterns you'll actually use, with a live TypeScript + React editor.Jul 17, 2026·7 min
Web DevTypeScript Arrays, Objects and TuplesType collections in TypeScript: arrays, object types, tuples, and the differences that matter, with clear, runnable examples.Jul 16, 2026·8 min
Web DevTypeScript Union Types and NarrowingModel 'one of several' with union types and safely narrow them with typeof, in, and discriminated unions, with live examples.Jul 16, 2026·8 min
Web DevTypeScript Functions and Type InferenceType function parameters and return values in TypeScript, and let inference do the work, with practical, runnable examples.Jul 15, 2026·8 min
Web DevTypeScript Interfaces vs Type AliasesDescribe object shapes in TypeScript with interfaces and type aliases: when to use which, plus optional and readonly fields, with examples.Jul 15, 2026·9 min
Web DevTypeScript Basic Types, ExplainedThe core TypeScript types (string, number, boolean, arrays, any vs unknown), plus type annotations vs inference, with live runnable code.Jul 14, 2026·8 min
Web DevWhy TypeScript? Catch Bugs Before You RunWhat TypeScript is, the bugs it catches before runtime, and why it took over, with live, type-checked examples from the very start.Jul 14, 2026·7 min
Web DevReact Composition Patterns That ScaleWrite React that stays clean: composition over props soup, the children prop, and lifting state up. Practical patterns with examples.Jul 13, 2026·8 min
Web DevReact Project: Build a Todo App with HooksPut it together: build a working React todo app with state, events, lists, and forms, fully editable live in your browser.Jul 13, 2026·9 min
Web DevReact Context: Share State Without Prop DrillingUse React Context to share state across components without prop drilling. When to reach for it, when not to, and live code to try it out.Jul 12, 2026·7 min
Web DevReact Custom Hooks: Reuse Logic CleanlyExtract and reuse logic with custom React hooks: the rules of hooks and a practical useLocalStorage example, runnable live.Jul 12, 2026·8 min
Web DevFetching Data in React with useEffect and fetchLoad data from an API in React: fetch in useEffect, loading and error states, and avoiding common bugs, with a live example.Jul 11, 2026·8 min
Web DevReact useEffect: Side Effects, ExplainedUnderstand the useEffect hook: when effects run, the dependency array, and cleanup, without the usual confusion, with live code.Jul 11, 2026·9 min
Web DevConditional Rendering in React, ExplainedShow and hide UI in React: ternaries, the && operator, early returns, and clean patterns for conditional rendering, with a live editor.Jul 10, 2026·6 min
Web DevReact Forms and Controlled ComponentsBuild forms in React the right way: controlled inputs, handling change, simple validation, and submitting, with runnable examples.Jul 10, 2026·8 min
Web DevHandling Events in React, ExplainedRespond to clicks, input and form events in React: event handlers, the synthetic event, and passing arguments, with runnable live examples.Jul 9, 2026·8 min
Web DevReact Lists and Keys: Rendering ArraysRender arrays in React with map, and why keys matter for correct, fast updates, with clear, runnable live examples.Jul 9, 2026·7 min
Web DevReact Components and Props, ExplainedBuild reusable React components and pass data with props. Composition, children, and default values, with runnable live examples.Jul 8, 2026·9 min
Web DevReact State with the useState HookMake React components interactive with useState: state vs props, updating state correctly, and re-renders, with a live counter example.Jul 8, 2026·8 min
Web DevReact JSX, Explained: HTML in Your JavaScriptHow JSX works in React: expressions in curly braces, attributes, fragments, and the rules that trip up beginners, with a live editor.Jul 7, 2026·7 min
Web DevWhy React? Components and the UI Mental ModelWhat React is, the component mental model, and why it took over UI development, with a live React component you edit in the first minute.Jul 7, 2026·8 min
Web DevCSS Project: Build a Responsive Landing PagePut HTML and CSS together: build a clean, responsive landing page from scratch, covering layout, type, and polish, live in your browser.Jul 6, 2026·13 min
Web DevBuild a Responsive Card Layout with CSS GridA hands-on CSS project: build a responsive card grid that reflows on any screen using Grid and modern CSS, fully editable in your browser.Jul 6, 2026·10 min
Web DevCSS Transitions and Animations, ExplainedAdd motion with CSS: transitions, transforms, and keyframe animations done tastefully and accessibly, with a live, editable preview you can edit.Jul 5, 2026·7 min
Web DevModern CSS in 2026: :has(), Container QueriesThe modern CSS worth knowing now: custom properties, :has(), container queries, and nesting, with practical examples you can edit live.Jul 5, 2026·9 min
Web DevCSS Positioning and z-index, DemystifiedUnderstand CSS position (static, relative, absolute, fixed, sticky) and how z-index stacking really works, with editable examples.Jul 4, 2026·10 min
Web DevResponsive Web Design with CSS Media QueriesMake pages work on any screen: mobile-first CSS, media queries, fluid units, and responsive images, with a live, editable preview.Jul 4, 2026·8 min
Web DevCSS Flexbox: One-Dimensional Layout, ExplainedMaster CSS Flexbox: main vs cross axis, justify-content, align-items, and flex-wrap, with an interactive playground to see it move.Jul 3, 2026·9 min
Web DevCSS Grid: Two-Dimensional Layout, ExplainedBuild real layouts with CSS Grid: columns, rows, gaps, and placement, with an interactive grid playground to experiment live.Jul 3, 2026·8 min
Web DevCSS Colors, Units and Typography BasicsStyle text and color in CSS: hex/rgb/hsl, rem vs px vs %, web fonts, and readable typography, with a live, editable preview.Jul 2, 2026·9 min
Web DevCSS Selectors and the Box Model, ExplainedHow CSS selectors target elements and how the box model (margin, border, padding, content) controls size, with editable live examples.Jul 2, 2026·9 min
Web DevHTML Forms and Inputs: A Practical GuideBuild accessible HTML forms: inputs, labels, selects, checkboxes, validation attributes, and the submit flow, with a live preview.Jul 1, 2026·9 min
Web DevHTML Structure and Semantic Tags, ExplainedBuild a real web page with semantic HTML: headings, lists, links, images, and landmark tags like header, main and article, with a live preview.Jul 1, 2026·9 min
Web DevJavaScript async/await and the fetch APIWrite clean asynchronous JavaScript with async/await and fetch real data from an API, with live, runnable examples.Jun 30, 2026·7 min
Web DevJavaScript Project: Build an Interactive Quiz AppPut it all together: build a small interactive quiz app in vanilla JavaScript, using DOM, events, and state, runnable in your browser.Jun 30, 2026·10 min
Web DevJavaScript Callbacks and Promises, ExplainedUnderstand asynchronous JavaScript: callbacks, the problem they cause, and how Promises fix it, with live, runnable examples to try.Jun 29, 2026·8 min
Web DevJavaScript Events: Clicks, Input and ListenersRespond to users with JavaScript events: addEventListener, the event object, clicks and input. Build interactivity, live in your browser.Jun 29, 2026·8 min
Web DevJavaScript Objects: Properties, Methods and thisModel real things with JavaScript objects: properties, methods, dot vs bracket access, and a first look at this, with live code.Jun 28, 2026·9 min
Web DevThe JavaScript DOM: Select and Change the PageUse JavaScript to read and change a web page: select elements, edit text and styles, and create nodes, all with a live preview.Jun 28, 2026·8 min
Web DevJavaScript map, filter and reduce, ExplainedTransform arrays the modern way with map, filter and reduce. Clear examples of each, runnable live in your browser.Jun 27, 2026·9 min
Web DevJavaScript Arrays: Create, Access and Change ListsStore lists in JavaScript arrays: indexing, adding and removing items, and the most useful array methods, runnable in your browser.Jun 27, 2026·8 min
Web DevJavaScript Arrow Functions and Scope, ExplainedArrow functions vs regular functions, plus block scope and closures in plain English, with live, runnable JavaScript examples.Jun 26, 2026·9 min
Web DevJavaScript Functions: Parameters and Return ValuesDefine and call JavaScript functions: parameters, return values, default parameters, and why functions are the heart of the language.Jun 26, 2026·6 min
Web DevJavaScript Loops: for, while and for...ofRepeat work in JavaScript with for, while, for...of and for...in loops. When to use each, with live runnable examples.Jun 25, 2026·8 min
Web DevJavaScript Operators and if/else ConditionalsArithmetic, comparison and logical operators, plus if/else and the ternary. Make decisions in JavaScript, with live runnable code you can edit.Jun 25, 2026·8 min
Web DevJavaScript Data Types: Numbers, Strings, BooleansThe core JavaScript data types (number, string, boolean, null, undefined) and how typeof works, explained with live runnable examples.Jun 24, 2026·7 min
Web DevJavaScript Strings and Template Literals, ExplainedWork with text in JavaScript: string methods, concatenation, and template literals for clean interpolation, with runnable examples throughout.Jun 24, 2026·8 min
Web DevJavaScript Variables: let, const and var ExplainedHow to store data in JavaScript with let and const (and why to skip var), plus block scope basics, runnable live in your browser.Jun 23, 2026·8 min
Web DevWhy Learn JavaScript in 2026 (and Where It Runs)What JavaScript is, where it runs (browser and server), and why it's the language of the web, with live code you run in the very first minute.Jun 23, 2026·7 min