{"site":{"name":"Forgeline","tagline":"Learn, practise and track software engineering — topic by topic."},"generatedAt":"2026-10-21T18:08:06.742Z","totals":{"topics":48,"pages":213,"words":221266,"minutes":1905,"tracks":24,"cards":3178,"mcq":392,"practice":149},"groups":[{"id":"interview","label":"Interview prep","hint":"MCQ drills · behavioral","topics":["interview-mcq","behavioral"]},{"id":"craft","label":"Engineering craft","hint":"Clean code · design · testing · git","topics":["software-engineering","low-level-design","testing-quality","git-collaboration"]},{"id":"languages","label":"Languages","hint":"JS/TS · Python · Java · C/C++ · Rust","topics":["javascript","python","java","c-cpp","rust","golang"]},{"id":"frontend","label":"Frontend","hint":"Web platform · React · Next · Angular · UI/UX","topics":["frontend","react","nextjs","angular","ui-ux"]},{"id":"backend","label":"Backend & frameworks","hint":"APIs · Node · Spring Boot · Django","topics":["backend","api-design","nodejs","spring-boot","django"]},{"id":"cs","label":"CS & algorithms","hint":"Fundamentals · DSA","topics":["cs-fundamentals","dsa"]},{"id":"systems","label":"Systems & data","hint":"System design · databases","topics":["system-design","database","postgresql"]},{"id":"ops","label":"DevOps, cloud & security","hint":"Linux → Kubernetes → cloud · DevSecOps · cyber security · networking","topics":["devops-cloud","security","devsecops","cyber-security","networking","reverse-engineering"]},{"id":"ai","label":"AI & data","hint":"LLMs · ML · MLOps · data engineering · analytics","topics":["ai-ml","ai-engineering","data-analysis","data-science","machine-learning","mlops","data-engineering"]},{"id":"leadership","label":"Architecture, product & leadership","hint":"Architect · UX · product · engineering management","topics":["software-architecture","ux-design","product-management","engineering-management"]},{"id":"mobile-games","label":"Mobile, games & growth","hint":"Android · game dev · game servers · SEO","topics":["android","game-development","game-server","seo"]}],"topics":[{"slug":"interview-mcq","title":"MCQ Test Prep","emoji":"📝","tag":"Screening tests","accent":"#7C3AED","blurb":"Programming, DSA, CS fundamentals and logical-reasoning guides for MCQ screening rounds.","order":1,"group":"interview","related":["cs-fundamentals","dsa","behavioral"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":84,"pages":[{"key":"interview-mcq/notes/01-programming","kind":"notes","id":"01-programming","title":"📘 Programming — MCQ Test Preparation Guide","url":"/topics/interview-mcq/notes/01-programming","description":"Covers: OOP · Design Patterns · API · Database · Networking · HTML/CSS · Programming Fundamentals","minutes":29,"words":3750},{"key":"interview-mcq/notes/02-data-structures-algorithms","kind":"notes","id":"02-data-structures-algorithms","title":"📗 Data Structures & Algorithms — MCQ Test Preparation Guide","url":"/topics/interview-mcq/notes/02-data-structures-algorithms","description":"Covers: Data Structures · Algorithms · Complexity Analysis · Recursion","minutes":20,"words":1844},{"key":"interview-mcq/notes/03-cs-fundamentals","kind":"notes","id":"03-cs-fundamentals","title":"📙 CS Fundamentals — MCQ Test Preparation Guide","url":"/topics/interview-mcq/notes/03-cs-fundamentals","description":"Covers: Database · Networking · Operating Systems · Security · API/HTTP · General Knowledge","minutes":21,"words":3985},{"key":"interview-mcq/notes/04-logical-reasoning","kind":"notes","id":"04-logical-reasoning","title":"📕 Logical Reasoning — MCQ Test Preparation Guide","url":"/topics/interview-mcq/notes/04-logical-reasoning","description":"Covers: Analytical Challenges · Simple Mathematics","minutes":14,"words":1496}],"cardCount":131},{"slug":"behavioral","title":"Behavioral","emoji":"🎤","tag":"STAR","accent":"#CA8A04","blurb":"STAR stories, technical communication, clarifying questions and mock-interview habits.","order":2,"group":"interview","related":["software-engineering","git-collaboration"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":6,"pages":[{"key":"behavioral/notes/01-behavioral-and-technical-communication","kind":"notes","id":"01-behavioral-and-technical-communication","title":"Behavioral Interviews & Technical Communication","url":"/topics/behavioral/notes/01-behavioral-and-technical-communication","description":"Strong engineers get rejected for weak communication more often than for weak algorithms. This guide covers the STAR method, a story bank for the questions you will certainly be asked, and the…","minutes":4,"words":748},{"key":"behavioral/interview/medium","kind":"interview","id":"medium","title":"Interview: Medium","url":"/topics/behavioral/interview/medium","description":"","minutes":2,"words":490,"questions":5}],"cardCount":50},{"slug":"software-engineering","title":"Software Engineering","emoji":"🧭","tag":"Best practices hub","accent":"#0D9488","blurb":"Clean code, refactoring, code review and day-to-day engineering workflow.","order":3,"group":"craft","related":["low-level-design","testing-quality","git-collaboration","devops-cloud"],"quizCount":17,"problemCount":6,"practiceCount":6,"minutes":50,"pages":[{"key":"software-engineering/notes/01-clean-code-and-refactoring","kind":"notes","id":"01-clean-code-and-refactoring","title":"Clean Code & Refactoring","url":"/topics/software-engineering/notes/01-clean-code-and-refactoring","description":"Code is read far more often than it is written. Every rule here exists to reduce the time it takes the next person — usually you, in six months — to understand and safely change it.","minutes":9,"words":1270},{"key":"software-engineering/notes/02-engineering-workflow-and-code-review","kind":"notes","id":"02-engineering-workflow-and-code-review","title":"Engineering Workflow, Code Review & Working in the AI Era","url":"/topics/software-engineering/notes/02-engineering-workflow-and-code-review","description":"What review is for: catching defects, spreading knowledge, keeping the codebase coherent, and giving the author a second brain. It is not for demonstrating seniority.","minutes":10,"words":1661},{"key":"software-engineering/notes/03-full-stack-capstone-project","kind":"notes","id":"03-full-stack-capstone-project","title":"Full-Stack Capstone: Build and Ship a Real App End to End","url":"/topics/software-engineering/notes/03-full-stack-capstone-project","description":"Reading about each layer separately is not the same as making them work together. This capstone walks you through building TaskForge , a small team task tracker, from an empty folder to a deployed,…","minutes":10,"words":880},{"key":"software-engineering/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/software-engineering/deep/theory","description":"","minutes":5,"words":546},{"key":"software-engineering/deep/best-practices","kind":"deep","id":"best-practices","title":"Deep: Best Practices","url":"/topics/software-engineering/deep/best-practices","description":"","minutes":3,"words":379},{"key":"software-engineering/deep/pitfalls","kind":"deep","id":"pitfalls","title":"Deep: Pitfalls","url":"/topics/software-engineering/deep/pitfalls","description":"","minutes":6,"words":602},{"key":"software-engineering/interview/basics","kind":"interview","id":"basics","title":"Interview: Basics","url":"/topics/software-engineering/interview/basics","description":"","minutes":5,"words":952,"questions":8},{"key":"software-engineering/interview/medium","kind":"interview","id":"medium","title":"Interview: Medium","url":"/topics/software-engineering/interview/medium","description":"","minutes":2,"words":302,"questions":4}],"cardCount":80},{"slug":"low-level-design","title":"Low-Level Design","emoji":"🧱","tag":"OOP design","accent":"#C2410C","blurb":"OOP, SOLID and design patterns applied to class-level design.","order":4,"group":"craft","related":["software-engineering","system-design","java"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":16,"pages":[{"key":"low-level-design/notes/01-oop-solid-and-design-patterns","kind":"notes","id":"01-oop-solid-and-design-patterns","title":"OOP, SOLID & Design Patterns","url":"/topics/low-level-design/notes/01-oop-solid-and-design-patterns","description":"// ✗ Anaemic model — a bag of data with a service doing all the thinking","minutes":12,"words":867},{"key":"low-level-design/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/low-level-design/deep/theory","description":"","minutes":4,"words":449}],"cardCount":20},{"slug":"testing-quality","title":"Testing & Quality","emoji":"🧪","tag":"QA","accent":"#059669","blurb":"Testing strategy, the pyramid, frontend/E2E testing and quality gates.","order":5,"group":"craft","related":["software-engineering","devops-cloud","backend","frontend"],"quizCount":16,"problemCount":5,"practiceCount":5,"minutes":39,"pages":[{"key":"testing-quality/notes/01-testing-strategy","kind":"notes","id":"01-testing-strategy","title":"Testing Strategy","url":"/topics/testing-quality/notes/01-testing-strategy","description":"The classic pyramid still holds, but the modern version emphasises integration tests with real dependencies (Testcontainers made them fast enough) over heavily-mocked unit tests.","minutes":10,"words":1269},{"key":"testing-quality/notes/02-frontend-and-e2e-testing","kind":"notes","id":"02-frontend-and-e2e-testing","title":"Frontend, Integration & E2E Testing","url":"/topics/testing-quality/notes/02-frontend-and-e2e-testing","description":"The testing strategy guide covers the pyramid and backend tactics. This guide is about testing user interfaces: component tests that resemble how people use the app, mocking the network, end-to-end…","minutes":5,"words":583},{"key":"testing-quality/notes/03-qa-engineering-test-design-and-exploratory-testing","kind":"notes","id":"03-qa-engineering-test-design-and-exploratory-testing","title":"QA Engineering: Test Design, Exploratory Testing and Bug Reporting","url":"/topics/testing-quality/notes/03-qa-engineering-test-design-and-exploratory-testing","description":"Quality assurance is more than \"running tests.\" A QA engineer works out what could go wrong, designs the smallest set of tests that would reveal it, explores the product like a curious and slightly…","minutes":7,"words":957},{"key":"testing-quality/notes/04-api-performance-and-test-automation-in-ci","kind":"notes","id":"04-api-performance-and-test-automation-in-ci","title":"API Testing, Performance Testing and Test Automation in CI","url":"/topics/testing-quality/notes/04-api-performance-and-test-automation-in-ci","description":"Manual testing doesn't scale to daily releases. Automation provides fast, repeatable regression checks, so humans can spend their time exploring.","minutes":10,"words":1056},{"key":"testing-quality/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/testing-quality/deep/theory","description":"","minutes":5,"words":440},{"key":"testing-quality/deep/best-practices","kind":"deep","id":"best-practices","title":"Deep: Best Practices","url":"/topics/testing-quality/deep/best-practices","description":"","minutes":2,"words":348}],"cardCount":100},{"slug":"git-collaboration","title":"Git & Collaboration","emoji":"🌿","logo":"/logos/git.svg","tag":"VCS","accent":"#EA580C","blurb":"Git internals, branching workflows and collaborating through PRs.","order":6,"group":"craft","related":["software-engineering","devops-cloud","behavioral"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":10,"pages":[{"key":"git-collaboration/notes/01-git","kind":"notes","id":"01-git","title":"03 · Git for DevOps","url":"/topics/git-collaboration/notes/01-git","description":"As a developer you use Git daily. The DevOps angle is Git as the source of truth for deployments : branching models that drive pipelines, tags that map to releases, and what to do when a secret gets…","minutes":5,"words":778},{"key":"git-collaboration/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/git-collaboration/deep/theory","description":"","minutes":5,"words":526}],"cardCount":18},{"slug":"javascript","title":"JavaScript & TypeScript","emoji":"🟨","logo":"/logos/javascript.svg","tag":"Language","accent":"#CA8A04","blurb":"The JS runtime model, async, the type system, and typing React code.","order":7,"group":"languages","related":["frontend","react","nodejs","nextjs"],"quizCount":5,"problemCount":2,"practiceCount":4,"minutes":29,"pages":[{"key":"javascript/notes/01-javascript","kind":"notes","id":"01-javascript","title":"JavaScript — Deep Dive & Interview Reference (2026)","url":"/topics/javascript/notes/01-javascript","description":"Current state (Sept 2026): Node.js 24 LTS and 26 (the incoming LTS) are the production targets; Node 22 is in maintenance.","minutes":12,"words":961},{"key":"javascript/notes/02-typescript","kind":"notes","id":"02-typescript","title":"TypeScript — Deep Dive & Interview Reference (2026)","url":"/topics/javascript/notes/02-typescript","description":"Current state (Sept 2026): TypeScript 7.0 shipped on 8 July 2026 — a native port of the compiler to Go, typically 8–12× faster on full builds.","minutes":11,"words":867},{"key":"javascript/notes/03-advanced-typescript-and-react-typing","kind":"notes","id":"03-advanced-typescript-and-react-typing","title":"Advanced TypeScript & Typing React","url":"/topics/javascript/notes/03-advanced-typescript-and-react-typing","description":"The TypeScript guide covers the type system basics. This one goes further: type-level programming (mapped, conditional and template literal types), patterns that make illegal states unrepresentable,…","minutes":6,"words":370}],"cardCount":66},{"slug":"python","title":"Python","emoji":"🐍","logo":"/logos/python.svg","tag":"Language","accent":"#2563EB","blurb":"Python data model, idioms, typing, concurrency and tooling.","order":8,"group":"languages","related":["django","backend","dsa","cs-fundamentals"],"quizCount":5,"problemCount":2,"practiceCount":6,"minutes":12,"pages":[{"key":"python/notes/01-python","kind":"notes","id":"01-python","title":"Python — Deep Dive & Interview Reference (2026)","url":"/topics/python/notes/01-python","description":"Current state (Sept 2026): Python 3.14 is the newest stable line (3.14.8 as of 30 Sept 2026; 3.14.0 shipped in Oct 2025). It is the first release where the free-threaded build (python3.14t, no GIL)…","minutes":12,"words":1084}],"cardCount":19},{"slug":"java","title":"Java","emoji":"☕","logo":"/logos/java.svg","tag":"Language","accent":"#EA580C","blurb":"Java language, JVM, collections, concurrency and interview Q&A.","order":9,"group":"languages","related":["spring-boot","backend","cs-fundamentals","dsa"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":280,"pages":[{"key":"java/notes/01-java","kind":"notes","id":"01-java","title":"Java — Deep Dive & Interview Reference (2026)","url":"/topics/java/notes/01-java","description":"Current state (Oct 2026): Java 25 (LTS, Sept 2025) is the target for new production work; Java 27 (15 Sept 2026) is the current six-month, non-LTS feature release (it makes G1 the default GC…","minutes":11,"words":1192},{"key":"java/interview/basics","kind":"interview","id":"basics","title":"Interview: Basics","url":"/topics/java/interview/basics","description":"","minutes":58,"words":4333,"questions":54},{"key":"java/interview/medium","kind":"interview","id":"medium","title":"Interview: Medium","url":"/topics/java/interview/medium","description":"","minutes":85,"words":4218,"questions":84},{"key":"java/interview/advanced","kind":"interview","id":"advanced","title":"Interview: Advanced","url":"/topics/java/interview/advanced","description":"","minutes":126,"words":7279,"questions":84}],"cardCount":236},{"slug":"c-cpp","title":"C & C++","emoji":"⚙️","logo":"/logos/cplusplus.svg","tag":"Language","accent":"#475569","blurb":"Memory, pointers, UB, RAII, templates and modern C++.","order":10,"group":"languages","related":["cs-fundamentals","rust","dsa"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":21,"pages":[{"key":"c-cpp/notes/01-c","kind":"notes","id":"01-c","title":"C — Deep Dive & Interview Reference (2026)","url":"/topics/c-cpp/notes/01-c","description":"Current state (Sept 2026): C23 (ISO/IEC 9899:2024) is the current standard — nullptr, constexpr, typeof, BitInt(N), [[attributes]], binary literals, embed.","minutes":10,"words":862},{"key":"c-cpp/notes/02-cpp","kind":"notes","id":"02-cpp","title":"C++ — Deep Dive & Interview Reference (2026)","url":"/topics/c-cpp/notes/02-cpp","description":"Current state (Sept 2026): C++26 was finalised in March 2026 — the headline features are static reflection , contracts , the std::execution (senders/receivers) async model , hardened standard-library…","minutes":11,"words":1147}],"cardCount":22},{"slug":"rust","title":"Rust","emoji":"🦀","logo":"/logos/rust.svg","logoDark":"/logos/rust-dark.svg","tag":"Language","accent":"#B45309","blurb":"Ownership, borrowing, traits, error handling and fearless concurrency.","order":11,"group":"languages","related":["c-cpp","cs-fundamentals","golang"],"quizCount":8,"problemCount":4,"practiceCount":4,"minutes":27,"pages":[{"key":"rust/notes/01-rust","kind":"notes","id":"01-rust","title":"Rust — Deep Dive & Interview Reference (2026)","url":"/topics/rust/notes/01-rust","description":"Current state (Oct 2026): Rust 1.99 (1 October 2026) is the latest stable (six-week cadence). Edition 2024 (stable since Rust 1.85) is the default for new crates — it reserves the gen keyword (gen…","minutes":12,"words":1220},{"key":"rust/notes/02-async-rust-and-edition-2024","kind":"notes","id":"02-async-rust-and-edition-2024","title":"Async Rust and Edition 2024 — What's New and How to Use It","url":"/topics/rust/notes/02-async-rust-and-edition-2024","description":"Edition 2024 (Rust 1.85, stabilized Feb 2025) is the default for new crates, and the 1.85–1.90 releases landed the features that make modern async code readable.","minutes":2,"words":274},{"key":"rust/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/rust/deep/theory","description":"","minutes":2,"words":320},{"key":"rust/deep/internals","kind":"deep","id":"internals","title":"Deep: Internals","url":"/topics/rust/deep/internals","description":"","minutes":2,"words":312},{"key":"rust/deep/pitfalls","kind":"deep","id":"pitfalls","title":"Deep: Pitfalls","url":"/topics/rust/deep/pitfalls","description":"","minutes":2,"words":324},{"key":"rust/interview/basics","kind":"interview","id":"basics","title":"Interview: Basics","url":"/topics/rust/interview/basics","description":"","minutes":2,"words":441,"questions":6},{"key":"rust/interview/medium","kind":"interview","id":"medium","title":"Interview: Medium","url":"/topics/rust/interview/medium","description":"","minutes":2,"words":491,"questions":6},{"key":"rust/interview/advanced","kind":"interview","id":"advanced","title":"Interview: Advanced","url":"/topics/rust/interview/advanced","description":"","minutes":3,"words":538,"questions":6}],"cardCount":55},{"slug":"frontend","title":"Frontend","emoji":"🎨","logo":"/logos/html5.svg","tag":"Web UI","accent":"#DB2777","blurb":"How browsers work: HTML/CSS/JS, rendering, web APIs, performance and security.","order":12,"group":"frontend","related":["react","nextjs","angular","ui-ux"],"quizCount":13,"problemCount":4,"practiceCount":5,"minutes":48,"pages":[{"key":"frontend/notes/01-web-platform-fundamentals","kind":"notes","id":"01-web-platform-fundamentals","title":"Web Platform Fundamentals — Browser, HTTP, CSS, Accessibility","url":"/topics/frontend/notes/01-web-platform-fundamentals","description":"Framework questions come and go; these are the ones that separate someone who uses React from someone who understands what the browser is doing underneath. Every senior frontend interview goes here.","minutes":8,"words":1146},{"key":"frontend/notes/02-browser-apis-rendering-and-security","kind":"notes","id":"02-browser-apis-rendering-and-security","title":"Browser APIs, Rendering & Frontend Security","url":"/topics/frontend/notes/02-browser-apis-rendering-and-security","description":"A companion to Web Platform Fundamentals : the observer APIs, offline and real-time capabilities, how the browser turns code into pixels, and the headers that keep a frontend safe.","minutes":4,"words":623},{"key":"frontend/notes/03-semantic-html-and-forms","kind":"notes","id":"03-semantic-html-and-forms","title":"Semantic HTML, Forms and the Document Outline","url":"/topics/frontend/notes/03-semantic-html-and-forms","description":"HTML is easy to write badly. A page built entirely from elements looks fine to a sighted mouse user, but it is invisible to screen readers, hard for search engines to understand, and needs extra…","minutes":10,"words":1004},{"key":"frontend/notes/04-modern-css-layout-and-architecture","kind":"notes","id":"04-modern-css-layout-and-architecture","title":"Modern CSS: Layout, Responsive Design and Architecture","url":"/topics/frontend/notes/04-modern-css-layout-and-architecture","description":"CSS fails in two ways. In small projects it's \"I can't centre this.\" In large projects it's \"I changed a margin and broke three pages I've never seen.\" This guide covers the layout tools that solve…","minutes":9,"words":989},{"key":"frontend/notes/05-build-tools-and-the-frontend-toolchain","kind":"notes","id":"05-build-tools-and-the-frontend-toolchain","title":"Build Tools and the Frontend Toolchain","url":"/topics/frontend/notes/05-build-tools-and-the-frontend-toolchain","description":"Browsers run HTML, CSS and JavaScript. Modern frontend code is written in TypeScript and JSX, imports packages from npm, and uses syntax older browsers don't understand.","minutes":8,"words":1023},{"key":"frontend/notes/06-web-performance-and-pwas","kind":"notes","id":"06-web-performance-and-pwas","title":"Web Performance, Core Web Vitals and Progressive Web Apps","url":"/topics/frontend/notes/06-web-performance-and-pwas","description":"Speed is a feature users notice even when they can't name it. Slow pages lose visitors, conversions and search ranking, since Google uses Core Web Vitals as a ranking signal.","minutes":9,"words":1034}],"cardCount":102},{"slug":"react","title":"React","emoji":"⚛️","logo":"/logos/react.svg","tag":"Library","accent":"#0891B2","blurb":"React core, hooks, performance patterns, state, data fetching and tooling.","order":13,"group":"frontend","related":["frontend","nextjs","testing-quality"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":31,"pages":[{"key":"react/notes/01-react-core","kind":"notes","id":"01-react-core","title":"React Core — Hooks, Rendering, and the 2026 Mental Model","url":"/topics/react/notes/01-react-core","description":"Current state (Oct 2026): React 19.3 (9 Sept 2026) is the latest release; it made View Transitions and Fragment Refs stable.","minutes":12,"words":1219},{"key":"react/notes/02-react-performance-and-patterns","kind":"notes","id":"02-react-performance-and-patterns","title":"React Performance & Component Patterns","url":"/topics/react/notes/02-react-performance-and-patterns","description":"Performance work in React is 90% \"stop doing unnecessary work\" and 10% clever tricks. This note covers how to find the waste, the patterns that prevent it structurally, and what the React Compiler…","minutes":10,"words":962},{"key":"react/notes/03-state-data-and-tooling","kind":"notes","id":"03-state-data-and-tooling","title":"Frontend State, Data Fetching, Tooling & Testing","url":"/topics/react/notes/03-state-data-and-tooling","description":"Most \"which state library?\" debates dissolve once you separate the kinds:","minutes":9,"words":952}],"cardCount":71},{"slug":"nextjs","title":"Next.js","emoji":"▲","logo":"/logos/nextjs.svg","tag":"Framework","accent":"#111827","blurb":"Routing, rendering modes (SSG/SSR/ISR/RSC), data fetching and deployment.","order":14,"group":"frontend","related":["react","frontend","nodejs","devops-cloud"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":6,"pages":[{"key":"nextjs/notes/01-nextjs-essentials","kind":"notes","id":"01-nextjs-essentials","title":"Next.js Essentials","url":"/topics/nextjs/notes/01-nextjs-essentials","description":"Next.js is a React framework that adds routing, server rendering, data fetching, bundling and deployment conventions. Interviews focus on rendering strategies (when HTML is produced), the App Router…","minutes":6,"words":674}],"cardCount":31},{"slug":"angular","title":"Angular","emoji":"🅰️","logo":"/logos/angular.svg","tag":"Framework","accent":"#DC2626","blurb":"Components, DI, RxJS, routing, forms and change detection.","order":15,"group":"frontend","related":["frontend","ui-ux","testing-quality"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":6,"pages":[{"key":"angular/notes/01-angular-and-rxjs-essentials","kind":"notes","id":"01-angular-and-rxjs-essentials","title":"Angular & RxJS Essentials","url":"/topics/angular/notes/01-angular-and-rxjs-essentials","description":"Angular is a batteries-included TypeScript framework: components, dependency injection, router, forms, HTTP client and testing tools ship together.","minutes":6,"words":806}],"cardCount":38},{"slug":"ui-ux","title":"UI/UX","emoji":"✨","logo":"/logos/figma.svg","tag":"Product UI","accent":"#BE185D","blurb":"Usability heuristics, accessibility, layout and interaction design for engineers.","order":16,"group":"frontend","related":["frontend","react","angular"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":3,"pages":[{"key":"ui-ux/notes/01-ui-ux-essentials-for-engineers","kind":"notes","id":"01-ui-ux-essentials-for-engineers","title":"UI/UX Essentials for Engineers","url":"/topics/ui-ux/notes/01-ui-ux-essentials-for-engineers","description":"You don't need to be a designer to build interfaces people enjoy. This guide covers the principles behind usable UIs, the accessibility rules engineers are expected to know, layout and typography…","minutes":3,"words":664}],"cardCount":13},{"slug":"backend","title":"Backend","emoji":"🖥️","tag":"Server","accent":"#0284C7","blurb":"Backend fundamentals, architecture patterns, caching and optimisation.","order":17,"group":"backend","related":["api-design","database","security","system-design","nodejs"],"quizCount":22,"problemCount":8,"practiceCount":8,"minutes":69,"pages":[{"key":"backend/notes/01-backend-architecture-patterns","kind":"notes","id":"01-backend-architecture-patterns","title":"7 Backend Architecture Patterns — Deep Dive Guide","url":"/topics/backend/notes/01-backend-architecture-patterns","description":"Every real production system (Amazon, Uber, a hospital's microservices platform) is a combination of these patterns — never just one.","minutes":15,"words":2534},{"key":"backend/notes/02-backend-optimization-patterns","kind":"notes","id":"02-backend-optimization-patterns","title":"Advanced Backend Optimization Patterns — Deep Dive","url":"/topics/backend/notes/02-backend-optimization-patterns","description":"A study guide covering 7 production patterns for high availability, performance, and data management — with real tools, code-level implementation notes, and how each connects to topics you're already…","minutes":12,"words":2167},{"key":"backend/notes/03-how-the-internet-and-http-work","kind":"notes","id":"03-how-the-internet-and-http-work","title":"How the Internet and HTTP Actually Work","url":"/topics/backend/notes/03-how-the-internet-and-http-work","description":"Every backend request crosses a dozen systems before your code runs. When a request is slow, fails intermittently, or works with curl but not in a browser, the cause is usually in one of those…","minutes":11,"words":1567},{"key":"backend/notes/04-web-servers-and-reverse-proxies","kind":"notes","id":"04-web-servers-and-reverse-proxies","title":"Web Servers, Reverse Proxies and Load Balancers","url":"/topics/backend/notes/04-web-servers-and-reverse-proxies","description":"Your application almost never faces the internet directly. In production a reverse proxy such as Nginx, Caddy, HAProxy, Traefik or a cloud load balancer sits in front of it.","minutes":10,"words":1135},{"key":"backend/notes/05-search-engines-and-full-text-search","kind":"notes","id":"05-search-engines-and-full-text-search","title":"Search Engines and Full-Text Search","url":"/topics/backend/notes/05-search-engines-and-full-text-search","description":"\"Add a search box\" sounds simple until users type iphone 15 pro case and expect results for \"Case for iPhone 15 Pro (blue)\", typos included, ranked by relevance, in under 100 ms.","minutes":8,"words":1045},{"key":"backend/deep/internals","kind":"deep","id":"internals","title":"Deep: Internals","url":"/topics/backend/deep/internals","description":"","minutes":3,"words":419},{"key":"backend/deep/best-practices","kind":"deep","id":"best-practices","title":"Deep: Best Practices","url":"/topics/backend/deep/best-practices","description":"","minutes":3,"words":433},{"key":"backend/deep/performance","kind":"deep","id":"performance","title":"Deep: Performance","url":"/topics/backend/deep/performance","description":"","minutes":3,"words":430},{"key":"backend/interview/medium","kind":"interview","id":"medium","title":"Interview: Medium","url":"/topics/backend/interview/medium","description":"","minutes":2,"words":466,"questions":5},{"key":"backend/interview/advanced","kind":"interview","id":"advanced","title":"Interview: Advanced","url":"/topics/backend/interview/advanced","description":"","minutes":2,"words":380,"questions":5}],"cardCount":159},{"slug":"api-design","title":"API Design","emoji":"🔌","logo":"/logos/openapi.svg","tag":"Interfaces","accent":"#7C3AED","blurb":"REST/GraphQL/gRPC design, versioning, idempotency and pagination.","order":18,"group":"backend","related":["backend","system-design","security"],"quizCount":16,"problemCount":6,"practiceCount":6,"minutes":34,"pages":[{"key":"api-design/notes/01-openapi-documentation-and-contracts","kind":"notes","id":"01-openapi-documentation-and-contracts","title":"OpenAPI, Documentation and Contract-First APIs","url":"/topics/api-design/notes/01-openapi-documentation-and-contracts","description":"An API is only as good as other people's ability to use it correctly. Teams lose weeks to undocumented fields, surprise breaking changes and \"what does this error mean?\" Slack threads.","minutes":11,"words":853},{"key":"api-design/notes/02-pagination-rate-limiting-and-versioning","kind":"notes","id":"02-pagination-rate-limiting-and-versioning","title":"Pagination, Filtering, Rate Limiting and Versioning","url":"/topics/api-design/notes/02-pagination-rate-limiting-and-versioning","description":"Most API pain shows up after launch. A list endpoint gets slow at 2 million rows, one client hammers you with 500 requests a second, or a field has to change while thousands of installed mobile apps…","minutes":8,"words":1014},{"key":"api-design/notes/03-webhooks-and-asynchronous-apis","kind":"notes","id":"03-webhooks-and-asynchronous-apis","title":"Webhooks and Asynchronous APIs","url":"/topics/api-design/notes/03-webhooks-and-asynchronous-apis","description":"Not everything fits in a single request/response. A payment confirms seconds later, a video takes minutes to transcode, and an order's status changes over 40 minutes.","minutes":8,"words":912},{"key":"api-design/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/api-design/deep/theory","description":"","minutes":6,"words":559},{"key":"api-design/deep/internals","kind":"deep","id":"internals","title":"Deep: Internals","url":"/topics/api-design/deep/internals","description":"","minutes":1,"words":237}],"cardCount":68},{"slug":"nodejs","title":"Node.js","emoji":"🟢","logo":"/logos/nodejs.svg","tag":"Runtime","accent":"#15803D","blurb":"Event loop, Express, streams, clustering and running Node in production.","order":19,"group":"backend","related":["backend","nextjs","frontend","api-design"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":8,"pages":[{"key":"nodejs/notes/01-nodejs-express-in-production","kind":"notes","id":"01-nodejs-express-in-production","title":"Node.js & Express in Production","url":"/topics/nodejs/notes/01-nodejs-express-in-production","description":"Node is a single-threaded JavaScript runtime built around an event loop and non-blocking I/O. It is excellent for I/O-heavy services (APIs, gateways, real-time apps) and poor at long CPU-bound work…","minutes":8,"words":898}],"cardCount":41},{"slug":"spring-boot","title":"Spring Boot","emoji":"🍃","logo":"/logos/spring.svg","tag":"Framework","accent":"#16A34A","blurb":"The full Spring Boot ecosystem, module by module, plus interview Q&A.","order":20,"group":"backend","related":["java","backend","database","security"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":148,"pages":[{"key":"spring-boot/notes/00-INDEX-spring-boot-ecosystem","kind":"notes","id":"00-INDEX-spring-boot-ecosystem","title":"The Spring Boot Ecosystem — Full Reference Series (2026)","url":"/topics/spring-boot/notes/00-INDEX-spring-boot-ecosystem","description":"Based on the \"iceberg\" post: Spring Boot looks like @RestController + @Service + @Autowired, but production systems run on 8 layers underneath.","minutes":3,"words":682},{"key":"spring-boot/notes/01-core-framework","kind":"notes","id":"01-core-framework","title":"Core Framework — Spring Core, IoC/DI, MVC, Auto-configuration","url":"/topics/spring-boot/notes/01-core-framework","description":"This is the layer everyone touches without thinking about it. @Service, @Autowired, @RestController all sit on top of these mechanisms.","minutes":8,"words":1041},{"key":"spring-boot/notes/02-data-layer","kind":"notes","id":"02-data-layer","title":"Data Layer — Hibernate, Spring Data JPA, PostgreSQL, HikariCP, Migrations","url":"/topics/spring-boot/notes/02-data-layer","description":"Hibernate is the ORM implementation; Spring Data JPA is a layer on top that eliminates boilerplate DAO code by generating implementations from interface method names or @Query annotations.","minutes":6,"words":559},{"key":"spring-boot/notes/03-web-and-apis","kind":"notes","id":"03-web-and-apis","title":"Web & APIs — REST, WebFlux, gRPC, OpenAPI, RestClient","url":"/topics/spring-boot/notes/03-web-and-apis","description":"@RequestMapping(\"/api/orders\")","minutes":8,"words":715},{"key":"spring-boot/notes/04-security","kind":"notes","id":"04-security","title":"Security — Spring Security, OAuth 2.1, Keycloak, RBAC/ABAC","url":"/topics/spring-boot/notes/04-security","description":"Application security is one of the highest-leverage tracks for a backend engineer, so this guide goes a bit deeper than the others.","minutes":8,"words":896},{"key":"spring-boot/notes/05-messaging-and-async","kind":"notes","id":"05-messaging-and-async","title":"Messaging & Async — Kafka, RabbitMQ, Outbox, Saga in Spring Boot","url":"/topics/spring-boot/notes/05-messaging-and-async","description":"This guide assumes you know Outbox, Saga and idempotency at the architecture-pattern level (see Backend architecture patterns).","minutes":9,"words":903},{"key":"spring-boot/notes/06-caching-and-storage","kind":"notes","id":"06-caching-and-storage","title":"Caching & Storage — Redis, MongoDB, SQS/SNS, Cassandra","url":"/topics/spring-boot/notes/06-caching-and-storage","description":"public class CacheConfig {","minutes":6,"words":828},{"key":"spring-boot/notes/07-cloud-and-devops","kind":"notes","id":"07-cloud-and-devops","title":"Cloud & DevOps — Docker, Kubernetes, Spring Cloud, CI/CD, Terraform","url":"/topics/spring-boot/notes/07-cloud-and-devops","description":"Cloud security is one of the highest-leverage tracks for backend engineers; the Gateway API section below is the biggest concrete change in this space in 2026.","minutes":8,"words":790},{"key":"spring-boot/notes/08-monitoring-and-testing","kind":"notes","id":"08-monitoring-and-testing","title":"Monitoring & Testing — Actuator, Prometheus, Grafana, Resilience4j, Observability","url":"/topics/spring-boot/notes/08-monitoring-and-testing","description":"include: health, metrics, prometheus, info","minutes":8,"words":846},{"key":"spring-boot/notes/09-spring-aop-and-interview-checklist","kind":"notes","id":"09-spring-aop-and-interview-checklist","title":"Spring AOP, Request Lifecycle & Interview Checklist","url":"/topics/spring-boot/notes/09-spring-aop-and-interview-checklist","description":"This chapter fills the remaining gaps from the Spring track: aspect-oriented programming with @Aspect, how a request flows through DispatcherServlet, profiles and configuration, and a rapid-fire…","minutes":4,"words":623},{"key":"spring-boot/interview/basics","kind":"interview","id":"basics","title":"Interview: Basics","url":"/topics/spring-boot/interview/basics","description":"","minutes":26,"words":1797,"questions":23},{"key":"spring-boot/interview/medium","kind":"interview","id":"medium","title":"Interview: Medium","url":"/topics/spring-boot/interview/medium","description":"","minutes":26,"words":1386,"questions":23},{"key":"spring-boot/interview/advanced","kind":"interview","id":"advanced","title":"Interview: Advanced","url":"/topics/spring-boot/interview/advanced","description":"","minutes":28,"words":875,"questions":13}],"cardCount":159},{"slug":"django","title":"Django","emoji":"🐍","logo":"/logos/django.svg","tag":"Framework","accent":"#0F766E","blurb":"Django core, the ORM, DRF, async, Celery and hardening.","order":21,"group":"backend","related":["python","backend","database","security"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":38,"pages":[{"key":"django/notes/01-django-core-and-orm","kind":"notes","id":"01-django-core-and-orm","title":"Django Core — MVT, ORM, Migrations, Settings","url":"/topics/django/notes/01-django-core-and-orm","description":"Current state (Sept 2026): Django 6.1 (Aug 2026) is the newest feature release; 5.2 LTS (supported to April 2028) is the safe production target.","minutes":14,"words":981},{"key":"django/notes/02-drf-and-api-design","kind":"notes","id":"02-drf-and-api-design","title":"Django REST Framework & API Design","url":"/topics/django/notes/02-drf-and-api-design","description":"DRF is still the default way to build APIs on Django. Django Ninja (Pydantic + async + auto OpenAPI) is the fast-growing alternative and is worth knowing by name in interviews.","minutes":13,"words":991},{"key":"django/notes/03-async-performance-and-security","kind":"notes","id":"03-async-performance-and-security","title":"Django Async, Celery, Performance & Security Hardening","url":"/topics/django/notes/03-async-performance-and-security","description":"Django has async views, async middleware, async ORM methods (aget, acreate, afilter via async for), async signals, and an async-capable ORM connection layer.","minutes":11,"words":1145}],"cardCount":46},{"slug":"cs-fundamentals","title":"CS Fundamentals","emoji":"🧮","tag":"Foundations","accent":"#4F46E5","blurb":"OS, networking, concurrency and computer architecture essentials.","order":22,"group":"cs","related":["dsa","backend","security","java","python","nodejs"],"quizCount":15,"problemCount":6,"practiceCount":6,"minutes":10,"pages":[{"key":"cs-fundamentals/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/cs-fundamentals/deep/theory","description":"","minutes":3,"words":438},{"key":"cs-fundamentals/deep/internals","kind":"deep","id":"internals","title":"Deep: Internals","url":"/topics/cs-fundamentals/deep/internals","description":"","minutes":4,"words":596},{"key":"cs-fundamentals/interview/basics","kind":"interview","id":"basics","title":"Interview: Basics","url":"/topics/cs-fundamentals/interview/basics","description":"","minutes":3,"words":521,"questions":5}],"cardCount":47},{"slug":"dsa","title":"DSA","emoji":"🧩","tag":"Algorithms","accent":"#B45309","blurb":"Complexity, data structures, problem patterns, graphs, DP and advanced algorithms.","order":23,"group":"cs","related":["cs-fundamentals","low-level-design","java","python"],"quizCount":15,"problemCount":6,"practiceCount":15,"minutes":72,"pages":[{"key":"dsa/notes/01-complexity-and-core-structures","kind":"notes","id":"01-complexity-and-core-structures","title":"Complexity & Core Data Structures","url":"/topics/dsa/notes/01-complexity-and-core-structures","description":"Big-O describes how runtime grows with input size, ignoring constants. It's a tool for choosing between approaches — not a substitute for measuring.","minutes":13,"words":1199},{"key":"dsa/notes/02-patterns-and-problem-solving","kind":"notes","id":"02-patterns-and-problem-solving","title":"Problem-Solving Patterns — The 12 That Cover Most Interviews","url":"/topics/dsa/notes/02-patterns-and-problem-solving","description":"Almost every array/string interview question is one of a dozen patterns. Recognising the pattern in the first two minutes is the skill being tested.","minutes":13,"words":664},{"key":"dsa/notes/03-graphs-trees-and-dp","kind":"notes","id":"03-graphs-trees-and-dp","title":"Graphs, Trees & Dynamic Programming","url":"/topics/dsa/notes/03-graphs-trees-and-dp","description":"graph = {0: [1, 2], 1: [2], 2: [0, 3], 3: []}","minutes":14,"words":991},{"key":"dsa/notes/04-advanced-algorithms","kind":"notes","id":"04-advanced-algorithms","title":"Advanced Algorithms & Patterns","url":"/topics/dsa/notes/04-advanced-algorithms","description":"The core DSA guides cover complexity, the standard structures and the dozen common patterns. This guide collects the \"next level\" material from the prep map: binary-search-on-answer, monotonic…","minutes":10,"words":1224},{"key":"dsa/notes/05-coding-interview-playbook","kind":"notes","id":"05-coding-interview-playbook","title":"Coding Interview Playbook","url":"/topics/dsa/notes/05-coding-interview-playbook","description":"Knowing algorithms is half the job; the other half is recognising which one applies, communicating while you work, and testing your own code.","minutes":4,"words":702},{"key":"dsa/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/dsa/deep/theory","description":"","minutes":4,"words":392},{"key":"dsa/deep/best-practices","kind":"deep","id":"best-practices","title":"Deep: Best Practices","url":"/topics/dsa/deep/best-practices","description":"","minutes":11,"words":1143},{"key":"dsa/interview/medium","kind":"interview","id":"medium","title":"Interview: Medium","url":"/topics/dsa/interview/medium","description":"","minutes":3,"words":628,"questions":5}],"cardCount":215},{"slug":"system-design","title":"System Design","emoji":"🏛️","tag":"HLD","accent":"#9333EA","blurb":"Scalability, distributed systems, messaging and the system design interview.","order":24,"group":"systems","related":["backend","database","devops-cloud","api-design"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":52,"pages":[{"key":"system-design/notes/01-system-design-fundamentals","kind":"notes","id":"01-system-design-fundamentals","title":"System Design Fundamentals","url":"/topics/system-design/notes/01-system-design-fundamentals","description":"The interview is not testing whether you can name technologies. It's testing whether you can start from requirements, do arithmetic, make a trade-off explicitly, and know where your design breaks.","minutes":8,"words":1512},{"key":"system-design/notes/02-monolith-microservices-and-boundaries","kind":"notes","id":"02-monolith-microservices-and-boundaries","title":"Monolith, Modular Monolith & Microservices — Choosing Boundaries","url":"/topics/system-design/notes/02-monolith-microservices-and-boundaries","description":"The 2026 consensus: start with a modular monolith and extract services when you have a specific, named reason — a component with a genuinely different scaling profile, a team that needs an…","minutes":10,"words":1303},{"key":"system-design/notes/03-distributed-systems-and-consistency","kind":"notes","id":"03-distributed-systems-and-consistency","title":"Distributed Systems & Consistency","url":"/topics/system-design/notes/03-distributed-systems-and-consistency","description":"Every distributed bug you will ever debug is one of these assumptions being wrong:","minutes":8,"words":1281},{"key":"system-design/notes/04-event-driven-and-messaging","kind":"notes","id":"04-event-driven-and-messaging","title":"Event-Driven Architecture & Messaging","url":"/topics/system-design/notes/04-event-driven-and-messaging","description":"Current state (Sept 2026): Kafka 4.x is ZooKeeper-free (KRaft), with tiered storage and queues for Kafka (KIP-932) making it viable for classic queue workloads.","minutes":10,"words":1462},{"key":"system-design/notes/05-system-design-interview-playbook","kind":"notes","id":"05-system-design-interview-playbook","title":"System Design Interview Playbook","url":"/topics/system-design/notes/05-system-design-interview-playbook","description":"The architecture guides explain the building blocks. This playbook is about the interview itself: a five-step structure, estimation with numbers you should know by heart, the reliability and scaling…","minutes":6,"words":1135},{"key":"system-design/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/system-design/deep/theory","description":"","minutes":6,"words":612},{"key":"system-design/interview/medium","kind":"interview","id":"medium","title":"Interview: Medium","url":"/topics/system-design/interview/medium","description":"","minutes":4,"words":806,"questions":5}],"cardCount":96},{"slug":"database","title":"Database","emoji":"🗄️","tag":"Data","accent":"#0369A1","blurb":"SQL, modelling, indexing, transactions, scaling, NoSQL and caching.","order":25,"group":"systems","related":["backend","system-design","django","spring-boot"],"quizCount":5,"problemCount":2,"practiceCount":7,"minutes":53,"pages":[{"key":"database/notes/01-sql-and-data-modelling","kind":"notes","id":"01-sql-and-data-modelling","title":"SQL & Data Modelling","url":"/topics/database/notes/01-sql-and-data-modelling","description":"Current state (Sept 2026): PostgreSQL 18 (18.6) is the newest released major (PostgreSQL 19 is in release candidates, with GA scheduled for late October 2026) — async I/O, skip-scan for B-tree…","minutes":12,"words":953},{"key":"database/notes/02-indexing-and-query-performance","kind":"notes","id":"02-indexing-and-query-performance","title":"Indexing & Query Performance","url":"/topics/database/notes/02-indexing-and-query-performance","description":"The highest-leverage database skill: reading a plan, knowing which index fixes it, and knowing when an index is the wrong answer.","minutes":11,"words":1084},{"key":"database/notes/03-transactions-and-concurrency","kind":"notes","id":"03-transactions-and-concurrency","title":"Transactions, Isolation & Concurrency Control","url":"/topics/database/notes/03-transactions-and-concurrency","description":"UPDATE accounts SET balance = balance - 500 WHERE id = 1;","minutes":8,"words":1064},{"key":"database/notes/04-scaling-nosql-and-caching","kind":"notes","id":"04-scaling-nosql-and-caching","title":"Scaling, Replication, Sharding, NoSQL & Caching","url":"/topics/database/notes/04-scaling-nosql-and-caching","description":"1. Fix the queries. Indexes and N+1 fixes routinely give 10–100×. Cheaper and safer than any infrastructure change.","minutes":9,"words":1504},{"key":"database/notes/05-advanced-sql-and-nosql-deep-dive","kind":"notes","id":"05-advanced-sql-and-nosql-deep-dive","title":"Advanced SQL, Warehousing & NoSQL Deep Dive","url":"/topics/database/notes/05-advanced-sql-and-nosql-deep-dive","description":"The first four database guides cover modelling, indexing, transactions and scaling. This one fills the gaps that senior interviews like to probe: analytical SQL (window functions, CTEs), warehouse…","minutes":8,"words":1247},{"key":"database/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/database/deep/theory","description":"","minutes":5,"words":557}],"cardCount":106},{"slug":"devops-cloud","title":"DevOps & Cloud","emoji":"🚀","tag":"Ops","accent":"#4F46E5","blurb":"Linux, networking, Docker, Kubernetes, CI/CD, Terraform, Azure/AWS and observability.","order":26,"group":"ops","related":["git-collaboration","security","system-design","backend"],"quizCount":16,"problemCount":5,"practiceCount":5,"minutes":203,"pages":[{"key":"devops-cloud/notes/01-linux","kind":"notes","id":"01-linux","title":"Linux for DevOps","url":"/topics/devops-cloud/notes/01-linux","description":"Almost every container, Kubernetes node, and Azure VM you touch runs Linux. Troubleshooting skill is mostly Linux skill.","minutes":10,"words":1260},{"key":"devops-cloud/notes/02-networking","kind":"notes","id":"02-networking","title":"Networking Fundamentals","url":"/topics/devops-cloud/notes/02-networking","description":"A large share of production incidents come down to DNS, a port, a firewall rule, or TLS. This note gives you the model to debug them layer by layer.","minutes":8,"words":1498},{"key":"devops-cloud/notes/03-docker","kind":"notes","id":"03-docker","title":"Docker & Containers","url":"/topics/devops-cloud/notes/03-docker","description":"You've used Docker as a developer. The DevOps bar is higher: you need small, secure, reproducible images , correct signal handling, and to know what a container is at the kernel level.","minutes":10,"words":1194},{"key":"devops-cloud/notes/04-kubernetes","kind":"notes","id":"04-kubernetes","title":"Kubernetes","url":"/topics/devops-cloud/notes/04-kubernetes","description":"The JD says \"exposure to Kubernetes\" for associate level. In practice you'll be asked to read manifests, deploy, and debug . Architecture questions show depth, but debugging skill gets you hired.","minutes":21,"words":2165},{"key":"devops-cloud/notes/05-helm","kind":"notes","id":"05-helm","title":"Helm","url":"/topics/devops-cloud/notes/05-helm","description":"The JD lists \"maintain … Helm charts\" as a direct responsibility. Expect to read a chart, change values per environment, debug a failed upgrade, and roll back.","minutes":11,"words":960},{"key":"devops-cloud/notes/06-cicd","kind":"notes","id":"06-cicd","title":"CI/CD — GitHub Actions & Azure Pipelines","url":"/topics/devops-cloud/notes/06-cicd","description":"\"Assist in maintaining CI/CD pipelines and automated deployment workflows.\" You'll likely be asked to read or fix a pipeline YAML live . Know both GitHub Actions and Azure DevOps Pipelines.","minutes":15,"words":1422},{"key":"devops-cloud/notes/07-terraform","kind":"notes","id":"07-terraform","title":"Terraform (on Azure)","url":"/topics/devops-cloud/notes/07-terraform","description":"\"Assist with Infrastructure as Code using Terraform\" and an \"automation-first and infrastructure-as-code mindset.\" Expect conceptual questions (state!) and possibly writing or fixing a small .tf file.","minutes":18,"words":1289},{"key":"devops-cloud/notes/08-azure","kind":"notes","id":"08-azure","title":"Azure for DevOps","url":"/topics/devops-cloud/notes/08-azure","description":"\"Work with Azure cloud services, virtual networks, compute, storage, and related platform services.\" You know cloud concepts from your AWS-focused prep.","minutes":11,"words":1911},{"key":"devops-cloud/notes/09-observability","kind":"notes","id":"09-observability","title":"Observability, Alerting & Incident Response","url":"/topics/devops-cloud/notes/09-observability","description":"\"Monitor applications and infrastructure, investigate alerts, and support incident resolution.\" At associate level you'll be the first person looking at an alert.","minutes":11,"words":1152},{"key":"devops-cloud/notes/10-security","kind":"notes","id":"10-security","title":"Security: Access, Secrets, Hardening, Supply Chain","url":"/topics/devops-cloud/notes/10-security","description":"\"Apply basic cloud security, access control, secrets management, and infrastructure hardening practices.\" Employers routinely list cloud security next to automation and scalability.","minutes":11,"words":1478},{"key":"devops-cloud/notes/11-scripting","kind":"notes","id":"11-scripting","title":"Scripting for DevOps — Bash & Python","url":"/topics/devops-cloud/notes/11-scripting","description":"\"Scripting knowledge in Bash, Python, or a similar language.\" Your Python is already strong. The gap is usually defensive Bash : scripts that fail loudly and safely instead of silently doing damage.","minutes":12,"words":740},{"key":"devops-cloud/notes/12-troubleshooting-runbooks","kind":"notes","id":"12-troubleshooting-runbooks","title":"Troubleshooting Runbooks","url":"/topics/devops-cloud/notes/12-troubleshooting-runbooks","description":"DevOps interviews often include hands-on or scenario tasks. Interviewers judge your method more than recall. Practise these out loud with a timer: 5 minutes per scenario.","minutes":9,"words":1536},{"key":"devops-cloud/notes/13-interview-question-bank","kind":"notes","id":"13-interview-question-bank","title":"Interview Question Bank — Associate DevOps","url":"/topics/devops-cloud/notes/13-interview-question-bank","description":"Answer format that works: definition in one line → why it matters → a concrete example (medilab or your real work) → a trade-off or gotcha. Aim for 60–90 seconds per answer. Practise out loud.","minutes":12,"words":2410},{"key":"devops-cloud/notes/14-capstone-project","kind":"notes","id":"14-capstone-project","title":"Capstone: medilab-platform","url":"/topics/devops-cloud/notes/14-capstone-project","description":"One public repo that proves every line of the JD. It's worth more than any certificate at associate level, and it gives you real stories for every interview question. Build it in milestones;","minutes":5,"words":553},{"key":"devops-cloud/notes/15-aws-cloud-essentials","kind":"notes","id":"15-aws-cloud-essentials","title":"AWS Cloud Essentials & Deployment Strategies","url":"/topics/devops-cloud/notes/15-aws-cloud-essentials","description":"The DevOps track uses Azure for its cloud chapter. Many interviews assume AWS vocabulary, so this guide maps the core AWS services, compares infrastructure-as-code options, and summarises container…","minutes":5,"words":799},{"key":"devops-cloud/notes/16-gitops-and-argo-cd","kind":"notes","id":"16-gitops-and-argo-cd","title":"GitOps with Argo CD","url":"/topics/devops-cloud/notes/16-gitops-and-argo-cd","description":"In a classic pipeline, CI builds an image and then pushes it into the cluster with kubectl apply or helm upgrade. That works until someone runs a manual kubectl edit at 2 a.m.","minutes":10,"words":923},{"key":"devops-cloud/notes/17-configuration-management-with-ansible","kind":"notes","id":"17-configuration-management-with-ansible","title":"Configuration Management with Ansible","url":"/topics/devops-cloud/notes/17-configuration-management-with-ansible","description":"Terraform creates infrastructure: VMs, networks and databases. Something still has to configure what runs on those machines, such as installing packages, writing config files, creating users,…","minutes":10,"words":785},{"key":"devops-cloud/notes/18-service-mesh","kind":"notes","id":"18-service-mesh","title":"Service Mesh: Istio, Linkerd and the Sidecar-less Future","url":"/topics/devops-cloud/notes/18-service-mesh","description":"Once you have dozens of microservices, every one of them needs the same things: encrypted service-to-service traffic, retries and timeouts, traffic splitting for canaries, and metrics for every call.","minutes":8,"words":1001},{"key":"devops-cloud/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/devops-cloud/deep/theory","description":"","minutes":3,"words":405},{"key":"devops-cloud/deep/best-practices","kind":"deep","id":"best-practices","title":"Deep: Best Practices","url":"/topics/devops-cloud/deep/best-practices","description":"","minutes":3,"words":353}],"cardCount":219},{"slug":"security","title":"Security","emoji":"🔐","tag":"AppSec","accent":"#BE123C","blurb":"OWASP Top 10, authentication, authorization, AppSec and supply chain.","order":27,"group":"ops","related":["backend","frontend","devops-cloud","api-design","reverse-engineering"],"quizCount":10,"problemCount":4,"practiceCount":4,"minutes":38,"pages":[{"key":"security/notes/01-owasp-top-10-2025","kind":"notes","id":"01-owasp-top-10-2025","title":"OWASP Top 10 (2025) — Every Risk with a Fix","url":"/topics/security/notes/01-owasp-top-10-2025","description":"The OWASP Top 10:2025 is the current list. Two categories are new since 2021 — Software Supply Chain Failures (A03) and Mishandling of Exceptional Conditions (A10) — and Security Misconfiguration…","minutes":12,"words":1847},{"key":"security/notes/02-authentication-and-authorization","kind":"notes","id":"02-authentication-and-authorization","title":"Authentication & Authorization","url":"/topics/security/notes/02-authentication-and-authorization","description":"Authentication = who are you. Authorization = what may you do. They fail differently and are fixed differently — never conflate them in a design discussion.","minutes":10,"words":1254},{"key":"security/notes/03-appsec-network-and-supply-chain","kind":"notes","id":"03-appsec-network-and-supply-chain","title":"Application, Network & Supply-Chain Security","url":"/topics/security/notes/03-appsec-network-and-supply-chain","description":"Design → threat model, abuse cases, data classification","minutes":9,"words":1258},{"key":"security/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/security/deep/theory","description":"","minutes":3,"words":415},{"key":"security/deep/internals","kind":"deep","id":"internals","title":"Deep: Internals","url":"/topics/security/deep/internals","description":"","minutes":3,"words":393},{"key":"security/interview/medium","kind":"interview","id":"medium","title":"Interview: Medium","url":"/topics/security/interview/medium","description":"","minutes":1,"words":257,"questions":4}],"cardCount":91},{"slug":"ai-ml","title":"AI / ML Engineering","emoji":"🤖","tag":"AI era","accent":"#A21CAF","blurb":"LLM application engineering, evaluation and ML systems.","order":28,"group":"ai","related":["system-design","backend","database"],"quizCount":5,"problemCount":2,"practiceCount":2,"minutes":3,"pages":[{"key":"ai-ml/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/ai-ml/deep/theory","description":"","minutes":3,"words":346}],"cardCount":13},{"slug":"postgresql","title":"PostgreSQL","emoji":"🐘","logo":"/logos/postgresql.svg","tag":"DBA","accent":"#336791","blurb":"Internals, MVCC and VACUUM, roles and backups, replication and HA, tuning and extensions.","order":29,"group":"systems","related":["database","backend","devops-cloud"],"quizCount":11,"problemCount":4,"practiceCount":7,"minutes":32,"pages":[{"key":"postgresql/notes/01-postgresql-architecture-and-mvcc","kind":"notes","id":"01-postgresql-architecture-and-mvcc","title":"PostgreSQL Architecture, MVCC and VACUUM","url":"/topics/postgresql/notes/01-postgresql-architecture-and-mvcc","description":"PostgreSQL behaves predictably once you know what it does under the hood. \"Why is this table 40 GB when it holds 2 GB of data?\", \"why did that query suddenly get slow?\" and \"why are we out of…","minutes":8,"words":1104},{"key":"postgresql/notes/02-administration-security-and-backups","kind":"notes","id":"02-administration-security-and-backups","title":"PostgreSQL Administration: Roles, Security, Backups and Recovery","url":"/topics/postgresql/notes/02-administration-security-and-backups","description":"A database administrator's first job is simple to state: never lose data, and never let the wrong person see it. This guide covers installing and configuring PostgreSQL sensibly, the role and…","minutes":8,"words":894},{"key":"postgresql/notes/03-replication-high-availability-and-scaling","kind":"notes","id":"03-replication-high-availability-and-scaling","title":"PostgreSQL Replication, High Availability and Scaling","url":"/topics/postgresql/notes/03-replication-high-availability-and-scaling","description":"One PostgreSQL server is a single point of failure. When it dies, your application dies with it. This guide covers how PostgreSQL copies data to other servers (streaming and logical replication), how…","minutes":9,"words":1121},{"key":"postgresql/notes/04-performance-tuning-and-extensions","kind":"notes","id":"04-performance-tuning-and-extensions","title":"PostgreSQL Performance Tuning and Extensions","url":"/topics/postgresql/notes/04-performance-tuning-and-extensions","description":"Most PostgreSQL performance problems are solved by a better query or index, not by a magic config setting. This guide gives you a methodical process: find the expensive queries, read their plans, fix…","minutes":7,"words":690}],"cardCount":62},{"slug":"ai-engineering","title":"AI Engineering","emoji":"🤖","tag":"LLM apps","accent":"#7C3AED","blurb":"Build products on LLMs: APIs, prompting, structured output, RAG, agents, evaluation and operations.","order":30,"group":"ai","related":["ai-ml","machine-learning","backend"],"quizCount":7,"problemCount":2,"practiceCount":2,"minutes":31,"pages":[{"key":"ai-engineering/notes/01-llm-apis-prompting-and-structured-output","kind":"notes","id":"01-llm-apis-prompting-and-structured-output","title":"LLM APIs, Prompting and Structured Output","url":"/topics/ai-engineering/notes/01-llm-apis-prompting-and-structured-output","description":"An AI engineer builds products on top of large language models. You rarely train the models. Your job is to call them reliably, give them the right context, get output your code can trust, and keep…","minutes":9,"words":1034},{"key":"ai-engineering/notes/02-embeddings-vector-search-and-rag","kind":"notes","id":"02-embeddings-vector-search-and-rag","title":"Embeddings, Vector Search and Retrieval-Augmented Generation (RAG)","url":"/topics/ai-engineering/notes/02-embeddings-vector-search-and-rag","description":"LLMs don't know your company's documents, your product catalogue or anything that changed after training. Retrieval-Augmented Generation (RAG) fixes this by finding relevant passages at question time…","minutes":8,"words":915},{"key":"ai-engineering/notes/03-ai-agents-and-tool-use","kind":"notes","id":"03-ai-agents-and-tool-use","title":"AI Agents: Planning, Tools, Memory and Guardrails","url":"/topics/ai-engineering/notes/03-ai-agents-and-tool-use","description":"An agent is an LLM running in a loop. It decides what to do next, calls tools, looks at the results, and repeats until the task is done.","minutes":7,"words":1090},{"key":"ai-engineering/notes/04-evaluating-and-operating-llm-apps","kind":"notes","id":"04-evaluating-and-operating-llm-apps","title":"Evaluating, Monitoring and Operating LLM Applications","url":"/topics/ai-engineering/notes/04-evaluating-and-operating-llm-apps","description":"Traditional software is tested with assertions: given input X, expect output Y. LLM output varies, is open-ended and can be wrong in convincing ways.","minutes":7,"words":1057}],"cardCount":51},{"slug":"data-analysis","title":"Data Analysis","emoji":"📊","tag":"Analytics","accent":"#0891B2","blurb":"Ask sharp questions, clean data, use statistics correctly, and turn analysis into decisions with clear charts and stories.","order":31,"group":"ai","related":["database","data-science","data-engineering"],"quizCount":6,"problemCount":2,"practiceCount":2,"minutes":18,"pages":[{"key":"data-analysis/notes/01-the-analyst-workflow-and-data-cleaning","kind":"notes","id":"01-the-analyst-workflow-and-data-cleaning","title":"The Analyst Workflow, Spreadsheets and Data Cleaning","url":"/topics/data-analysis/notes/01-the-analyst-workflow-and-data-cleaning","description":"A data analyst turns raw data into decisions. The tools vary (Excel or Google Sheets, SQL, Python, a BI tool), but the workflow doesn't, and most of the time goes into a step beginners underestimate:…","minutes":7,"words":866},{"key":"data-analysis/notes/02-statistics-for-analysts","kind":"notes","id":"02-statistics-for-analysts","title":"Statistics for Analysts: Distributions, Inference and A/B Tests","url":"/topics/data-analysis/notes/02-statistics-for-analysts","description":"Statistics lets you tell signal from noise. Without it, every 3% wiggle in a chart becomes a story, and every A/B test \"wins.\" This guide covers the statistics analysts use daily: describing data…","minutes":4,"words":462},{"key":"data-analysis/notes/03-python-for-analysis-visualisation-and-storytelling","kind":"notes","id":"03-python-for-analysis-visualisation-and-storytelling","title":"Python for Analysis, Visualisation, BI and Data Storytelling","url":"/topics/data-analysis/notes/03-python-for-analysis-visualisation-and-storytelling","description":"SQL gets the data and spreadsheets explore it, but repeatable, larger analyses live in Python with pandas . And no analysis matters until someone acts on it.","minutes":7,"words":856}],"cardCount":38},{"slug":"data-science","title":"Data Science","emoji":"🔬","tag":"DS","accent":"#0D9488","blurb":"The maths behind models and the full arc of a data science project, from framing to proven impact.","order":32,"group":"ai","related":["data-analysis","machine-learning","mlops"],"quizCount":5,"problemCount":1,"practiceCount":1,"minutes":14,"pages":[{"key":"data-science/notes/01-math-foundations-for-data-science","kind":"notes","id":"01-math-foundations-for-data-science","title":"Mathematics for Data Science: Linear Algebra, Calculus and Probability","url":"/topics/data-science/notes/01-math-foundations-for-data-science","description":"You can call model.fit() without any maths. But when a model won't converge, overfits, gives nonsense probabilities or needs explaining to a sceptical stakeholder, the maths is what lets you reason…","minutes":7,"words":1003},{"key":"data-science/notes/02-end-to-end-data-science-project","kind":"notes","id":"02-end-to-end-data-science-project","title":"End-to-End Data Science Project: From Question to Deployed Insight","url":"/topics/data-science/notes/02-end-to-end-data-science-project","description":"Courses teach techniques in isolation. Real data science is the whole arc: framing a fuzzy business problem, finding and understanding data, exploring, modelling, evaluating honestly, and getting the…","minutes":7,"words":1067}],"cardCount":29},{"slug":"machine-learning","title":"Machine Learning","emoji":"🧠","tag":"ML","accent":"#DB2777","blurb":"Supervised and unsupervised learning, evaluation, feature engineering and deep learning with PyTorch, with runnable code.","order":33,"group":"ai","related":["data-science","mlops","ai-ml"],"quizCount":7,"problemCount":2,"practiceCount":2,"minutes":23,"pages":[{"key":"machine-learning/notes/01-supervised-learning-fundamentals","kind":"notes","id":"01-supervised-learning-fundamentals","title":"Machine Learning Fundamentals and Supervised Learning","url":"/topics/machine-learning/notes/01-supervised-learning-fundamentals","description":"Machine learning means learning a function from examples instead of writing the rules by hand. Supervised learning, where each training example comes with the right answer, covers most business ML:…","minutes":8,"words":982},{"key":"machine-learning/notes/02-unsupervised-learning-evaluation-and-features","kind":"notes","id":"02-unsupervised-learning-evaluation-and-features","title":"Unsupervised Learning, Model Evaluation and Feature Engineering","url":"/topics/machine-learning/notes/02-unsupervised-learning-evaluation-and-features","description":"Often there are no labels at all. You want to find natural customer segments, detect unusual transactions, or compress hundreds of features into a few.","minutes":7,"words":1061},{"key":"machine-learning/notes/03-deep-learning-with-pytorch","kind":"notes","id":"03-deep-learning-with-pytorch","title":"Deep Learning with PyTorch: Neural Networks, CNNs and Transformers","url":"/topics/machine-learning/notes/03-deep-learning-with-pytorch","description":"Deep learning powers image recognition, speech, translation and every modern language model. For tabular business data, gradient-boosted trees often still win, but for images, audio, text and very…","minutes":8,"words":895}],"cardCount":41},{"slug":"mlops","title":"MLOps","emoji":"⚙️","tag":"MLOps","accent":"#EA580C","blurb":"Take models to production and keep them healthy: tracking, pipelines, feature stores, serving, safe rollouts, drift monitoring and governance.","order":34,"group":"ai","related":["machine-learning","devops-cloud","data-engineering"],"quizCount":6,"problemCount":2,"practiceCount":2,"minutes":22,"pages":[{"key":"mlops/notes/01-ml-lifecycle-experiment-tracking-and-pipelines","kind":"notes","id":"01-ml-lifecycle-experiment-tracking-and-pipelines","title":"The ML Lifecycle: Experiment Tracking, Pipelines and Feature Stores","url":"/topics/mlops/notes/01-ml-lifecycle-experiment-tracking-and-pipelines","description":"Most machine-learning projects that fail never reach production, or they reach it once and quietly decay. MLOps applies DevOps discipline (version control, automation, testing, monitoring) to the…","minutes":8,"words":907},{"key":"mlops/notes/02-model-serving-and-deployment","kind":"notes","id":"02-model-serving-and-deployment","title":"Model Serving and Deployment","url":"/topics/mlops/notes/02-model-serving-and-deployment","description":"A trained model is a file. A served model is a reliable service with latency targets, scaling, versioning, rollback and safe release practices.","minutes":8,"words":928},{"key":"mlops/notes/03-monitoring-drift-and-responsible-ml","kind":"notes","id":"03-monitoring-drift-and-responsible-ml","title":"Monitoring ML in Production: Drift, Retraining and Responsible ML","url":"/topics/mlops/notes/03-monitoring-drift-and-responsible-ml","description":"Software usually breaks loudly with errors and crashes. Models break silently . They keep returning confident predictions while the world they learned from moves on.","minutes":6,"words":1044}],"cardCount":38},{"slug":"data-engineering","title":"Data Engineering","emoji":"🏗️","tag":"DE","accent":"#2563EB","blurb":"Model and move data reliably: warehouses and lakehouses, dbt and orchestration, Spark at scale, Kafka streaming, quality and governance.","order":35,"group":"ai","related":["database","postgresql","data-analysis"],"quizCount":8,"problemCount":2,"practiceCount":2,"minutes":33,"pages":[{"key":"data-engineering/notes/01-data-modelling-warehouses-and-lakehouses","kind":"notes","id":"01-data-modelling-warehouses-and-lakehouses","title":"Data Modelling, Warehouses and Lakehouses","url":"/topics/data-engineering/notes/01-data-modelling-warehouses-and-lakehouses","description":"Data engineers build the systems that move data from where it is produced (apps, databases, events, third-party APIs) to where it is used (dashboards, ML models, data products), reliably and in a…","minutes":8,"words":1033},{"key":"data-engineering/notes/02-pipelines-dbt-and-orchestration","kind":"notes","id":"02-pipelines-dbt-and-orchestration","title":"Batch Pipelines: Ingestion, dbt Transformations and Orchestration","url":"/topics/data-engineering/notes/02-pipelines-dbt-and-orchestration","description":"A data pipeline is production software. It runs every night (or every five minutes), touches money and customer data, and fails in a dozen creative ways.","minutes":9,"words":917},{"key":"data-engineering/notes/03-distributed-processing-with-spark","kind":"notes","id":"03-distributed-processing-with-spark","title":"Distributed Processing with Apache Spark","url":"/topics/data-engineering/notes/03-distributed-processing-with-spark","description":"When data outgrows one machine, with billions of rows, terabytes of logs or joins that don't fit in memory, you split the work across a cluster.","minutes":8,"words":1073},{"key":"data-engineering/notes/04-streaming-data-quality-and-governance","kind":"notes","id":"04-streaming-data-quality-and-governance","title":"Streaming Pipelines, Data Quality and Governance","url":"/topics/data-engineering/notes/04-streaming-data-quality-and-governance","description":"Batch pipelines answer \"what happened yesterday.\" Streaming pipelines answer \"what is happening now\": live order counts per zone, fraud signals within seconds, rider supply versus demand, or keeping…","minutes":8,"words":1144}],"cardCount":53},{"slug":"devsecops","title":"DevSecOps","emoji":"🛡️","tag":"DevSecOps","accent":"#B91C1C","blurb":"Security built into delivery: pipeline scanning, secrets, supply chain, policy as code, runtime security and continuous compliance.","order":36,"group":"ops","related":["devops-cloud","security","cyber-security"],"quizCount":8,"problemCount":1,"practiceCount":1,"minutes":18,"pages":[{"key":"devsecops/notes/01-shift-left-security-in-ci-cd","kind":"notes","id":"01-shift-left-security-in-ci-cd","title":"Shift-Left Security: Building Security into CI/CD","url":"/topics/devsecops/notes/01-shift-left-security-in-ci-cd","description":"DevSecOps makes security part of how software is built and shipped every day, instead of a gate at the end. The goal isn't to make developers into security experts.","minutes":9,"words":1153},{"key":"devsecops/notes/02-policy-as-code-runtime-security-and-compliance","kind":"notes","id":"02-policy-as-code-runtime-security-and-compliance","title":"Policy as Code, Runtime Security and Continuous Compliance","url":"/topics/devsecops/notes/02-policy-as-code-runtime-security-and-compliance","description":"Pipeline scanners catch problems before deployment. But clusters drift, people click in consoles, zero-days appear in code that was clean yesterday, and auditors want evidence, not promises.","minutes":9,"words":959}],"cardCount":30},{"slug":"cyber-security","title":"Cyber Security","emoji":"🔐","tag":"Security","accent":"#9F1239","blurb":"Threats, frameworks, security operations, detection engineering, incident response and practical cryptography.","order":37,"group":"ops","related":["security","devsecops","networking","reverse-engineering"],"quizCount":8,"problemCount":1,"practiceCount":1,"minutes":28,"pages":[{"key":"cyber-security/notes/01-security-fundamentals-and-the-threat-landscape","kind":"notes","id":"01-security-fundamentals-and-the-threat-landscape","title":"Cyber Security Fundamentals and the Threat Landscape","url":"/topics/cyber-security/notes/01-security-fundamentals-and-the-threat-landscape","description":"Cyber security protects systems, networks and data from attack, misuse and disruption. Whether you end up as a SOC analyst, penetration tester, security engineer or a developer who takes security…","minutes":7,"words":1261},{"key":"cyber-security/notes/02-security-operations-detection-and-incident-response","kind":"notes","id":"02-security-operations-detection-and-incident-response","title":"Security Operations: Logging, Detection and Incident Response","url":"/topics/cyber-security/notes/02-security-operations-detection-and-incident-response","description":"Prevention eventually fails. What separates a minor incident from a headline breach is how quickly you detect the intrusion and how well you respond .","minutes":8,"words":1166},{"key":"cyber-security/notes/03-cryptography-and-pki-in-practice","kind":"notes","id":"03-cryptography-and-pki-in-practice","title":"Cryptography and PKI in Practice","url":"/topics/cyber-security/notes/03-cryptography-and-pki-in-practice","description":"Cryptography protects data in transit (HTTPS, VPNs), at rest (disk and database encryption), and proves identity and integrity (signatures, certificates).","minutes":8,"words":1181},{"key":"cyber-security/interview/basics","kind":"interview","id":"basics","title":"Interview: Basics","url":"/topics/cyber-security/interview/basics","description":"","minutes":2,"words":478,"questions":6},{"key":"cyber-security/interview/medium","kind":"interview","id":"medium","title":"Interview: Medium","url":"/topics/cyber-security/interview/medium","description":"","minutes":3,"words":562,"questions":6}],"cardCount":59},{"slug":"networking","title":"Network Engineering","emoji":"🌐","tag":"Network","accent":"#0284C7","blurb":"Switching, routing, VLANs, OSPF and BGP, network services and security, VPNs, zero trust, troubleshooting and automation.","order":38,"group":"ops","related":["devops-cloud","cyber-security","cs-fundamentals"],"quizCount":8,"problemCount":2,"practiceCount":2,"minutes":26,"pages":[{"key":"networking/notes/01-switching-routing-and-vlans","kind":"notes","id":"01-switching-routing-and-vlans","title":"Switching, Routing and VLANs","url":"/topics/networking/notes/01-switching-routing-and-vlans","description":"Every packet your application sends crosses switches and routers. Network engineers design, build and run that fabric, from the office LAN to data-centre and cloud networks.","minutes":9,"words":1230},{"key":"networking/notes/02-network-services-security-and-vpns","kind":"notes","id":"02-network-services-security-and-vpns","title":"Network Services, Firewalls, VPNs and Zero Trust","url":"/topics/networking/notes/02-network-services-security-and-vpns","description":"A network that forwards packets is only half the job. Devices need addresses and names, traffic must be filtered, remote users and sites must connect securely, and wireless must be both easy and…","minutes":8,"words":1195},{"key":"networking/notes/03-network-troubleshooting-and-automation","kind":"notes","id":"03-network-troubleshooting-and-automation","title":"Network Troubleshooting, Packet Analysis and Automation","url":"/topics/networking/notes/03-network-troubleshooting-and-automation","description":"\"The network is slow\" and \"I can't connect\" are the two messages every network engineer receives daily. Solving them fast takes a systematic method, the right tools and the ability to read packets.","minutes":9,"words":1013}],"cardCount":47},{"slug":"software-architecture","title":"Software Architecture","emoji":"🏛️","tag":"Architect","accent":"#7C2D12","blurb":"Quality attributes, architecture styles, decisions and ADRs, C4, fitness functions, DDD boundaries, migrations and governance.","order":39,"group":"leadership","related":["system-design","low-level-design","engineering-management"],"quizCount":8,"problemCount":1,"practiceCount":1,"minutes":17,"pages":[{"key":"software-architecture/notes/01-quality-attributes-styles-and-decisions","kind":"notes","id":"01-quality-attributes-styles-and-decisions","title":"Software Architecture: Quality Attributes, Styles and Decisions","url":"/topics/software-architecture/notes/01-quality-attributes-styles-and-decisions","description":"Software architecture is the set of decisions that are expensive to change later: how a system is split into parts, how those parts communicate, where data lives, and what qualities (performance,…","minutes":9,"words":1185},{"key":"software-architecture/notes/02-evolutionary-architecture-and-the-architect-role","kind":"notes","id":"02-evolutionary-architecture-and-the-architect-role","title":"Evolutionary Architecture, Governance and the Architect's Role","url":"/topics/software-architecture/notes/02-evolutionary-architecture-and-the-architect-role","description":"Architecture isn't a document you finish. Requirements change, teams grow, traffic multiplies and technology moves on. The architect's job shifts from designing a perfect system up front to guiding…","minutes":8,"words":1309}],"cardCount":30},{"slug":"ux-design","title":"UX Design","emoji":"🧭","logo":"/logos/figma.svg","tag":"UX","accent":"#C026D3","blurb":"User research, personas and journeys, interaction design, prototyping, usability testing and design systems.","order":40,"group":"leadership","related":["ui-ux","frontend","product-management"],"quizCount":8,"problemCount":1,"practiceCount":1,"minutes":16,"pages":[{"key":"ux-design/notes/01-user-research-and-human-centred-design","kind":"notes","id":"01-user-research-and-human-centred-design","title":"UX Design: User Research and Human-Centred Design","url":"/topics/ux-design/notes/01-user-research-and-human-centred-design","description":"User experience (UX) design is the practice of making products useful, usable and enjoyable for the people who use them. It starts long before visual design, with understanding who the users are,…","minutes":7,"words":1149},{"key":"ux-design/notes/02-interaction-design-prototyping-and-usability-testing","kind":"notes","id":"02-interaction-design-prototyping-and-usability-testing","title":"Interaction Design, Prototyping, Usability Testing and Design Systems","url":"/topics/ux-design/notes/02-interaction-design-prototyping-and-usability-testing","description":"Once you understand the problem, design turns insight into an interface people can use without thinking. This guide covers information architecture, interaction design principles and usability…","minutes":9,"words":1364}],"cardCount":34},{"slug":"product-management","title":"Product Management","emoji":"🎯","tag":"PM","accent":"#CA8A04","blurb":"Strategy, outcomes and OKRs, continuous discovery, assumption testing, prioritisation, delivery, analytics, roadmaps and stakeholders.","order":41,"group":"leadership","related":["ux-design","engineering-management","data-analysis"],"quizCount":8,"problemCount":1,"practiceCount":1,"minutes":15,"pages":[{"key":"product-management/notes/01-product-discovery-and-strategy","kind":"notes","id":"01-product-discovery-and-strategy","title":"Product Management: Discovery and Strategy","url":"/topics/product-management/notes/01-product-discovery-and-strategy","description":"A product manager (PM) is responsible for making sure the team builds the right thing: something customers value, that works for the business, that is feasible to build, and that people can actually…","minutes":7,"words":1287},{"key":"product-management/notes/02-product-delivery-metrics-and-stakeholders","kind":"notes","id":"02-product-delivery-metrics-and-stakeholders","title":"Product Management: Delivery, Metrics, Roadmaps and Stakeholders","url":"/topics/product-management/notes/02-product-delivery-metrics-and-stakeholders","description":"Discovery decides what is worth building. Delivery turns it into working software in customers' hands, then measures whether it worked.","minutes":8,"words":1212}],"cardCount":36},{"slug":"engineering-management","title":"Engineering Management","emoji":"🧑‍💼","tag":"EM","accent":"#4D7C0F","blurb":"1:1s, feedback, growth and performance, hiring, team health, planning, DORA metrics, incidents and org design.","order":42,"group":"leadership","related":["behavioral","product-management","software-architecture"],"quizCount":8,"problemCount":1,"practiceCount":1,"minutes":17,"pages":[{"key":"engineering-management/notes/01-leading-people-one-on-ones-feedback-and-growth","kind":"notes","id":"01-leading-people-one-on-ones-feedback-and-growth","title":"Engineering Management: Leading People, 1:1s, Feedback and Growth","url":"/topics/engineering-management/notes/01-leading-people-one-on-ones-feedback-and-growth","description":"An engineering manager (EM) is responsible for a team's people, its delivery and its health. The shift from engineer to manager is a change of job, not a promotion: your output becomes the output of…","minutes":9,"words":1459},{"key":"engineering-management/notes/02-execution-delivery-metrics-and-organisation","kind":"notes","id":"02-execution-delivery-metrics-and-organisation","title":"Engineering Management: Execution, Delivery Metrics and Organisation","url":"/topics/engineering-management/notes/02-execution-delivery-metrics-and-organisation","description":"Great people still need a system to deliver reliably: clear priorities, sensible planning, a healthy engineering process, metrics that reveal problems without being gamed, good incident handling, and…","minutes":8,"words":1346}],"cardCount":32},{"slug":"android","title":"Android","emoji":"🤖","logo":"/logos/android.svg","tag":"Mobile","accent":"#3DDC84","blurb":"Kotlin, Jetpack Compose, lifecycle, MVVM and offline-first data, WorkManager, testing, performance, security and Play publishing.","order":43,"group":"mobile-games","related":["javascript","testing-quality","ui-ux"],"quizCount":8,"problemCount":1,"practiceCount":1,"minutes":29,"pages":[{"key":"android/notes/01-kotlin-and-android-fundamentals","kind":"notes","id":"01-kotlin-and-android-fundamentals","title":"Kotlin and Android Fundamentals with Jetpack Compose","url":"/topics/android/notes/01-kotlin-and-android-fundamentals","description":"Android runs on billions of devices, from flagship phones to the budget handsets most people in Bangladesh use. Modern Android development means Kotlin , Jetpack Compose for UI, and the Jetpack…","minutes":10,"words":1067},{"key":"android/notes/02-app-architecture-data-and-background-work","kind":"notes","id":"02-app-architecture-data-and-background-work","title":"Android App Architecture: MVVM, Data Layer, DI and Background Work","url":"/topics/android/notes/02-app-architecture-data-and-background-work","description":"A screen that fetches data directly in a composable works in a demo and falls apart in a real app: duplicated logic, untestable code, lost state, and network calls repeated on every rotation.","minutes":10,"words":847},{"key":"android/notes/03-testing-performance-security-and-publishing","kind":"notes","id":"03-testing-performance-security-and-publishing","title":"Android Testing, Performance, Security and Publishing","url":"/topics/android/notes/03-testing-performance-security-and-publishing","description":"Shipping an Android app means supporting thousands of device models, unreliable networks, many OS versions and users who uninstall at the first crash.","minutes":9,"words":1195}],"cardCount":45},{"slug":"game-development","title":"Game Development","emoji":"🎮","tag":"Games","accent":"#9333EA","blurb":"Engines, the game loop, vectors and transforms, rendering, physics, game AI, gameplay architecture, design and optimisation.","order":44,"group":"mobile-games","related":["game-server","c-cpp","dsa"],"quizCount":8,"problemCount":1,"practiceCount":1,"minutes":19,"pages":[{"key":"game-development/notes/01-game-loop-math-and-rendering","kind":"notes","id":"01-game-loop-math-and-rendering","title":"Game Development Foundations: The Game Loop, Math and Rendering","url":"/topics/game-development/notes/01-game-loop-math-and-rendering","description":"Games are real-time simulations that must read input, update a world and draw it 60 or more times per second, every second, on hardware ranging from budget phones to high-end PCs.","minutes":9,"words":1232},{"key":"game-development/notes/02-gameplay-systems-physics-ai-and-optimisation","kind":"notes","id":"02-gameplay-systems-physics-ai-and-optimisation","title":"Gameplay Systems: Physics, AI, Game Design and Optimisation","url":"/topics/game-development/notes/02-gameplay-systems-physics-ai-and-optimisation","description":"Once a character moves on screen, the real work begins: collisions that feel right, enemies that behave believably, systems that are fun and tunable, and a game that runs smoothly on the weakest…","minutes":10,"words":1288}],"cardCount":34},{"slug":"game-server","title":"Server-Side Game Development","emoji":"🕹️","tag":"Game servers","accent":"#6D28D9","blurb":"Multiplayer netcode (authoritative servers, prediction, interpolation, lag compensation) and game backends (matchmaking, fleets, economy, scaling).","order":45,"group":"mobile-games","related":["game-development","system-design","devops-cloud"],"quizCount":8,"problemCount":1,"practiceCount":1,"minutes":18,"pages":[{"key":"game-server/notes/01-multiplayer-networking-models","kind":"notes","id":"01-multiplayer-networking-models","title":"Multiplayer Networking: Authoritative Servers, Prediction and Lag Compensation","url":"/topics/game-server/notes/01-multiplayer-networking-models","description":"Multiplayer games must make players thousands of kilometres apart, on lossy mobile networks with 50–200 ms of latency, feel like they share one world in real time, while stopping cheaters.","minutes":8,"words":1176},{"key":"game-server/notes/02-game-backend-services-and-scaling","kind":"notes","id":"02-game-backend-services-and-scaling","title":"Game Backend Services: Matchmaking, Sessions, Persistence and Scaling","url":"/topics/game-server/notes/02-game-backend-services-and-scaling","description":"Behind every multiplayer match is a set of backend services: accounts and authentication, matchmaking, allocating a game server, player data and inventories, leaderboards, chat, purchases and…","minutes":10,"words":1345}],"cardCount":31},{"slug":"seo","title":"SEO","emoji":"🔎","tag":"SEO","accent":"#16A34A","blurb":"Crawling, indexing, rendering, site architecture, structured data, Core Web Vitals, intent and content, local SEO, links, AI search and measurement.","order":46,"group":"mobile-games","related":["frontend","nextjs","data-analysis"],"quizCount":8,"problemCount":1,"practiceCount":1,"minutes":20,"pages":[{"key":"seo/notes/01-technical-seo","kind":"notes","id":"01-technical-seo","title":"Technical SEO: Crawling, Indexing, Rendering and Performance","url":"/topics/seo/notes/01-technical-seo","description":"Search engine optimisation (SEO) is how people find your site when they search, and technical SEO is the foundation that makes it possible.","minutes":10,"words":1505},{"key":"seo/notes/02-content-on-page-local-seo-and-measurement","kind":"notes","id":"02-content-on-page-local-seo-and-measurement","title":"Content, On-Page and Local SEO, Links, AI Search and Measurement","url":"/topics/seo/notes/02-content-on-page-local-seo-and-measurement","description":"Technical SEO lets search engines find and understand your pages. Ranking depends on whether those pages are the most helpful answer to what people search for, and whether others trust you enough to…","minutes":10,"words":1594}],"cardCount":34},{"slug":"reverse-engineering","title":"Reverse Engineering","emoji":"🔬","tag":"RE & malware","accent":"#0E7490","blurb":"Binaries, assembly, static and dynamic analysis, Ghidra workflows, unpacking and malware triage.","order":47,"group":"ops","related":["security","cyber-security","c-cpp","networking"],"quizCount":8,"problemCount":4,"practiceCount":4,"minutes":31,"pages":[{"key":"reverse-engineering/notes/01-fundamentals-workflow-and-lab","kind":"notes","id":"01-fundamentals-workflow-and-lab","title":"Reverse Engineering Fundamentals — Workflow, Lab and Triage","url":"/topics/reverse-engineering/notes/01-fundamentals-workflow-and-lab","description":"Reverse engineering (RE) is reading a finished program backwards : from bytes to behavior. Malware analysts, vulnerability researchers, interoperability developers and CTF players all use the same…","minutes":2,"words":415},{"key":"reverse-engineering/notes/02-executable-formats-pe-and-elf","kind":"notes","id":"02-executable-formats-pe-and-elf","title":"Executable Formats — PE and ELF","url":"/topics/reverse-engineering/notes/02-executable-formats-pe-and-elf","description":"Every binary analysis starts with the container format. The headers tell you where code lives, what the binary needs, and whether it's lying to you .","minutes":2,"words":400},{"key":"reverse-engineering/notes/03-x86-64-assembly-for-reversers","kind":"notes","id":"03-x86-64-assembly-for-reversers","title":"x86-64 Assembly for Reversers","url":"/topics/reverse-engineering/notes/03-x86-64-assembly-for-reversers","description":"You don't need to write assembly — you need to read it: follow data, spot control flow, recognize compiler patterns. 90% of reversing is these 20 instructions.","minutes":3,"words":273},{"key":"reverse-engineering/notes/04-static-analysis-with-ghidra","kind":"notes","id":"04-static-analysis-with-ghidra","title":"Static Analysis with Ghidra","url":"/topics/reverse-engineering/notes/04-static-analysis-with-ghidra","description":"Ghidra (NSA, free) turns bytes into readable pseudo-C. The skill isn't clicking — it's a workflow : orient → name → understand → verify.","minutes":3,"words":497},{"key":"reverse-engineering/notes/05-dynamic-analysis-debuggers-and-sandboxes","kind":"notes","id":"05-dynamic-analysis-debuggers-and-sandboxes","title":"Dynamic Analysis — Debuggers, Monitors and Sandboxes","url":"/topics/reverse-engineering/notes/05-dynamic-analysis-debuggers-and-sandboxes","description":"Dynamic analysis watches the binary run : real API calls, real decrypted strings, real network traffic. It's the antidote to packing and obfuscation — but only inside isolation.","minutes":2,"words":436},{"key":"reverse-engineering/notes/06-agentic-reversing-showcase-rea","kind":"notes","id":"06-agentic-reversing-showcase-rea","title":"Showcase — Investigate a Binary with REA (Worked Example)","url":"/topics/reverse-engineering/notes/06-agentic-reversing-showcase-rea","description":"REA — Reverse Engineer Anything is an open-source MCP server + CLI that connects an AI coding agent (or your terminal) to real RE tooling: native analysis through your Ghidra/IDA/Hopper install, plus…","minutes":3,"words":422},{"key":"reverse-engineering/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/reverse-engineering/deep/theory","description":"","minutes":2,"words":462},{"key":"reverse-engineering/deep/internals","kind":"deep","id":"internals","title":"Deep: Internals","url":"/topics/reverse-engineering/deep/internals","description":"","minutes":2,"words":400},{"key":"reverse-engineering/deep/real-world-projects","kind":"deep","id":"real-world-projects","title":"Deep: Real World Projects","url":"/topics/reverse-engineering/deep/real-world-projects","description":"","minutes":3,"words":564},{"key":"reverse-engineering/deep/pitfalls","kind":"deep","id":"pitfalls","title":"Deep: Pitfalls","url":"/topics/reverse-engineering/deep/pitfalls","description":"","minutes":2,"words":440},{"key":"reverse-engineering/interview/basics","kind":"interview","id":"basics","title":"Interview: Basics","url":"/topics/reverse-engineering/interview/basics","description":"","minutes":2,"words":456,"questions":6},{"key":"reverse-engineering/interview/medium","kind":"interview","id":"medium","title":"Interview: Medium","url":"/topics/reverse-engineering/interview/medium","description":"","minutes":2,"words":472,"questions":6},{"key":"reverse-engineering/interview/advanced","kind":"interview","id":"advanced","title":"Interview: Advanced","url":"/topics/reverse-engineering/interview/advanced","description":"","minutes":3,"words":537,"questions":6}],"cardCount":76},{"slug":"golang","title":"Go","emoji":"🐹","logo":"/logos/go.svg","logoDark":"/logos/go-dark.svg","tag":"Language","accent":"#00ADD8","blurb":"Goroutines, channels, generics, iterators, stdlib HTTP/JSON and production Go (1.24–1.27).","order":48,"group":"languages","related":["backend","api-design","c-cpp","system-design"],"quizCount":8,"problemCount":4,"practiceCount":4,"minutes":25,"pages":[{"key":"golang/notes/01-fundamentals-toolchain-types-errors","kind":"notes","id":"01-fundamentals-toolchain-types-errors","title":"Go Fundamentals — Toolchain, Types and Errors (2026)","url":"/topics/golang/notes/01-fundamentals-toolchain-types-errors","description":"Go in 2026 (1.24–1.27): a small language with a great toolchain. This guide covers the working core — modules, the type system, and idiomatic errors.","minutes":2,"words":318},{"key":"golang/notes/02-concurrency-goroutines-channels-context","kind":"notes","id":"02-concurrency-goroutines-channels-context","title":"Concurrency — Goroutines, Channels and Context","url":"/topics/golang/notes/02-concurrency-goroutines-channels-context","description":"\"Don't communicate by sharing memory; share memory by communicating.\" Goroutines are cheap (KB stacks, multiplexed on threads); channels and context make the patterns safe.","minutes":2,"words":213},{"key":"golang/notes/03-generics-iterators-modern-idioms","kind":"notes","id":"03-generics-iterators-modern-idioms","title":"Generics, Iterators and Modern Idioms","url":"/topics/golang/notes/03-generics-iterators-modern-idioms","description":"Go 1.18–1.26 quietly made the language expressive: generics for containers/algorithms, range-over-func for lazy sequences, and stdlib packages that kill boilerplate.","minutes":2,"words":213},{"key":"golang/notes/04-stdlib-http-json-testing","kind":"notes","id":"04-stdlib-http-json-testing","title":"Standard Library HTTP and JSON","url":"/topics/golang/notes/04-stdlib-http-json-testing","description":"The stdlib is the framework: net/http routes and serves, encoding/json marshals, testing + synctest verify. Know it before reaching for Gin/Chi.","minutes":2,"words":198},{"key":"golang/notes/05-production-layout-shutdown-gc","kind":"notes","id":"05-production-layout-shutdown-gc","title":"Production Go — Layout, Shutdown, GC and Profiling","url":"/topics/golang/notes/05-production-layout-shutdown-gc","description":"Shipping Go means boring reliability: predictable layout, graceful shutdown, cheap observability, and a GC you rarely tune (Green Tea in 1.26 made it even rarer).","minutes":2,"words":235},{"key":"golang/deep/theory","kind":"deep","id":"theory","title":"Deep: Theory","url":"/topics/golang/deep/theory","description":"","minutes":2,"words":337},{"key":"golang/deep/internals","kind":"deep","id":"internals","title":"Deep: Internals","url":"/topics/golang/deep/internals","description":"","minutes":2,"words":374},{"key":"golang/deep/real-world-projects","kind":"deep","id":"real-world-projects","title":"Deep: Real World Projects","url":"/topics/golang/deep/real-world-projects","description":"","minutes":2,"words":315},{"key":"golang/deep/pitfalls","kind":"deep","id":"pitfalls","title":"Deep: Pitfalls","url":"/topics/golang/deep/pitfalls","description":"","minutes":2,"words":309},{"key":"golang/interview/basics","kind":"interview","id":"basics","title":"Interview: Basics","url":"/topics/golang/interview/basics","description":"","minutes":2,"words":457,"questions":6},{"key":"golang/interview/medium","kind":"interview","id":"medium","title":"Interview: Medium","url":"/topics/golang/interview/medium","description":"","minutes":2,"words":482,"questions":6},{"key":"golang/interview/advanced","kind":"interview","id":"advanced","title":"Interview: Advanced","url":"/topics/golang/interview/advanced","description":"","minutes":3,"words":514,"questions":6}],"cardCount":66}],"tracks":[{"slug":"backend","title":"Backend","emoji":"🛠️","accent":"#0EA5E9","blurb":"From how the internet works to APIs, databases, caching, messaging and running services at scale.","order":1,"source":"https://roadmap.sh/backend","stages":[{"title":"Foundations","hint":"How the web works and a language to build with","items":[{"label":"How the internet and HTTP work","url":"/topics/backend/notes/03-how-the-internet-and-http-work","keys":["backend/notes/03-how-the-internet-and-http-work"],"minutes":11,"topic":"backend"},{"label":"Networking, DNS and HTTP","url":"/topics/devops-cloud/notes/02-networking","keys":["devops-cloud/notes/02-networking"],"minutes":8,"topic":"devops-cloud"},{"label":"Pick a language: Java","url":"/topics/java/notes/01-java","keys":["java/notes/01-java"],"minutes":11,"topic":"java"},{"label":"…or Python","url":"/topics/python/notes/01-python","keys":["python/notes/01-python"],"minutes":12,"topic":"python"},{"label":"…or Node.js","url":"/topics/nodejs/notes/01-nodejs-express-in-production","keys":["nodejs/notes/01-nodejs-express-in-production"],"minutes":8,"topic":"nodejs"},{"label":"Git and version control","url":"/topics/git-collaboration/notes/01-git","keys":["git-collaboration/notes/01-git"],"minutes":5,"topic":"git-collaboration"}]},{"title":"Databases","hint":"Relational first, then NoSQL","items":[{"label":"SQL and data modelling","url":"/topics/database/notes/01-sql-and-data-modelling","keys":["database/notes/01-sql-and-data-modelling"],"minutes":12,"topic":"database"},{"label":"Indexing and query performance","url":"/topics/database/notes/02-indexing-and-query-performance","keys":["database/notes/02-indexing-and-query-performance"],"minutes":11,"topic":"database"},{"label":"Transactions and ACID","url":"/topics/database/notes/03-transactions-and-concurrency","keys":["database/notes/03-transactions-and-concurrency"],"minutes":8,"topic":"database"},{"label":"Scaling, replication and NoSQL","url":"/topics/database/notes/04-scaling-nosql-and-caching","keys":["database/notes/04-scaling-nosql-and-caching"],"minutes":9,"topic":"database"}]},{"title":"APIs","hint":"Design, document and secure them","items":[{"label":"API design theory","url":"/topics/api-design/deep/theory","keys":["api-design/deep/theory"],"minutes":6,"topic":"api-design"},{"label":"REST, GraphQL and gRPC","url":"/topics/api-design/deep/internals","keys":["api-design/deep/internals"],"minutes":1,"topic":"api-design"},{"label":"Authentication and authorization","url":"/topics/security/notes/02-authentication-and-authorization","keys":["security/notes/02-authentication-and-authorization"],"minutes":10,"topic":"security"},{"label":"OWASP Top 10","url":"/topics/security/notes/01-owasp-top-10-2025","keys":["security/notes/01-owasp-top-10-2025"],"minutes":12,"topic":"security"}]},{"title":"Frameworks","hint":"Build a real service","items":[{"label":"Spring Boot","url":"/topics/spring-boot","keys":["spring-boot/notes/00-INDEX-spring-boot-ecosystem","spring-boot/notes/01-core-framework","spring-boot/notes/02-data-layer","spring-boot/notes/03-web-and-apis","spring-boot/notes/04-security","spring-boot/notes/05-messaging-and-async","spring-boot/notes/06-caching-and-storage","spring-boot/notes/07-cloud-and-devops","spring-boot/notes/08-monitoring-and-testing","spring-boot/notes/09-spring-aop-and-interview-checklist","spring-boot/interview/basics","spring-boot/interview/medium","spring-boot/interview/advanced"],"minutes":148,"topic":"spring-boot"},{"label":"Django and DRF","url":"/topics/django","keys":["django/notes/01-django-core-and-orm","django/notes/02-drf-and-api-design","django/notes/03-async-performance-and-security"],"minutes":38,"topic":"django"},{"label":"Node.js and Express in production","url":"/topics/nodejs/notes/01-nodejs-express-in-production","keys":["nodejs/notes/01-nodejs-express-in-production"],"minutes":8,"topic":"nodejs"}]},{"title":"Caching, messaging and architecture","hint":"Make it fast and decoupled","items":[{"label":"Caching","url":"/topics/backend/deep/performance","keys":["backend/deep/performance"],"minutes":3,"topic":"backend"},{"label":"Message brokers and streaming","url":"/topics/backend/deep/internals","keys":["backend/deep/internals"],"minutes":3,"topic":"backend"},{"label":"Event-driven architecture","url":"/topics/system-design/notes/04-event-driven-and-messaging","keys":["system-design/notes/04-event-driven-and-messaging"],"minutes":10,"topic":"system-design"},{"label":"Architecture patterns","url":"/topics/backend/notes/01-backend-architecture-patterns","keys":["backend/notes/01-backend-architecture-patterns"],"minutes":15,"topic":"backend"},{"label":"Optimisation patterns","url":"/topics/backend/notes/02-backend-optimization-patterns","keys":["backend/notes/02-backend-optimization-patterns"],"minutes":12,"topic":"backend"},{"label":"Search engines and full-text search","url":"/topics/backend/notes/05-search-engines-and-full-text-search","keys":["backend/notes/05-search-engines-and-full-text-search"],"minutes":8,"topic":"backend"}]},{"title":"Testing and delivery","hint":"Ship with confidence","items":[{"label":"Testing strategy","url":"/topics/testing-quality/notes/01-testing-strategy","keys":["testing-quality/notes/01-testing-strategy"],"minutes":10,"topic":"testing-quality"},{"label":"Web servers and reverse proxies","url":"/topics/backend/notes/04-web-servers-and-reverse-proxies","keys":["backend/notes/04-web-servers-and-reverse-proxies"],"minutes":10,"topic":"backend"},{"label":"Docker and containers","url":"/topics/devops-cloud/notes/03-docker","keys":["devops-cloud/notes/03-docker"],"minutes":10,"topic":"devops-cloud"},{"label":"CI/CD","url":"/topics/devops-cloud/notes/06-cicd","keys":["devops-cloud/notes/06-cicd"],"minutes":15,"topic":"devops-cloud"},{"label":"Observability","url":"/topics/devops-cloud/notes/09-observability","keys":["devops-cloud/notes/09-observability"],"minutes":11,"topic":"devops-cloud"}]},{"title":"Scaling","hint":"Design systems that survive growth","items":[{"label":"System design fundamentals","url":"/topics/system-design/notes/01-system-design-fundamentals","keys":["system-design/notes/01-system-design-fundamentals"],"minutes":8,"topic":"system-design"},{"label":"Distributed systems","url":"/topics/system-design/notes/03-distributed-systems-and-consistency","keys":["system-design/notes/03-distributed-systems-and-consistency"],"minutes":8,"topic":"system-design"},{"label":"Monoliths vs microservices","url":"/topics/system-design/notes/02-monolith-microservices-and-boundaries","keys":["system-design/notes/02-monolith-microservices-and-boundaries"],"minutes":10,"topic":"system-design"},{"label":"Backend interview Q&A","url":"/topics/backend/interview/advanced","keys":["backend/interview/advanced"],"minutes":2,"topic":"backend"}]}],"topics":["backend","devops-cloud","java","python","nodejs","git-collaboration","database","api-design","security","spring-boot","django","system-design","testing-quality"],"minutes":453},{"slug":"full-stack","title":"Full Stack","emoji":"🧩","accent":"#8B5CF6","blurb":"One person, the whole product: browser, API, database, deployment and monitoring.","order":2,"source":"https://roadmap.sh/full-stack","stages":[{"title":"Frontend","hint":"Web platform, JavaScript and a framework","items":[{"label":"Web platform fundamentals","url":"/topics/frontend/notes/01-web-platform-fundamentals","keys":["frontend/notes/01-web-platform-fundamentals"],"minutes":8,"topic":"frontend"},{"label":"JavaScript","url":"/topics/javascript/notes/01-javascript","keys":["javascript/notes/01-javascript"],"minutes":12,"topic":"javascript"},{"label":"TypeScript","url":"/topics/javascript/notes/02-typescript","keys":["javascript/notes/02-typescript"],"minutes":11,"topic":"javascript"},{"label":"React core","url":"/topics/react/notes/01-react-core","keys":["react/notes/01-react-core"],"minutes":12,"topic":"react"},{"label":"Next.js","url":"/topics/nextjs/notes/01-nextjs-essentials","keys":["nextjs/notes/01-nextjs-essentials"],"minutes":6,"topic":"nextjs"}]},{"title":"Backend","hint":"Node, APIs and PostgreSQL","items":[{"label":"Node.js and Express","url":"/topics/nodejs/notes/01-nodejs-express-in-production","keys":["nodejs/notes/01-nodejs-express-in-production"],"minutes":8,"topic":"nodejs"},{"label":"API design","url":"/topics/api-design/deep/theory","keys":["api-design/deep/theory"],"minutes":6,"topic":"api-design"},{"label":"SQL and data modelling","url":"/topics/database/notes/01-sql-and-data-modelling","keys":["database/notes/01-sql-and-data-modelling"],"minutes":12,"topic":"database"},{"label":"Authentication","url":"/topics/security/notes/02-authentication-and-authorization","keys":["security/notes/02-authentication-and-authorization"],"minutes":10,"topic":"security"}]},{"title":"Tooling","hint":"Git, Linux and the terminal","items":[{"label":"Git","url":"/topics/git-collaboration/notes/01-git","keys":["git-collaboration/notes/01-git"],"minutes":5,"topic":"git-collaboration"},{"label":"Linux","url":"/topics/devops-cloud/notes/01-linux","keys":["devops-cloud/notes/01-linux"],"minutes":10,"topic":"devops-cloud"},{"label":"Scripting","url":"/topics/devops-cloud/notes/11-scripting","keys":["devops-cloud/notes/11-scripting"],"minutes":12,"topic":"devops-cloud"}]},{"title":"Deploy and operate","hint":"Containers, cloud, CI and monitoring","items":[{"label":"Docker","url":"/topics/devops-cloud/notes/03-docker","keys":["devops-cloud/notes/03-docker"],"minutes":10,"topic":"devops-cloud"},{"label":"AWS essentials","url":"/topics/devops-cloud/notes/15-aws-cloud-essentials","keys":["devops-cloud/notes/15-aws-cloud-essentials"],"minutes":5,"topic":"devops-cloud"},{"label":"CI/CD","url":"/topics/devops-cloud/notes/06-cicd","keys":["devops-cloud/notes/06-cicd"],"minutes":15,"topic":"devops-cloud"},{"label":"Terraform","url":"/topics/devops-cloud/notes/07-terraform","keys":["devops-cloud/notes/07-terraform"],"minutes":18,"topic":"devops-cloud"},{"label":"Observability","url":"/topics/devops-cloud/notes/09-observability","keys":["devops-cloud/notes/09-observability"],"minutes":11,"topic":"devops-cloud"}]},{"title":"Put it together","hint":"Ship a real project","items":[{"label":"Frontend and E2E testing","url":"/topics/testing-quality/notes/02-frontend-and-e2e-testing","keys":["testing-quality/notes/02-frontend-and-e2e-testing"],"minutes":5,"topic":"testing-quality"},{"label":"System design fundamentals","url":"/topics/system-design/notes/01-system-design-fundamentals","keys":["system-design/notes/01-system-design-fundamentals"],"minutes":8,"topic":"system-design"},{"label":"Full-stack capstone","url":"/topics/software-engineering/notes/03-full-stack-capstone-project","keys":["software-engineering/notes/03-full-stack-capstone-project"],"minutes":10,"topic":"software-engineering"},{"label":"Ops capstone","url":"/topics/devops-cloud/notes/14-capstone-project","keys":["devops-cloud/notes/14-capstone-project"],"minutes":5,"topic":"devops-cloud"}]}],"topics":["frontend","javascript","react","nextjs","nodejs","api-design","database","security","git-collaboration","devops-cloud","testing-quality","system-design","software-engineering"],"minutes":199},{"slug":"frontend","title":"Frontend","emoji":"🎨","accent":"#EC4899","blurb":"HTML, CSS and JavaScript to frameworks, testing, performance, security and SSR.","order":3,"source":"https://roadmap.sh/frontend","stages":[{"title":"The web platform","hint":"HTML, CSS and how browsers work","items":[{"label":"Web platform fundamentals","url":"/topics/frontend/notes/01-web-platform-fundamentals","keys":["frontend/notes/01-web-platform-fundamentals"],"minutes":8,"topic":"frontend"},{"label":"Semantic HTML, forms and accessibility","url":"/topics/frontend/notes/03-semantic-html-and-forms","keys":["frontend/notes/03-semantic-html-and-forms"],"minutes":10,"topic":"frontend"},{"label":"Modern CSS layout and architecture","url":"/topics/frontend/notes/04-modern-css-layout-and-architecture","keys":["frontend/notes/04-modern-css-layout-and-architecture"],"minutes":9,"topic":"frontend"},{"label":"Browser APIs and rendering","url":"/topics/frontend/notes/02-browser-apis-rendering-and-security","keys":["frontend/notes/02-browser-apis-rendering-and-security"],"minutes":4,"topic":"frontend"},{"label":"Accessibility and UX","url":"/topics/ui-ux/notes/01-ui-ux-essentials-for-engineers","keys":["ui-ux/notes/01-ui-ux-essentials-for-engineers"],"minutes":3,"topic":"ui-ux"}]},{"title":"JavaScript and TypeScript","hint":"The language of the web","items":[{"label":"JavaScript","url":"/topics/javascript/notes/01-javascript","keys":["javascript/notes/01-javascript"],"minutes":12,"topic":"javascript"},{"label":"TypeScript","url":"/topics/javascript/notes/02-typescript","keys":["javascript/notes/02-typescript"],"minutes":11,"topic":"javascript"},{"label":"Advanced TypeScript","url":"/topics/javascript/notes/03-advanced-typescript-and-react-typing","keys":["javascript/notes/03-advanced-typescript-and-react-typing"],"minutes":6,"topic":"javascript"}]},{"title":"Version control and tooling","hint":"","items":[{"label":"Git","url":"/topics/git-collaboration/notes/01-git","keys":["git-collaboration/notes/01-git"],"minutes":5,"topic":"git-collaboration"},{"label":"Build tools, linters and bundlers","url":"/topics/frontend/notes/05-build-tools-and-the-frontend-toolchain","keys":["frontend/notes/05-build-tools-and-the-frontend-toolchain"],"minutes":8,"topic":"frontend"}]},{"title":"Frameworks","hint":"Pick one and go deep","items":[{"label":"React core","url":"/topics/react/notes/01-react-core","keys":["react/notes/01-react-core"],"minutes":12,"topic":"react"},{"label":"React performance and patterns","url":"/topics/react/notes/02-react-performance-and-patterns","keys":["react/notes/02-react-performance-and-patterns"],"minutes":10,"topic":"react"},{"label":"State, data fetching and tooling","url":"/topics/react/notes/03-state-data-and-tooling","keys":["react/notes/03-state-data-and-tooling"],"minutes":9,"topic":"react"},{"label":"Angular and RxJS","url":"/topics/angular/notes/01-angular-and-rxjs-essentials","keys":["angular/notes/01-angular-and-rxjs-essentials"],"minutes":6,"topic":"angular"}]},{"title":"Testing","hint":"Confidence before shipping","items":[{"label":"Frontend and E2E testing","url":"/topics/testing-quality/notes/02-frontend-and-e2e-testing","keys":["testing-quality/notes/02-frontend-and-e2e-testing"],"minutes":5,"topic":"testing-quality"}]},{"title":"Security","hint":"Protect your users","items":[{"label":"OWASP Top 10","url":"/topics/security/notes/01-owasp-top-10-2025","keys":["security/notes/01-owasp-top-10-2025"],"minutes":12,"topic":"security"},{"label":"Authentication","url":"/topics/security/notes/02-authentication-and-authorization","keys":["security/notes/02-authentication-and-authorization"],"minutes":10,"topic":"security"}]},{"title":"Rendering strategies","hint":"SSR, SSG and the edge","items":[{"label":"Next.js","url":"/topics/nextjs/notes/01-nextjs-essentials","keys":["nextjs/notes/01-nextjs-essentials"],"minutes":6,"topic":"nextjs"}]},{"title":"Performance and PWAs","hint":"","items":[{"label":"Core Web Vitals and PWAs","url":"/topics/frontend/notes/06-web-performance-and-pwas","keys":["frontend/notes/06-web-performance-and-pwas"],"minutes":9,"topic":"frontend"}]}],"topics":["frontend","ui-ux","javascript","git-collaboration","react","angular","testing-quality","security","nextjs"],"minutes":155},{"slug":"devops","title":"DevOps","emoji":"♾️","accent":"#F97316","blurb":"Linux, networking, containers, IaC, CI/CD, Kubernetes, cloud and observability.","order":6,"source":"https://roadmap.sh/devops","stages":[{"title":"Foundations","hint":"OS, shell and networking","items":[{"label":"Linux","url":"/topics/devops-cloud/notes/01-linux","keys":["devops-cloud/notes/01-linux"],"minutes":10,"topic":"devops-cloud"},{"label":"Scripting: Bash and Python","url":"/topics/devops-cloud/notes/11-scripting","keys":["devops-cloud/notes/11-scripting"],"minutes":12,"topic":"devops-cloud"},{"label":"Networking","url":"/topics/devops-cloud/notes/02-networking","keys":["devops-cloud/notes/02-networking"],"minutes":8,"topic":"devops-cloud"},{"label":"Git","url":"/topics/git-collaboration/notes/01-git","keys":["git-collaboration/notes/01-git"],"minutes":5,"topic":"git-collaboration"}]},{"title":"Containers","hint":"","items":[{"label":"Docker","url":"/topics/devops-cloud/notes/03-docker","keys":["devops-cloud/notes/03-docker"],"minutes":10,"topic":"devops-cloud"}]},{"title":"Infrastructure as code","hint":"","items":[{"label":"Terraform","url":"/topics/devops-cloud/notes/07-terraform","keys":["devops-cloud/notes/07-terraform"],"minutes":18,"topic":"devops-cloud"},{"label":"Configuration management: Ansible","url":"/topics/devops-cloud/notes/17-configuration-management-with-ansible","keys":["devops-cloud/notes/17-configuration-management-with-ansible"],"minutes":10,"topic":"devops-cloud"}]},{"title":"CI/CD","hint":"","items":[{"label":"Pipelines and GitOps","url":"/topics/devops-cloud/notes/06-cicd","keys":["devops-cloud/notes/06-cicd"],"minutes":15,"topic":"devops-cloud"}]},{"title":"Orchestration","hint":"","items":[{"label":"Kubernetes","url":"/topics/devops-cloud/notes/04-kubernetes","keys":["devops-cloud/notes/04-kubernetes"],"minutes":21,"topic":"devops-cloud"},{"label":"Helm","url":"/topics/devops-cloud/notes/05-helm","keys":["devops-cloud/notes/05-helm"],"minutes":11,"topic":"devops-cloud"},{"label":"GitOps with Argo CD","url":"/topics/devops-cloud/notes/16-gitops-and-argo-cd","keys":["devops-cloud/notes/16-gitops-and-argo-cd"],"minutes":10,"topic":"devops-cloud"},{"label":"Service mesh","url":"/topics/devops-cloud/notes/18-service-mesh","keys":["devops-cloud/notes/18-service-mesh"],"minutes":8,"topic":"devops-cloud"}]},{"title":"Cloud","hint":"","items":[{"label":"AWS essentials","url":"/topics/devops-cloud/notes/15-aws-cloud-essentials","keys":["devops-cloud/notes/15-aws-cloud-essentials"],"minutes":5,"topic":"devops-cloud"},{"label":"Azure","url":"/topics/devops-cloud/notes/08-azure","keys":["devops-cloud/notes/08-azure"],"minutes":11,"topic":"devops-cloud"},{"label":"Cloud theory","url":"/topics/devops-cloud/deep/theory","keys":["devops-cloud/deep/theory"],"minutes":3,"topic":"devops-cloud"}]},{"title":"Operate","hint":"Monitor, secure and fix","items":[{"label":"Observability and incidents","url":"/topics/devops-cloud/notes/09-observability","keys":["devops-cloud/notes/09-observability"],"minutes":11,"topic":"devops-cloud"},{"label":"Security and supply chain","url":"/topics/devops-cloud/notes/10-security","keys":["devops-cloud/notes/10-security"],"minutes":11,"topic":"devops-cloud"},{"label":"Troubleshooting runbooks","url":"/topics/devops-cloud/notes/12-troubleshooting-runbooks","keys":["devops-cloud/notes/12-troubleshooting-runbooks"],"minutes":9,"topic":"devops-cloud"},{"label":"Capstone","url":"/topics/devops-cloud/notes/14-capstone-project","keys":["devops-cloud/notes/14-capstone-project"],"minutes":5,"topic":"devops-cloud"},{"label":"Interview bank","url":"/topics/devops-cloud/notes/13-interview-question-bank","keys":["devops-cloud/notes/13-interview-question-bank"],"minutes":12,"topic":"devops-cloud"}]}],"topics":["devops-cloud","git-collaboration"],"minutes":205},{"slug":"ai-engineer","title":"AI Engineer","emoji":"🤖","accent":"#7C3AED","blurb":"Build reliable products on LLMs: APIs, prompting, RAG, agents, evaluation and operations.","order":7,"source":"https://roadmap.sh/ai-engineer","stages":[{"title":"Foundations","hint":"A language and the basics of how models work","items":[{"label":"Python","url":"/topics/python/notes/01-python","keys":["python/notes/01-python"],"minutes":12,"topic":"python"},{"label":"TypeScript","url":"/topics/javascript/notes/02-typescript","keys":["javascript/notes/02-typescript"],"minutes":11,"topic":"javascript"},{"label":"How LLMs and transformers work","url":"/topics/machine-learning/notes/03-deep-learning-with-pytorch#5-sequences-and-transformers","keys":["machine-learning/notes/03-deep-learning-with-pytorch"],"minutes":8,"topic":"machine-learning"}]},{"title":"Using LLM APIs","hint":"Calls, prompts and structured output","items":[{"label":"LLM APIs, prompting and structured output","url":"/topics/ai-engineering/notes/01-llm-apis-prompting-and-structured-output","keys":["ai-engineering/notes/01-llm-apis-prompting-and-structured-output"],"minutes":9,"topic":"ai-engineering"},{"label":"AI systems theory","url":"/topics/ai-ml/deep/theory","keys":["ai-ml/deep/theory"],"minutes":3,"topic":"ai-ml"}]},{"title":"Retrieval-augmented generation","hint":"Ground answers in your data","items":[{"label":"Embeddings, vector search and RAG","url":"/topics/ai-engineering/notes/02-embeddings-vector-search-and-rag","keys":["ai-engineering/notes/02-embeddings-vector-search-and-rag"],"minutes":8,"topic":"ai-engineering"},{"label":"pgvector and PostgreSQL extensions","url":"/topics/postgresql/notes/04-performance-tuning-and-extensions","keys":["postgresql/notes/04-performance-tuning-and-extensions"],"minutes":7,"topic":"postgresql"}]},{"title":"Agents","hint":"Tools, memory and guardrails","items":[{"label":"AI agents and tool use","url":"/topics/ai-engineering/notes/03-ai-agents-and-tool-use","keys":["ai-engineering/notes/03-ai-agents-and-tool-use"],"minutes":7,"topic":"ai-engineering"},{"label":"Application security (OWASP)","url":"/topics/security/notes/01-owasp-top-10-2025","keys":["security/notes/01-owasp-top-10-2025"],"minutes":12,"topic":"security"}]},{"title":"Ship and operate","hint":"Evaluate, monitor and serve","items":[{"label":"Evaluating and operating LLM apps","url":"/topics/ai-engineering/notes/04-evaluating-and-operating-llm-apps","keys":["ai-engineering/notes/04-evaluating-and-operating-llm-apps"],"minutes":7,"topic":"ai-engineering"},{"label":"Model serving and deployment","url":"/topics/mlops/notes/02-model-serving-and-deployment","keys":["mlops/notes/02-model-serving-and-deployment"],"minutes":8,"topic":"mlops"},{"label":"Observability","url":"/topics/devops-cloud/notes/09-observability","keys":["devops-cloud/notes/09-observability"],"minutes":11,"topic":"devops-cloud"}]}],"topics":["python","javascript","machine-learning","ai-engineering","ai-ml","postgresql","security","mlops","devops-cloud"],"minutes":103},{"slug":"data-analyst","title":"Data Analyst","emoji":"📊","accent":"#0891B2","blurb":"Questions to decisions: spreadsheets, SQL, statistics, Python, visualisation and storytelling.","order":8,"source":"https://roadmap.sh/data-analyst","stages":[{"title":"Workflow and spreadsheets","hint":"","items":[{"label":"The analyst workflow and data cleaning","url":"/topics/data-analysis/notes/01-the-analyst-workflow-and-data-cleaning","keys":["data-analysis/notes/01-the-analyst-workflow-and-data-cleaning"],"minutes":7,"topic":"data-analysis"}]},{"title":"SQL","hint":"Your main tool","items":[{"label":"SQL and data modelling","url":"/topics/database/notes/01-sql-and-data-modelling","keys":["database/notes/01-sql-and-data-modelling"],"minutes":12,"topic":"database"},{"label":"Advanced SQL","url":"/topics/database/notes/05-advanced-sql-and-nosql-deep-dive","keys":["database/notes/05-advanced-sql-and-nosql-deep-dive"],"minutes":8,"topic":"database"}]},{"title":"Statistics","hint":"Signal vs noise","items":[{"label":"Statistics for analysts","url":"/topics/data-analysis/notes/02-statistics-for-analysts","keys":["data-analysis/notes/02-statistics-for-analysts"],"minutes":4,"topic":"data-analysis"}]},{"title":"Python and visualisation","hint":"pandas, charts and BI","items":[{"label":"Python","url":"/topics/python/notes/01-python","keys":["python/notes/01-python"],"minutes":12,"topic":"python"},{"label":"Python for analysis, visualisation and storytelling","url":"/topics/data-analysis/notes/03-python-for-analysis-visualisation-and-storytelling","keys":["data-analysis/notes/03-python-for-analysis-visualisation-and-storytelling"],"minutes":7,"topic":"data-analysis"}]},{"title":"Data platforms","hint":"Where the data comes from","items":[{"label":"Warehouses and lakehouses","url":"/topics/data-engineering/notes/01-data-modelling-warehouses-and-lakehouses","keys":["data-engineering/notes/01-data-modelling-warehouses-and-lakehouses"],"minutes":8,"topic":"data-engineering"},{"label":"dbt and pipelines","url":"/topics/data-engineering/notes/02-pipelines-dbt-and-orchestration","keys":["data-engineering/notes/02-pipelines-dbt-and-orchestration"],"minutes":9,"topic":"data-engineering"}]},{"title":"Going further","hint":"Into prediction","items":[{"label":"Machine learning fundamentals","url":"/topics/machine-learning/notes/01-supervised-learning-fundamentals","keys":["machine-learning/notes/01-supervised-learning-fundamentals"],"minutes":8,"topic":"machine-learning"}]}],"topics":["data-analysis","database","python","data-engineering","machine-learning"],"minutes":75},{"slug":"ai-data-scientist","title":"AI and Data Scientist","emoji":"🔬","accent":"#0D9488","blurb":"Maths, statistics, machine learning, deep learning and the full arc of a data science project.","order":9,"source":"https://roadmap.sh/ai-data-scientist","stages":[{"title":"Mathematics","hint":"","items":[{"label":"Linear algebra, calculus and probability","url":"/topics/data-science/notes/01-math-foundations-for-data-science","keys":["data-science/notes/01-math-foundations-for-data-science"],"minutes":7,"topic":"data-science"}]},{"title":"Statistics and experiments","hint":"","items":[{"label":"Statistics and A/B tests","url":"/topics/data-analysis/notes/02-statistics-for-analysts","keys":["data-analysis/notes/02-statistics-for-analysts"],"minutes":4,"topic":"data-analysis"}]},{"title":"Programming and data","hint":"","items":[{"label":"Python","url":"/topics/python/notes/01-python","keys":["python/notes/01-python"],"minutes":12,"topic":"python"},{"label":"pandas, visualisation and storytelling","url":"/topics/data-analysis/notes/03-python-for-analysis-visualisation-and-storytelling","keys":["data-analysis/notes/03-python-for-analysis-visualisation-and-storytelling"],"minutes":7,"topic":"data-analysis"},{"label":"SQL","url":"/topics/database/notes/01-sql-and-data-modelling","keys":["database/notes/01-sql-and-data-modelling"],"minutes":12,"topic":"database"}]},{"title":"Machine learning","hint":"","items":[{"label":"Supervised learning","url":"/topics/machine-learning/notes/01-supervised-learning-fundamentals","keys":["machine-learning/notes/01-supervised-learning-fundamentals"],"minutes":8,"topic":"machine-learning"},{"label":"Unsupervised learning, evaluation and features","url":"/topics/machine-learning/notes/02-unsupervised-learning-evaluation-and-features","keys":["machine-learning/notes/02-unsupervised-learning-evaluation-and-features"],"minutes":7,"topic":"machine-learning"}]},{"title":"Deep learning and LLMs","hint":"","items":[{"label":"Deep learning with PyTorch","url":"/topics/machine-learning/notes/03-deep-learning-with-pytorch","keys":["machine-learning/notes/03-deep-learning-with-pytorch"],"minutes":8,"topic":"machine-learning"},{"label":"LLM apps and RAG","url":"/topics/ai-engineering/notes/02-embeddings-vector-search-and-rag","keys":["ai-engineering/notes/02-embeddings-vector-search-and-rag"],"minutes":8,"topic":"ai-engineering"}]},{"title":"Delivering impact","hint":"","items":[{"label":"End-to-end data science project","url":"/topics/data-science/notes/02-end-to-end-data-science-project","keys":["data-science/notes/02-end-to-end-data-science-project"],"minutes":7,"topic":"data-science"},{"label":"MLOps lifecycle","url":"/topics/mlops/notes/01-ml-lifecycle-experiment-tracking-and-pipelines","keys":["mlops/notes/01-ml-lifecycle-experiment-tracking-and-pipelines"],"minutes":8,"topic":"mlops"}]}],"topics":["data-science","data-analysis","python","database","machine-learning","ai-engineering","mlops"],"minutes":88},{"slug":"data-engineer","title":"Data Engineer","emoji":"🏗️","accent":"#2563EB","blurb":"Model, move and serve data reliably, from SQL and warehouses to Spark, Kafka and governance.","order":10,"source":"https://roadmap.sh/data-engineer","stages":[{"title":"Foundations","hint":"","items":[{"label":"Python","url":"/topics/python/notes/01-python","keys":["python/notes/01-python"],"minutes":12,"topic":"python"},{"label":"SQL and data modelling","url":"/topics/database/notes/01-sql-and-data-modelling","keys":["database/notes/01-sql-and-data-modelling"],"minutes":12,"topic":"database"},{"label":"Linux","url":"/topics/devops-cloud/notes/01-linux","keys":["devops-cloud/notes/01-linux"],"minutes":10,"topic":"devops-cloud"},{"label":"Git","url":"/topics/git-collaboration/notes/01-git","keys":["git-collaboration/notes/01-git"],"minutes":5,"topic":"git-collaboration"}]},{"title":"Databases","hint":"","items":[{"label":"PostgreSQL architecture","url":"/topics/postgresql/notes/01-postgresql-architecture-and-mvcc","keys":["postgresql/notes/01-postgresql-architecture-and-mvcc"],"minutes":8,"topic":"postgresql"},{"label":"Scaling and NoSQL","url":"/topics/database/notes/04-scaling-nosql-and-caching","keys":["database/notes/04-scaling-nosql-and-caching"],"minutes":9,"topic":"database"}]},{"title":"Modelling and storage","hint":"","items":[{"label":"Warehouses, lakehouses and dimensional modelling","url":"/topics/data-engineering/notes/01-data-modelling-warehouses-and-lakehouses","keys":["data-engineering/notes/01-data-modelling-warehouses-and-lakehouses"],"minutes":8,"topic":"data-engineering"}]},{"title":"Pipelines","hint":"","items":[{"label":"Ingestion, dbt and orchestration","url":"/topics/data-engineering/notes/02-pipelines-dbt-and-orchestration","keys":["data-engineering/notes/02-pipelines-dbt-and-orchestration"],"minutes":9,"topic":"data-engineering"}]},{"title":"Big data and streaming","hint":"","items":[{"label":"Distributed processing with Spark","url":"/topics/data-engineering/notes/03-distributed-processing-with-spark","keys":["data-engineering/notes/03-distributed-processing-with-spark"],"minutes":8,"topic":"data-engineering"},{"label":"Streaming, quality and governance","url":"/topics/data-engineering/notes/04-streaming-data-quality-and-governance","keys":["data-engineering/notes/04-streaming-data-quality-and-governance"],"minutes":8,"topic":"data-engineering"}]},{"title":"Infrastructure","hint":"","items":[{"label":"Docker","url":"/topics/devops-cloud/notes/03-docker","keys":["devops-cloud/notes/03-docker"],"minutes":10,"topic":"devops-cloud"},{"label":"Kubernetes","url":"/topics/devops-cloud/notes/04-kubernetes","keys":["devops-cloud/notes/04-kubernetes"],"minutes":21,"topic":"devops-cloud"},{"label":"Terraform","url":"/topics/devops-cloud/notes/07-terraform","keys":["devops-cloud/notes/07-terraform"],"minutes":18,"topic":"devops-cloud"},{"label":"AWS essentials","url":"/topics/devops-cloud/notes/15-aws-cloud-essentials","keys":["devops-cloud/notes/15-aws-cloud-essentials"],"minutes":5,"topic":"devops-cloud"}]}],"topics":["python","database","devops-cloud","git-collaboration","postgresql","data-engineering"],"minutes":143},{"slug":"machine-learning","title":"Machine Learning","emoji":"🧠","accent":"#DB2777","blurb":"From the maths to supervised, unsupervised and deep learning, with honest evaluation.","order":11,"source":"https://roadmap.sh/machine-learning","stages":[{"title":"Prerequisites","hint":"","items":[{"label":"Python","url":"/topics/python/notes/01-python","keys":["python/notes/01-python"],"minutes":12,"topic":"python"},{"label":"Mathematics for ML","url":"/topics/data-science/notes/01-math-foundations-for-data-science","keys":["data-science/notes/01-math-foundations-for-data-science"],"minutes":7,"topic":"data-science"},{"label":"Statistics","url":"/topics/data-analysis/notes/02-statistics-for-analysts","keys":["data-analysis/notes/02-statistics-for-analysts"],"minutes":4,"topic":"data-analysis"}]},{"title":"Supervised learning","hint":"","items":[{"label":"Fundamentals and algorithms","url":"/topics/machine-learning/notes/01-supervised-learning-fundamentals","keys":["machine-learning/notes/01-supervised-learning-fundamentals"],"minutes":8,"topic":"machine-learning"}]},{"title":"Unsupervised learning and evaluation","hint":"","items":[{"label":"Clustering, metrics and features","url":"/topics/machine-learning/notes/02-unsupervised-learning-evaluation-and-features","keys":["machine-learning/notes/02-unsupervised-learning-evaluation-and-features"],"minutes":7,"topic":"machine-learning"}]},{"title":"Deep learning","hint":"","items":[{"label":"PyTorch, CNNs and transformers","url":"/topics/machine-learning/notes/03-deep-learning-with-pytorch","keys":["machine-learning/notes/03-deep-learning-with-pytorch"],"minutes":8,"topic":"machine-learning"}]},{"title":"Production","hint":"","items":[{"label":"MLOps lifecycle","url":"/topics/mlops/notes/01-ml-lifecycle-experiment-tracking-and-pipelines","keys":["mlops/notes/01-ml-lifecycle-experiment-tracking-and-pipelines"],"minutes":8,"topic":"mlops"},{"label":"Serving","url":"/topics/mlops/notes/02-model-serving-and-deployment","keys":["mlops/notes/02-model-serving-and-deployment"],"minutes":8,"topic":"mlops"}]}],"topics":["python","data-science","data-analysis","machine-learning","mlops"],"minutes":62},{"slug":"mlops","title":"MLOps","emoji":"⚙️","accent":"#EA580C","blurb":"Ship models and keep them healthy: pipelines, serving, monitoring and governance.","order":12,"source":"https://roadmap.sh/mlops","stages":[{"title":"Foundations","hint":"","items":[{"label":"Python","url":"/topics/python/notes/01-python","keys":["python/notes/01-python"],"minutes":12,"topic":"python"},{"label":"Linux","url":"/topics/devops-cloud/notes/01-linux","keys":["devops-cloud/notes/01-linux"],"minutes":10,"topic":"devops-cloud"},{"label":"Git","url":"/topics/git-collaboration/notes/01-git","keys":["git-collaboration/notes/01-git"],"minutes":5,"topic":"git-collaboration"},{"label":"Machine learning fundamentals","url":"/topics/machine-learning/notes/01-supervised-learning-fundamentals","keys":["machine-learning/notes/01-supervised-learning-fundamentals"],"minutes":8,"topic":"machine-learning"}]},{"title":"Containers and infrastructure","hint":"","items":[{"label":"Docker","url":"/topics/devops-cloud/notes/03-docker","keys":["devops-cloud/notes/03-docker"],"minutes":10,"topic":"devops-cloud"},{"label":"Kubernetes","url":"/topics/devops-cloud/notes/04-kubernetes","keys":["devops-cloud/notes/04-kubernetes"],"minutes":21,"topic":"devops-cloud"},{"label":"Terraform","url":"/topics/devops-cloud/notes/07-terraform","keys":["devops-cloud/notes/07-terraform"],"minutes":18,"topic":"devops-cloud"},{"label":"CI/CD","url":"/topics/devops-cloud/notes/06-cicd","keys":["devops-cloud/notes/06-cicd"],"minutes":15,"topic":"devops-cloud"}]},{"title":"ML lifecycle","hint":"","items":[{"label":"Tracking, pipelines and feature stores","url":"/topics/mlops/notes/01-ml-lifecycle-experiment-tracking-and-pipelines","keys":["mlops/notes/01-ml-lifecycle-experiment-tracking-and-pipelines"],"minutes":8,"topic":"mlops"},{"label":"Data pipelines and orchestration","url":"/topics/data-engineering/notes/02-pipelines-dbt-and-orchestration","keys":["data-engineering/notes/02-pipelines-dbt-and-orchestration"],"minutes":9,"topic":"data-engineering"}]},{"title":"Serving","hint":"","items":[{"label":"Model serving and deployment","url":"/topics/mlops/notes/02-model-serving-and-deployment","keys":["mlops/notes/02-model-serving-and-deployment"],"minutes":8,"topic":"mlops"}]},{"title":"Monitoring and governance","hint":"","items":[{"label":"Drift, retraining and responsible ML","url":"/topics/mlops/notes/03-monitoring-drift-and-responsible-ml","keys":["mlops/notes/03-monitoring-drift-and-responsible-ml"],"minutes":6,"topic":"mlops"},{"label":"Observability","url":"/topics/devops-cloud/notes/09-observability","keys":["devops-cloud/notes/09-observability"],"minutes":11,"topic":"devops-cloud"}]}],"topics":["python","devops-cloud","git-collaboration","machine-learning","mlops","data-engineering"],"minutes":141},{"slug":"devsecops","title":"DevSecOps","emoji":"🛡️","accent":"#B91C1C","blurb":"Security woven into delivery: pipelines, supply chain, policy as code, runtime and compliance.","order":13,"source":"https://roadmap.sh/devsecops","stages":[{"title":"Foundations","hint":"","items":[{"label":"Linux","url":"/topics/devops-cloud/notes/01-linux","keys":["devops-cloud/notes/01-linux"],"minutes":10,"topic":"devops-cloud"},{"label":"Networking","url":"/topics/devops-cloud/notes/02-networking","keys":["devops-cloud/notes/02-networking"],"minutes":8,"topic":"devops-cloud"},{"label":"Security fundamentals","url":"/topics/cyber-security/notes/01-security-fundamentals-and-the-threat-landscape","keys":["cyber-security/notes/01-security-fundamentals-and-the-threat-landscape"],"minutes":7,"topic":"cyber-security"},{"label":"OWASP Top 10","url":"/topics/security/notes/01-owasp-top-10-2025","keys":["security/notes/01-owasp-top-10-2025"],"minutes":12,"topic":"security"}]},{"title":"Delivery platform","hint":"","items":[{"label":"Docker","url":"/topics/devops-cloud/notes/03-docker","keys":["devops-cloud/notes/03-docker"],"minutes":10,"topic":"devops-cloud"},{"label":"Kubernetes","url":"/topics/devops-cloud/notes/04-kubernetes","keys":["devops-cloud/notes/04-kubernetes"],"minutes":21,"topic":"devops-cloud"},{"label":"CI/CD","url":"/topics/devops-cloud/notes/06-cicd","keys":["devops-cloud/notes/06-cicd"],"minutes":15,"topic":"devops-cloud"},{"label":"Terraform","url":"/topics/devops-cloud/notes/07-terraform","keys":["devops-cloud/notes/07-terraform"],"minutes":18,"topic":"devops-cloud"}]},{"title":"Shift left","hint":"","items":[{"label":"Security in CI/CD","url":"/topics/devsecops/notes/01-shift-left-security-in-ci-cd","keys":["devsecops/notes/01-shift-left-security-in-ci-cd"],"minutes":9,"topic":"devsecops"},{"label":"Supply chain and AppSec","url":"/topics/security/notes/03-appsec-network-and-supply-chain","keys":["security/notes/03-appsec-network-and-supply-chain"],"minutes":9,"topic":"security"}]},{"title":"Secrets and identity","hint":"","items":[{"label":"Cloud security and secrets","url":"/topics/devops-cloud/notes/10-security","keys":["devops-cloud/notes/10-security"],"minutes":11,"topic":"devops-cloud"},{"label":"Authentication and authorization","url":"/topics/security/notes/02-authentication-and-authorization","keys":["security/notes/02-authentication-and-authorization"],"minutes":10,"topic":"security"}]},{"title":"Runtime and compliance","hint":"","items":[{"label":"Policy as code, runtime security, compliance","url":"/topics/devsecops/notes/02-policy-as-code-runtime-security-and-compliance","keys":["devsecops/notes/02-policy-as-code-runtime-security-and-compliance"],"minutes":9,"topic":"devsecops"},{"label":"Detection and incident response","url":"/topics/cyber-security/notes/02-security-operations-detection-and-incident-response","keys":["cyber-security/notes/02-security-operations-detection-and-incident-response"],"minutes":8,"topic":"cyber-security"}]}],"topics":["devops-cloud","cyber-security","security","devsecops"],"minutes":157},{"slug":"postgresql","title":"PostgreSQL","emoji":"🐘","accent":"#336791","blurb":"SQL to internals: MVCC, VACUUM, roles, backups, replication, HA and tuning.","order":13,"source":"https://roadmap.sh/postgresql-dba","stages":[{"title":"SQL","hint":"","items":[{"label":"SQL and data modelling","url":"/topics/database/notes/01-sql-and-data-modelling","keys":["database/notes/01-sql-and-data-modelling"],"minutes":12,"topic":"database"},{"label":"Advanced SQL","url":"/topics/database/notes/05-advanced-sql-and-nosql-deep-dive","keys":["database/notes/05-advanced-sql-and-nosql-deep-dive"],"minutes":8,"topic":"database"}]},{"title":"Internals","hint":"","items":[{"label":"Architecture, MVCC and VACUUM","url":"/topics/postgresql/notes/01-postgresql-architecture-and-mvcc","keys":["postgresql/notes/01-postgresql-architecture-and-mvcc"],"minutes":8,"topic":"postgresql"},{"label":"Transactions and isolation","url":"/topics/database/notes/03-transactions-and-concurrency","keys":["database/notes/03-transactions-and-concurrency"],"minutes":8,"topic":"database"}]},{"title":"Administration","hint":"","items":[{"label":"Roles, security, backups and recovery","url":"/topics/postgresql/notes/02-administration-security-and-backups","keys":["postgresql/notes/02-administration-security-and-backups"],"minutes":8,"topic":"postgresql"}]},{"title":"Performance","hint":"","items":[{"label":"Indexing and EXPLAIN","url":"/topics/database/notes/02-indexing-and-query-performance","keys":["database/notes/02-indexing-and-query-performance"],"minutes":11,"topic":"database"},{"label":"Tuning and extensions","url":"/topics/postgresql/notes/04-performance-tuning-and-extensions","keys":["postgresql/notes/04-performance-tuning-and-extensions"],"minutes":7,"topic":"postgresql"}]},{"title":"High availability","hint":"","items":[{"label":"Replication, HA and scaling","url":"/topics/postgresql/notes/03-replication-high-availability-and-scaling","keys":["postgresql/notes/03-replication-high-availability-and-scaling"],"minutes":9,"topic":"postgresql"}]},{"title":"In an application","hint":"","items":[{"label":"PostgreSQL with Spring and HikariCP","url":"/topics/spring-boot/notes/02-data-layer","keys":["spring-boot/notes/02-data-layer"],"minutes":6,"topic":"spring-boot"}]}],"topics":["database","postgresql","spring-boot"],"minutes":77},{"slug":"cyber-security","title":"Cyber Security","emoji":"🔐","accent":"#9F1239","blurb":"Fundamentals, networks, attacks, security operations, incident response and cryptography.","order":14,"source":"https://roadmap.sh/cyber-security","stages":[{"title":"Fundamentals","hint":"","items":[{"label":"Security fundamentals and threats","url":"/topics/cyber-security/notes/01-security-fundamentals-and-the-threat-landscape","keys":["cyber-security/notes/01-security-fundamentals-and-the-threat-landscape"],"minutes":7,"topic":"cyber-security"},{"label":"Linux","url":"/topics/devops-cloud/notes/01-linux","keys":["devops-cloud/notes/01-linux"],"minutes":10,"topic":"devops-cloud"},{"label":"Scripting","url":"/topics/devops-cloud/notes/11-scripting","keys":["devops-cloud/notes/11-scripting"],"minutes":12,"topic":"devops-cloud"}]},{"title":"Networking","hint":"","items":[{"label":"Switching, routing and VLANs","url":"/topics/networking/notes/01-switching-routing-and-vlans","keys":["networking/notes/01-switching-routing-and-vlans"],"minutes":9,"topic":"networking"},{"label":"Network services, firewalls and VPNs","url":"/topics/networking/notes/02-network-services-security-and-vpns","keys":["networking/notes/02-network-services-security-and-vpns"],"minutes":8,"topic":"networking"}]},{"title":"Application and identity security","hint":"","items":[{"label":"OWASP Top 10","url":"/topics/security/notes/01-owasp-top-10-2025","keys":["security/notes/01-owasp-top-10-2025"],"minutes":12,"topic":"security"},{"label":"Authentication and authorization","url":"/topics/security/notes/02-authentication-and-authorization","keys":["security/notes/02-authentication-and-authorization"],"minutes":10,"topic":"security"}]},{"title":"Cryptography","hint":"","items":[{"label":"Cryptography and PKI in practice","url":"/topics/cyber-security/notes/03-cryptography-and-pki-in-practice","keys":["cyber-security/notes/03-cryptography-and-pki-in-practice"],"minutes":8,"topic":"cyber-security"}]},{"title":"Security operations","hint":"","items":[{"label":"Logging, detection and incident response","url":"/topics/cyber-security/notes/02-security-operations-detection-and-incident-response","keys":["cyber-security/notes/02-security-operations-detection-and-incident-response"],"minutes":8,"topic":"cyber-security"},{"label":"Packet analysis","url":"/topics/networking/notes/03-network-troubleshooting-and-automation#3-packet-analysis-with-tcpdump-and-wireshark","keys":["networking/notes/03-network-troubleshooting-and-automation"],"minutes":9,"topic":"networking"}]},{"title":"Cloud security","hint":"","items":[{"label":"Cloud security and secrets","url":"/topics/devops-cloud/notes/10-security","keys":["devops-cloud/notes/10-security"],"minutes":11,"topic":"devops-cloud"},{"label":"Runtime security and compliance","url":"/topics/devsecops/notes/02-policy-as-code-runtime-security-and-compliance","keys":["devsecops/notes/02-policy-as-code-runtime-security-and-compliance"],"minutes":9,"topic":"devsecops"}]}],"topics":["cyber-security","devops-cloud","networking","security","devsecops"],"minutes":113},{"slug":"api-design","title":"API Design","emoji":"🔌","accent":"#7C3AED","blurb":"Resources, HTTP semantics, auth, versioning, pagination, performance and docs.","order":15,"source":"https://roadmap.sh/api-design","stages":[{"title":"HTTP foundations","hint":"","items":[{"label":"HTTP and TLS","url":"/topics/devops-cloud/notes/02-networking#5-http-and-tls","keys":["devops-cloud/notes/02-networking"],"minutes":8,"topic":"devops-cloud"}]},{"title":"Designing APIs","hint":"","items":[{"label":"API design theory","url":"/topics/api-design/deep/theory","keys":["api-design/deep/theory"],"minutes":6,"topic":"api-design"},{"label":"REST in Django REST Framework","url":"/topics/django/notes/02-drf-and-api-design","keys":["django/notes/02-drf-and-api-design"],"minutes":13,"topic":"django"},{"label":"REST in Spring","url":"/topics/spring-boot/notes/03-web-and-apis","keys":["spring-boot/notes/03-web-and-apis"],"minutes":8,"topic":"spring-boot"},{"label":"OpenAPI, docs and contracts","url":"/topics/api-design/notes/01-openapi-documentation-and-contracts","keys":["api-design/notes/01-openapi-documentation-and-contracts"],"minutes":11,"topic":"api-design"}]},{"title":"Beyond REST","hint":"","items":[{"label":"GraphQL and gRPC","url":"/topics/api-design/deep/internals","keys":["api-design/deep/internals"],"minutes":1,"topic":"api-design"}]},{"title":"Security","hint":"","items":[{"label":"Authentication and authorization","url":"/topics/security/notes/02-authentication-and-authorization","keys":["security/notes/02-authentication-and-authorization"],"minutes":10,"topic":"security"},{"label":"OWASP Top 10","url":"/topics/security/notes/01-owasp-top-10-2025","keys":["security/notes/01-owasp-top-10-2025"],"minutes":12,"topic":"security"}]},{"title":"Reliability and performance","hint":"","items":[{"label":"Idempotency","url":"/topics/backend/deep/best-practices","keys":["backend/deep/best-practices"],"minutes":3,"topic":"backend"},{"label":"Caching","url":"/topics/backend/deep/performance","keys":["backend/deep/performance"],"minutes":3,"topic":"backend"},{"label":"Pagination, rate limiting and versioning","url":"/topics/api-design/notes/02-pagination-rate-limiting-and-versioning","keys":["api-design/notes/02-pagination-rate-limiting-and-versioning"],"minutes":8,"topic":"api-design"},{"label":"Rate limiting at scale","url":"/topics/system-design/notes/01-system-design-fundamentals#14-rate-limiting-a-very-common-deep-dive","keys":["system-design/notes/01-system-design-fundamentals"],"minutes":8,"topic":"system-design"}]},{"title":"Async and events","hint":"","items":[{"label":"Webhooks and async APIs","url":"/topics/api-design/notes/03-webhooks-and-asynchronous-apis","keys":["api-design/notes/03-webhooks-and-asynchronous-apis"],"minutes":8,"topic":"api-design"},{"label":"Messaging Q&A","url":"/topics/backend/interview/medium","keys":["backend/interview/medium"],"minutes":2,"topic":"backend"}]}],"topics":["devops-cloud","api-design","django","spring-boot","security","backend","system-design"],"minutes":101},{"slug":"network-engineer","title":"Network Engineer","emoji":"🌐","accent":"#0284C7","blurb":"From cables and VLANs to routing protocols, security, cloud networks and automation.","order":15,"source":"https://roadmap.sh/network-engineer","stages":[{"title":"Foundations","hint":"","items":[{"label":"Networking basics, CIDR and DNS","url":"/topics/devops-cloud/notes/02-networking","keys":["devops-cloud/notes/02-networking"],"minutes":8,"topic":"devops-cloud"},{"label":"Linux","url":"/topics/devops-cloud/notes/01-linux","keys":["devops-cloud/notes/01-linux"],"minutes":10,"topic":"devops-cloud"}]},{"title":"Switching and routing","hint":"","items":[{"label":"Switching, routing and VLANs","url":"/topics/networking/notes/01-switching-routing-and-vlans","keys":["networking/notes/01-switching-routing-and-vlans"],"minutes":9,"topic":"networking"}]},{"title":"Services and security","hint":"","items":[{"label":"DHCP, firewalls, VPNs and zero trust","url":"/topics/networking/notes/02-network-services-security-and-vpns","keys":["networking/notes/02-network-services-security-and-vpns"],"minutes":8,"topic":"networking"},{"label":"Cryptography and TLS","url":"/topics/cyber-security/notes/03-cryptography-and-pki-in-practice","keys":["cyber-security/notes/03-cryptography-and-pki-in-practice"],"minutes":8,"topic":"cyber-security"}]},{"title":"Cloud networking","hint":"","items":[{"label":"AWS essentials","url":"/topics/devops-cloud/notes/15-aws-cloud-essentials","keys":["devops-cloud/notes/15-aws-cloud-essentials"],"minutes":5,"topic":"devops-cloud"},{"label":"Azure","url":"/topics/devops-cloud/notes/08-azure","keys":["devops-cloud/notes/08-azure"],"minutes":11,"topic":"devops-cloud"}]},{"title":"Operate and automate","hint":"","items":[{"label":"Troubleshooting and automation","url":"/topics/networking/notes/03-network-troubleshooting-and-automation","keys":["networking/notes/03-network-troubleshooting-and-automation"],"minutes":9,"topic":"networking"},{"label":"Ansible","url":"/topics/devops-cloud/notes/17-configuration-management-with-ansible","keys":["devops-cloud/notes/17-configuration-management-with-ansible"],"minutes":10,"topic":"devops-cloud"},{"label":"Observability","url":"/topics/devops-cloud/notes/09-observability","keys":["devops-cloud/notes/09-observability"],"minutes":11,"topic":"devops-cloud"}]}],"topics":["devops-cloud","networking","cyber-security"],"minutes":89},{"slug":"qa","title":"QA Engineer","emoji":"🧪","accent":"#65A30D","blurb":"Test design, exploratory testing, automation, API, performance and CI quality gates.","order":16,"source":"https://roadmap.sh/qa","stages":[{"title":"QA fundamentals","hint":"","items":[{"label":"Test design and exploratory testing","url":"/topics/testing-quality/notes/03-qa-engineering-test-design-and-exploratory-testing","keys":["testing-quality/notes/03-qa-engineering-test-design-and-exploratory-testing"],"minutes":7,"topic":"testing-quality"},{"label":"Testing strategy","url":"/topics/testing-quality/notes/01-testing-strategy","keys":["testing-quality/notes/01-testing-strategy"],"minutes":10,"topic":"testing-quality"}]},{"title":"Web and UI automation","hint":"","items":[{"label":"Frontend and E2E testing","url":"/topics/testing-quality/notes/02-frontend-and-e2e-testing","keys":["testing-quality/notes/02-frontend-and-e2e-testing"],"minutes":5,"topic":"testing-quality"},{"label":"JavaScript","url":"/topics/javascript/notes/01-javascript","keys":["javascript/notes/01-javascript"],"minutes":12,"topic":"javascript"}]},{"title":"API, contract and performance","hint":"","items":[{"label":"API, performance and CI automation","url":"/topics/testing-quality/notes/04-api-performance-and-test-automation-in-ci","keys":["testing-quality/notes/04-api-performance-and-test-automation-in-ci"],"minutes":10,"topic":"testing-quality"},{"label":"API design","url":"/topics/api-design/deep/theory","keys":["api-design/deep/theory"],"minutes":6,"topic":"api-design"}]},{"title":"Delivery","hint":"","items":[{"label":"Git","url":"/topics/git-collaboration/notes/01-git","keys":["git-collaboration/notes/01-git"],"minutes":5,"topic":"git-collaboration"},{"label":"CI/CD","url":"/topics/devops-cloud/notes/06-cicd","keys":["devops-cloud/notes/06-cicd"],"minutes":15,"topic":"devops-cloud"},{"label":"Docker","url":"/topics/devops-cloud/notes/03-docker","keys":["devops-cloud/notes/03-docker"],"minutes":10,"topic":"devops-cloud"}]},{"title":"Security testing","hint":"","items":[{"label":"OWASP Top 10","url":"/topics/security/notes/01-owasp-top-10-2025","keys":["security/notes/01-owasp-top-10-2025"],"minutes":12,"topic":"security"},{"label":"DAST and API security","url":"/topics/devsecops/notes/01-shift-left-security-in-ci-cd#6-dast-and-api-security-testing","keys":["devsecops/notes/01-shift-left-security-in-ci-cd"],"minutes":9,"topic":"devsecops"}]}],"topics":["testing-quality","javascript","api-design","git-collaboration","devops-cloud","security","devsecops"],"minutes":101},{"slug":"software-architect","title":"Software Architect","emoji":"🏛️","accent":"#7C2D12","blurb":"Quality attributes, styles, decisions, distributed systems, evolution and technical leadership.","order":17,"source":"https://roadmap.sh/software-architect","stages":[{"title":"Foundations","hint":"","items":[{"label":"OOP, SOLID and design patterns","url":"/topics/low-level-design/notes/01-oop-solid-and-design-patterns","keys":["low-level-design/notes/01-oop-solid-and-design-patterns"],"minutes":12,"topic":"low-level-design"},{"label":"Clean code and refactoring","url":"/topics/software-engineering/notes/01-clean-code-and-refactoring","keys":["software-engineering/notes/01-clean-code-and-refactoring"],"minutes":9,"topic":"software-engineering"}]},{"title":"Architecture fundamentals","hint":"","items":[{"label":"Quality attributes, styles and decisions","url":"/topics/software-architecture/notes/01-quality-attributes-styles-and-decisions","keys":["software-architecture/notes/01-quality-attributes-styles-and-decisions"],"minutes":9,"topic":"software-architecture"},{"label":"Monoliths, microservices and boundaries","url":"/topics/system-design/notes/02-monolith-microservices-and-boundaries","keys":["system-design/notes/02-monolith-microservices-and-boundaries"],"minutes":10,"topic":"system-design"}]},{"title":"Distributed systems","hint":"","items":[{"label":"System design fundamentals","url":"/topics/system-design/notes/01-system-design-fundamentals","keys":["system-design/notes/01-system-design-fundamentals"],"minutes":8,"topic":"system-design"},{"label":"Distributed systems and consistency","url":"/topics/system-design/notes/03-distributed-systems-and-consistency","keys":["system-design/notes/03-distributed-systems-and-consistency"],"minutes":8,"topic":"system-design"},{"label":"Event-driven architecture","url":"/topics/system-design/notes/04-event-driven-and-messaging","keys":["system-design/notes/04-event-driven-and-messaging"],"minutes":10,"topic":"system-design"}]},{"title":"APIs, data and security","hint":"","items":[{"label":"API design","url":"/topics/api-design/deep/theory","keys":["api-design/deep/theory"],"minutes":6,"topic":"api-design"},{"label":"Databases at scale","url":"/topics/database/notes/04-scaling-nosql-and-caching","keys":["database/notes/04-scaling-nosql-and-caching"],"minutes":9,"topic":"database"},{"label":"Security","url":"/topics/security/notes/01-owasp-top-10-2025","keys":["security/notes/01-owasp-top-10-2025"],"minutes":12,"topic":"security"}]},{"title":"Cloud and operations","hint":"","items":[{"label":"Kubernetes","url":"/topics/devops-cloud/notes/04-kubernetes","keys":["devops-cloud/notes/04-kubernetes"],"minutes":21,"topic":"devops-cloud"},{"label":"Observability","url":"/topics/devops-cloud/notes/09-observability","keys":["devops-cloud/notes/09-observability"],"minutes":11,"topic":"devops-cloud"}]},{"title":"Evolution and leadership","hint":"","items":[{"label":"Evolutionary architecture and the architect role","url":"/topics/software-architecture/notes/02-evolutionary-architecture-and-the-architect-role","keys":["software-architecture/notes/02-evolutionary-architecture-and-the-architect-role"],"minutes":8,"topic":"software-architecture"},{"label":"Technical communication","url":"/topics/behavioral/notes/01-behavioral-and-technical-communication","keys":["behavioral/notes/01-behavioral-and-technical-communication"],"minutes":4,"topic":"behavioral"}]}],"topics":["low-level-design","software-engineering","software-architecture","system-design","api-design","database","security","devops-cloud","behavioral"],"minutes":137},{"slug":"ux-design","title":"UX Design","emoji":"🧭","accent":"#C026D3","blurb":"Research users, define problems, design interactions, prototype, test and scale with design systems.","order":18,"source":"https://roadmap.sh/ux-design","stages":[{"title":"Human-centred design and research","hint":"","items":[{"label":"User research and human-centred design","url":"/topics/ux-design/notes/01-user-research-and-human-centred-design","keys":["ux-design/notes/01-user-research-and-human-centred-design"],"minutes":7,"topic":"ux-design"}]},{"title":"Interaction design and prototyping","hint":"","items":[{"label":"IA, interaction design, prototyping and testing","url":"/topics/ux-design/notes/02-interaction-design-prototyping-and-usability-testing","keys":["ux-design/notes/02-interaction-design-prototyping-and-usability-testing"],"minutes":9,"topic":"ux-design"}]},{"title":"UI essentials and accessibility","hint":"","items":[{"label":"UI/UX essentials for engineers","url":"/topics/ui-ux/notes/01-ui-ux-essentials-for-engineers","keys":["ui-ux/notes/01-ui-ux-essentials-for-engineers"],"minutes":3,"topic":"ui-ux"},{"label":"Semantic HTML, forms and accessibility","url":"/topics/frontend/notes/03-semantic-html-and-forms","keys":["frontend/notes/03-semantic-html-and-forms"],"minutes":10,"topic":"frontend"}]},{"title":"Measuring experience","hint":"","items":[{"label":"Statistics and A/B tests","url":"/topics/data-analysis/notes/02-statistics-for-analysts","keys":["data-analysis/notes/02-statistics-for-analysts"],"minutes":4,"topic":"data-analysis"},{"label":"Product analytics","url":"/topics/product-management/notes/02-product-delivery-metrics-and-stakeholders#3-product-analytics","keys":["product-management/notes/02-product-delivery-metrics-and-stakeholders"],"minutes":8,"topic":"product-management"}]},{"title":"Working with product and engineering","hint":"","items":[{"label":"Product discovery","url":"/topics/product-management/notes/01-product-discovery-and-strategy","keys":["product-management/notes/01-product-discovery-and-strategy"],"minutes":7,"topic":"product-management"},{"label":"Modern CSS and design tokens","url":"/topics/frontend/notes/04-modern-css-layout-and-architecture","keys":["frontend/notes/04-modern-css-layout-and-architecture"],"minutes":9,"topic":"frontend"}]}],"topics":["ux-design","ui-ux","frontend","data-analysis","product-management"],"minutes":57},{"slug":"product-manager","title":"Product Manager","emoji":"🎯","accent":"#CA8A04","blurb":"Strategy, discovery, prioritisation, delivery, analytics and leading through influence.","order":19,"source":"https://roadmap.sh/product-manager","stages":[{"title":"Strategy and outcomes","hint":"","items":[{"label":"Product discovery and strategy","url":"/topics/product-management/notes/01-product-discovery-and-strategy","keys":["product-management/notes/01-product-discovery-and-strategy"],"minutes":7,"topic":"product-management"}]},{"title":"Understanding users","hint":"","items":[{"label":"User research","url":"/topics/ux-design/notes/01-user-research-and-human-centred-design","keys":["ux-design/notes/01-user-research-and-human-centred-design"],"minutes":7,"topic":"ux-design"},{"label":"Usability testing","url":"/topics/ux-design/notes/02-interaction-design-prototyping-and-usability-testing#4-usability-testing","keys":["ux-design/notes/02-interaction-design-prototyping-and-usability-testing"],"minutes":9,"topic":"ux-design"}]},{"title":"Delivery and analytics","hint":"","items":[{"label":"Delivery, metrics, roadmaps and stakeholders","url":"/topics/product-management/notes/02-product-delivery-metrics-and-stakeholders","keys":["product-management/notes/02-product-delivery-metrics-and-stakeholders"],"minutes":8,"topic":"product-management"},{"label":"Statistics and A/B tests","url":"/topics/data-analysis/notes/02-statistics-for-analysts","keys":["data-analysis/notes/02-statistics-for-analysts"],"minutes":4,"topic":"data-analysis"},{"label":"SQL for PMs","url":"/topics/database/notes/01-sql-and-data-modelling","keys":["database/notes/01-sql-and-data-modelling"],"minutes":12,"topic":"database"}]},{"title":"Technical fluency","hint":"","items":[{"label":"System design fundamentals","url":"/topics/system-design/notes/01-system-design-fundamentals","keys":["system-design/notes/01-system-design-fundamentals"],"minutes":8,"topic":"system-design"},{"label":"API design","url":"/topics/api-design/deep/theory","keys":["api-design/deep/theory"],"minutes":6,"topic":"api-design"}]},{"title":"Leadership","hint":"","items":[{"label":"Communication","url":"/topics/behavioral/notes/01-behavioral-and-technical-communication","keys":["behavioral/notes/01-behavioral-and-technical-communication"],"minutes":4,"topic":"behavioral"},{"label":"Working with engineering","url":"/topics/engineering-management/notes/02-execution-delivery-metrics-and-organisation","keys":["engineering-management/notes/02-execution-delivery-metrics-and-organisation"],"minutes":8,"topic":"engineering-management"}]}],"topics":["product-management","ux-design","data-analysis","database","system-design","api-design","behavioral","engineering-management"],"minutes":73},{"slug":"engineering-manager","title":"Engineering Manager","emoji":"🧑‍💼","accent":"#4D7C0F","blurb":"Lead people, deliver reliably, measure what matters and design the organisation.","order":20,"source":"https://roadmap.sh/engineering-manager","stages":[{"title":"People leadership","hint":"","items":[{"label":"1:1s, feedback, growth and hiring","url":"/topics/engineering-management/notes/01-leading-people-one-on-ones-feedback-and-growth","keys":["engineering-management/notes/01-leading-people-one-on-ones-feedback-and-growth"],"minutes":9,"topic":"engineering-management"},{"label":"Communication","url":"/topics/behavioral/notes/01-behavioral-and-technical-communication","keys":["behavioral/notes/01-behavioral-and-technical-communication"],"minutes":4,"topic":"behavioral"}]},{"title":"Execution and delivery","hint":"","items":[{"label":"Planning, DORA, incidents and org design","url":"/topics/engineering-management/notes/02-execution-delivery-metrics-and-organisation","keys":["engineering-management/notes/02-execution-delivery-metrics-and-organisation"],"minutes":8,"topic":"engineering-management"},{"label":"CI/CD","url":"/topics/devops-cloud/notes/06-cicd","keys":["devops-cloud/notes/06-cicd"],"minutes":15,"topic":"devops-cloud"},{"label":"Testing strategy","url":"/topics/testing-quality/notes/01-testing-strategy","keys":["testing-quality/notes/01-testing-strategy"],"minutes":10,"topic":"testing-quality"}]},{"title":"Technical leadership","hint":"","items":[{"label":"Architecture decisions","url":"/topics/software-architecture/notes/01-quality-attributes-styles-and-decisions","keys":["software-architecture/notes/01-quality-attributes-styles-and-decisions"],"minutes":9,"topic":"software-architecture"},{"label":"Evolutionary architecture","url":"/topics/software-architecture/notes/02-evolutionary-architecture-and-the-architect-role","keys":["software-architecture/notes/02-evolutionary-architecture-and-the-architect-role"],"minutes":8,"topic":"software-architecture"},{"label":"Observability and incidents","url":"/topics/devops-cloud/notes/09-observability","keys":["devops-cloud/notes/09-observability"],"minutes":11,"topic":"devops-cloud"}]},{"title":"Product partnership","hint":"","items":[{"label":"Product discovery","url":"/topics/product-management/notes/01-product-discovery-and-strategy","keys":["product-management/notes/01-product-discovery-and-strategy"],"minutes":7,"topic":"product-management"},{"label":"Roadmaps and stakeholders","url":"/topics/product-management/notes/02-product-delivery-metrics-and-stakeholders","keys":["product-management/notes/02-product-delivery-metrics-and-stakeholders"],"minutes":8,"topic":"product-management"}]}],"topics":["engineering-management","behavioral","devops-cloud","testing-quality","software-architecture","product-management"],"minutes":89},{"slug":"android","title":"Android","emoji":"🤖","accent":"#3DDC84","blurb":"Kotlin and Compose to offline-first architecture, background work, testing, performance and Play releases.","order":21,"source":"https://roadmap.sh/android","stages":[{"title":"Kotlin and fundamentals","hint":"","items":[{"label":"Kotlin and Android fundamentals","url":"/topics/android/notes/01-kotlin-and-android-fundamentals","keys":["android/notes/01-kotlin-and-android-fundamentals"],"minutes":10,"topic":"android"},{"label":"Git","url":"/topics/git-collaboration/notes/01-git","keys":["git-collaboration/notes/01-git"],"minutes":5,"topic":"git-collaboration"}]},{"title":"Architecture and data","hint":"","items":[{"label":"MVVM, Room, Retrofit, Hilt, WorkManager","url":"/topics/android/notes/02-app-architecture-data-and-background-work","keys":["android/notes/02-app-architecture-data-and-background-work"],"minutes":10,"topic":"android"},{"label":"API design","url":"/topics/api-design/deep/theory","keys":["api-design/deep/theory"],"minutes":6,"topic":"api-design"},{"label":"Webhooks and async APIs","url":"/topics/api-design/notes/03-webhooks-and-asynchronous-apis","keys":["api-design/notes/03-webhooks-and-asynchronous-apis"],"minutes":8,"topic":"api-design"}]},{"title":"UI and UX","hint":"","items":[{"label":"UI/UX essentials","url":"/topics/ui-ux/notes/01-ui-ux-essentials-for-engineers","keys":["ui-ux/notes/01-ui-ux-essentials-for-engineers"],"minutes":3,"topic":"ui-ux"},{"label":"Usability testing","url":"/topics/ux-design/notes/02-interaction-design-prototyping-and-usability-testing","keys":["ux-design/notes/02-interaction-design-prototyping-and-usability-testing"],"minutes":9,"topic":"ux-design"}]},{"title":"Quality and release","hint":"","items":[{"label":"Testing, performance, security and publishing","url":"/topics/android/notes/03-testing-performance-security-and-publishing","keys":["android/notes/03-testing-performance-security-and-publishing"],"minutes":9,"topic":"android"},{"label":"CI/CD","url":"/topics/devops-cloud/notes/06-cicd","keys":["devops-cloud/notes/06-cicd"],"minutes":15,"topic":"devops-cloud"},{"label":"Authentication","url":"/topics/security/notes/02-authentication-and-authorization","keys":["security/notes/02-authentication-and-authorization"],"minutes":10,"topic":"security"}]}],"topics":["android","git-collaboration","api-design","ui-ux","ux-design","devops-cloud","security"],"minutes":85},{"slug":"game-developer","title":"Game Developer","emoji":"🎮","accent":"#9333EA","blurb":"Engines, math, rendering, physics, AI, design and performance for shipping games.","order":22,"source":"https://roadmap.sh/game-developer","stages":[{"title":"Programming foundations","hint":"","items":[{"label":"C++","url":"/topics/c-cpp/notes/02-cpp","keys":["c-cpp/notes/02-cpp"],"minutes":11,"topic":"c-cpp"},{"label":"Data structures and algorithms","url":"/topics/dsa","keys":["dsa/notes/01-complexity-and-core-structures","dsa/notes/02-patterns-and-problem-solving","dsa/notes/03-graphs-trees-and-dp","dsa/notes/04-advanced-algorithms","dsa/notes/05-coding-interview-playbook","dsa/deep/theory","dsa/deep/best-practices","dsa/interview/medium"],"minutes":72,"topic":"dsa"}]},{"title":"Engine and math","hint":"","items":[{"label":"Game loop, math and rendering","url":"/topics/game-development/notes/01-game-loop-math-and-rendering","keys":["game-development/notes/01-game-loop-math-and-rendering"],"minutes":9,"topic":"game-development"},{"label":"Linear algebra","url":"/topics/data-science/notes/01-math-foundations-for-data-science#1-linear-algebra-data-is-matrices","keys":["data-science/notes/01-math-foundations-for-data-science"],"minutes":7,"topic":"data-science"}]},{"title":"Gameplay","hint":"","items":[{"label":"Physics, AI, design and optimisation","url":"/topics/game-development/notes/02-gameplay-systems-physics-ai-and-optimisation","keys":["game-development/notes/02-gameplay-systems-physics-ai-and-optimisation"],"minutes":10,"topic":"game-development"},{"label":"Design patterns","url":"/topics/low-level-design/notes/01-oop-solid-and-design-patterns","keys":["low-level-design/notes/01-oop-solid-and-design-patterns"],"minutes":12,"topic":"low-level-design"}]},{"title":"Multiplayer","hint":"","items":[{"label":"Multiplayer networking models","url":"/topics/game-server/notes/01-multiplayer-networking-models","keys":["game-server/notes/01-multiplayer-networking-models"],"minutes":8,"topic":"game-server"}]}],"topics":["c-cpp","dsa","game-development","data-science","low-level-design","game-server"],"minutes":129},{"slug":"server-side-game-developer","title":"Server Side Game Developer","emoji":"🕹️","accent":"#6D28D9","blurb":"Netcode, authoritative servers, matchmaking, fleets, economies and scaling for launch day.","order":23,"source":"https://roadmap.sh/server-side-game-developer","stages":[{"title":"Foundations","hint":"","items":[{"label":"Networking","url":"/topics/devops-cloud/notes/02-networking","keys":["devops-cloud/notes/02-networking"],"minutes":8,"topic":"devops-cloud"},{"label":"Linux","url":"/topics/devops-cloud/notes/01-linux","keys":["devops-cloud/notes/01-linux"],"minutes":10,"topic":"devops-cloud"},{"label":"C++","url":"/topics/c-cpp/notes/02-cpp","keys":["c-cpp/notes/02-cpp"],"minutes":11,"topic":"c-cpp"}]},{"title":"Netcode","hint":"","items":[{"label":"Authoritative servers, prediction, lag compensation","url":"/topics/game-server/notes/01-multiplayer-networking-models","keys":["game-server/notes/01-multiplayer-networking-models"],"minutes":8,"topic":"game-server"}]},{"title":"Backend services","hint":"","items":[{"label":"Matchmaking, fleets, economy, scaling","url":"/topics/game-server/notes/02-game-backend-services-and-scaling","keys":["game-server/notes/02-game-backend-services-and-scaling"],"minutes":10,"topic":"game-server"},{"label":"Databases and caching","url":"/topics/database/notes/04-scaling-nosql-and-caching","keys":["database/notes/04-scaling-nosql-and-caching"],"minutes":9,"topic":"database"},{"label":"Messaging and events","url":"/topics/system-design/notes/04-event-driven-and-messaging","keys":["system-design/notes/04-event-driven-and-messaging"],"minutes":10,"topic":"system-design"}]},{"title":"Operations","hint":"","items":[{"label":"Docker","url":"/topics/devops-cloud/notes/03-docker","keys":["devops-cloud/notes/03-docker"],"minutes":10,"topic":"devops-cloud"},{"label":"Kubernetes","url":"/topics/devops-cloud/notes/04-kubernetes","keys":["devops-cloud/notes/04-kubernetes"],"minutes":21,"topic":"devops-cloud"},{"label":"Observability","url":"/topics/devops-cloud/notes/09-observability","keys":["devops-cloud/notes/09-observability"],"minutes":11,"topic":"devops-cloud"}]}],"topics":["devops-cloud","c-cpp","game-server","database","system-design"],"minutes":108},{"slug":"seo","title":"SEO","emoji":"🔎","accent":"#16A34A","blurb":"Technical foundations, content and intent, local SEO, links, AI search and measurement.","order":24,"source":"https://roadmap.sh/seo","stages":[{"title":"Web foundations","hint":"","items":[{"label":"How the internet and HTTP work","url":"/topics/backend/notes/03-how-the-internet-and-http-work","keys":["backend/notes/03-how-the-internet-and-http-work"],"minutes":11,"topic":"backend"},{"label":"Semantic HTML","url":"/topics/frontend/notes/03-semantic-html-and-forms","keys":["frontend/notes/03-semantic-html-and-forms"],"minutes":10,"topic":"frontend"}]},{"title":"Technical SEO","hint":"","items":[{"label":"Crawling, indexing, rendering and performance","url":"/topics/seo/notes/01-technical-seo","keys":["seo/notes/01-technical-seo"],"minutes":10,"topic":"seo"},{"label":"Web performance and Core Web Vitals","url":"/topics/frontend/notes/06-web-performance-and-pwas","keys":["frontend/notes/06-web-performance-and-pwas"],"minutes":9,"topic":"frontend"},{"label":"Next.js rendering","url":"/topics/nextjs/notes/01-nextjs-essentials","keys":["nextjs/notes/01-nextjs-essentials"],"minutes":6,"topic":"nextjs"}]},{"title":"Content and authority","hint":"","items":[{"label":"Content, on-page, local, links and AI search","url":"/topics/seo/notes/02-content-on-page-local-seo-and-measurement","keys":["seo/notes/02-content-on-page-local-seo-and-measurement"],"minutes":10,"topic":"seo"}]},{"title":"Measurement","hint":"","items":[{"label":"Analytics and storytelling","url":"/topics/data-analysis/notes/03-python-for-analysis-visualisation-and-storytelling","keys":["data-analysis/notes/03-python-for-analysis-visualisation-and-storytelling"],"minutes":7,"topic":"data-analysis"},{"label":"A/B testing","url":"/topics/data-analysis/notes/02-statistics-for-analysts","keys":["data-analysis/notes/02-statistics-for-analysts"],"minutes":4,"topic":"data-analysis"}]}],"topics":["backend","frontend","seo","nextjs","data-analysis"],"minutes":67}],"paths":[{"slug":"interview-crash-course","title":"Interview crash course","emoji":"🚨","accent":"#DC2626","blurb":"One week to interview day: programming screens, DSA patterns, system design playbook and behavioral stories.","estimatedHours":10,"order":1,"steps":[{"type":"guide","ref":"interview-mcq/notes/01-programming","label":"📘 Programming — MCQ Test Preparation Guide","url":"/topics/interview-mcq/notes/01-programming","topic":"interview-mcq","minutes":29,"keys":["interview-mcq/notes/01-programming"]},{"type":"guide","ref":"dsa/notes/05-coding-interview-playbook","label":"Coding Interview Playbook","url":"/topics/dsa/notes/05-coding-interview-playbook","topic":"dsa","minutes":4,"keys":["dsa/notes/05-coding-interview-playbook"]},{"type":"guide","ref":"system-design/notes/05-system-design-interview-playbook","label":"System Design Interview Playbook","url":"/topics/system-design/notes/05-system-design-interview-playbook","topic":"system-design","minutes":6,"keys":["system-design/notes/05-system-design-interview-playbook"]},{"type":"guide","ref":"behavioral/notes/01-behavioral-and-technical-communication","label":"Behavioral Interviews & Technical Communication","url":"/topics/behavioral/notes/01-behavioral-and-technical-communication","topic":"behavioral","minutes":4,"keys":["behavioral/notes/01-behavioral-and-technical-communication"]},{"type":"practice","ref":"dsa/two-sum","label":"Two sum","url":"/practice/dsa/two-sum","topic":"dsa","minutes":10,"keys":[]},{"type":"quiz","ref":"interview-mcq","label":"MCQ Test Prep quiz","url":"/topics/interview-mcq#quiz","topic":"interview-mcq","minutes":10,"keys":[]},{"type":"flashcards","ref":"dsa","label":"DSA flashcards","url":"/flashcards?topic=dsa","topic":"dsa","minutes":15,"keys":[]},{"type":"interview","ref":"backend/interview/medium","label":"Interview: Medium","url":"/topics/backend/interview/medium","topic":"backend","minutes":2,"keys":["backend/interview/medium"]}],"minutes":80,"topics":["interview-mcq","dsa","system-design","behavioral","backend"]},{"slug":"dsa-foundations","title":"DSA foundations","emoji":"🧩","accent":"#B45309","blurb":"Complexity, core structures, patterns, graphs and DP — then prove it with code.","estimatedHours":16,"order":2,"steps":[{"type":"guide","ref":"dsa/notes/01-complexity-and-core-structures","label":"Complexity & Core Data Structures","url":"/topics/dsa/notes/01-complexity-and-core-structures","topic":"dsa","minutes":13,"keys":["dsa/notes/01-complexity-and-core-structures"]},{"type":"guide","ref":"dsa/notes/02-patterns-and-problem-solving","label":"Problem-Solving Patterns — The 12 That Cover Most Interviews","url":"/topics/dsa/notes/02-patterns-and-problem-solving","topic":"dsa","minutes":13,"keys":["dsa/notes/02-patterns-and-problem-solving"]},{"type":"practice","ref":"dsa/two-sum","label":"Two sum","url":"/practice/dsa/two-sum","topic":"dsa","minutes":10,"keys":[]},{"type":"guide","ref":"dsa/notes/03-graphs-trees-and-dp","label":"Graphs, Trees & Dynamic Programming","url":"/topics/dsa/notes/03-graphs-trees-and-dp","topic":"dsa","minutes":14,"keys":["dsa/notes/03-graphs-trees-and-dp"]},{"type":"practice","ref":"dsa/valid-parentheses","label":"Valid parentheses","url":"/practice/dsa/valid-parentheses","topic":"dsa","minutes":15,"keys":[]},{"type":"guide","ref":"dsa/notes/04-advanced-algorithms","label":"Advanced Algorithms & Patterns","url":"/topics/dsa/notes/04-advanced-algorithms","topic":"dsa","minutes":10,"keys":["dsa/notes/04-advanced-algorithms"]},{"type":"practice","ref":"dsa/merge-intervals","label":"Merge overlapping intervals","url":"/practice/dsa/merge-intervals","topic":"dsa","minutes":25,"keys":[]},{"type":"quiz","ref":"dsa","label":"DSA quiz","url":"/topics/dsa#quiz","topic":"dsa","minutes":10,"keys":[]},{"type":"flashcards","ref":"dsa","label":"DSA flashcards","url":"/flashcards?topic=dsa","topic":"dsa","minutes":15,"keys":[]},{"type":"interview","ref":"dsa/interview/medium","label":"Interview: Medium","url":"/topics/dsa/interview/medium","topic":"dsa","minutes":3,"keys":["dsa/interview/medium"]}],"minutes":128,"topics":["dsa"]},{"slug":"frontend-engineer","title":"Frontend engineer","emoji":"⚛️","accent":"#0891B2","blurb":"Web platform to React: ship UI with real understanding of the runtime underneath.","estimatedHours":14,"order":3,"steps":[{"type":"guide","ref":"frontend/notes/01-web-platform-fundamentals","label":"Web Platform Fundamentals — Browser, HTTP, CSS, Accessibility","url":"/topics/frontend/notes/01-web-platform-fundamentals","topic":"frontend","minutes":8,"keys":["frontend/notes/01-web-platform-fundamentals"]},{"type":"guide","ref":"javascript/notes/01-javascript","label":"JavaScript — Deep Dive & Interview Reference (2026)","url":"/topics/javascript/notes/01-javascript","topic":"javascript","minutes":12,"keys":["javascript/notes/01-javascript"]},{"type":"guide","ref":"react/notes/01-react-core","label":"React Core — Hooks, Rendering, and the 2026 Mental Model","url":"/topics/react/notes/01-react-core","topic":"react","minutes":12,"keys":["react/notes/01-react-core"]},{"type":"practice","ref":"frontend/cx","label":"Join class names","url":"/practice/frontend/cx","topic":"frontend","minutes":10,"keys":[]},{"type":"guide","ref":"react/notes/02-react-performance-and-patterns","label":"React Performance & Component Patterns","url":"/topics/react/notes/02-react-performance-and-patterns","topic":"react","minutes":10,"keys":["react/notes/02-react-performance-and-patterns"]},{"type":"practice","ref":"javascript/flatten-object","label":"Flatten a nested object","url":"/practice/javascript/flatten-object","topic":"javascript","minutes":20,"keys":[]},{"type":"quiz","ref":"react","label":"React quiz","url":"/topics/react#quiz","topic":"react","minutes":10,"keys":[]},{"type":"flashcards","ref":"javascript","label":"JavaScript & TypeScript flashcards","url":"/flashcards?topic=javascript","topic":"javascript","minutes":15,"keys":[]}],"minutes":97,"topics":["frontend","javascript","react"]},{"slug":"backend-engineer","title":"Backend engineer","emoji":"🖥️","accent":"#0284C7","blurb":"APIs, databases and the backend patterns production systems are built on.","estimatedHours":15,"order":4,"steps":[{"type":"guide","ref":"backend/notes/01-backend-architecture-patterns","label":"7 Backend Architecture Patterns — Deep Dive Guide","url":"/topics/backend/notes/01-backend-architecture-patterns","topic":"backend","minutes":15,"keys":["backend/notes/01-backend-architecture-patterns"]},{"type":"guide","ref":"backend/notes/03-how-the-internet-and-http-work","label":"How the Internet and HTTP Actually Work","url":"/topics/backend/notes/03-how-the-internet-and-http-work","topic":"backend","minutes":11,"keys":["backend/notes/03-how-the-internet-and-http-work"]},{"type":"guide","ref":"database/notes/01-sql-and-data-modelling","label":"SQL & Data Modelling","url":"/topics/database/notes/01-sql-and-data-modelling","topic":"database","minutes":12,"keys":["database/notes/01-sql-and-data-modelling"]},{"type":"guide","ref":"database/notes/02-indexing-and-query-performance","label":"Indexing & Query Performance","url":"/topics/database/notes/02-indexing-and-query-performance","topic":"database","minutes":11,"keys":["database/notes/02-indexing-and-query-performance"]},{"type":"practice","ref":"database/orders-per-customer","label":"Orders per customer","url":"/practice/database/orders-per-customer","topic":"database","minutes":15,"keys":[]},{"type":"practice","ref":"python/chunk","label":"Chunk a list","url":"/practice/python/chunk","topic":"python","minutes":10,"keys":[]},{"type":"quiz","ref":"backend","label":"Backend quiz","url":"/topics/backend#quiz","topic":"backend","minutes":10,"keys":[]},{"type":"interview","ref":"backend/interview/medium","label":"Interview: Medium","url":"/topics/backend/interview/medium","topic":"backend","minutes":2,"keys":["backend/interview/medium"]},{"type":"flashcards","ref":"database","label":"Database flashcards","url":"/flashcards?topic=database","topic":"database","minutes":15,"keys":[]}],"minutes":101,"topics":["backend","database","python"]},{"slug":"system-design-interview","title":"System design interview","emoji":"🏛️","accent":"#9333EA","blurb":"From load balancers to consistency models: the full system design interview loop.","estimatedHours":12,"order":5,"steps":[{"type":"guide","ref":"system-design/notes/01-system-design-fundamentals","label":"System Design Fundamentals","url":"/topics/system-design/notes/01-system-design-fundamentals","topic":"system-design","minutes":8,"keys":["system-design/notes/01-system-design-fundamentals"]},{"type":"guide","ref":"system-design/notes/02-monolith-microservices-and-boundaries","label":"Monolith, Modular Monolith & Microservices — Choosing Boundaries","url":"/topics/system-design/notes/02-monolith-microservices-and-boundaries","topic":"system-design","minutes":10,"keys":["system-design/notes/02-monolith-microservices-and-boundaries"]},{"type":"guide","ref":"system-design/notes/03-distributed-systems-and-consistency","label":"Distributed Systems & Consistency","url":"/topics/system-design/notes/03-distributed-systems-and-consistency","topic":"system-design","minutes":8,"keys":["system-design/notes/03-distributed-systems-and-consistency"]},{"type":"guide","ref":"system-design/notes/04-event-driven-and-messaging","label":"Event-Driven Architecture & Messaging","url":"/topics/system-design/notes/04-event-driven-and-messaging","topic":"system-design","minutes":10,"keys":["system-design/notes/04-event-driven-and-messaging"]},{"type":"guide","ref":"database/notes/04-scaling-nosql-and-caching","label":"Scaling, Replication, Sharding, NoSQL & Caching","url":"/topics/database/notes/04-scaling-nosql-and-caching","topic":"database","minutes":9,"keys":["database/notes/04-scaling-nosql-and-caching"]},{"type":"practice","ref":"system-design/sd-p1","label":"URL Shortener Sketch","url":"/practice/system-design/sd-p1","topic":"system-design","minutes":10,"keys":[]},{"type":"quiz","ref":"system-design","label":"System Design quiz","url":"/topics/system-design#quiz","topic":"system-design","minutes":10,"keys":[]},{"type":"flashcards","ref":"system-design","label":"System Design flashcards","url":"/flashcards?topic=system-design","topic":"system-design","minutes":15,"keys":[]},{"type":"interview","ref":"system-design/interview/medium","label":"Interview: Medium","url":"/topics/system-design/interview/medium","topic":"system-design","minutes":4,"keys":["system-design/interview/medium"]}],"minutes":84,"topics":["system-design","database"]}],"prepMap":{"key":"prep-map","title":"Topic-wise Prep Map","url":"/prep-map","minutes":57}}