Skip to main content

179 docs tagged with "beginners"

View all tags

Advanced Commands

git stash, git cherry-pick, git bisect for bug hunting, git blame, and git shortlog.

Advanced Types

Conditional types, mapped types, template literal types, the infer keyword, and recursive types with real-world use cases.

Architecture & Best Practices

Organising CSS for maintainability -- BEM naming, file structure, CSS resets vs normalisers, utility classes, component-scoped styles, and preprocessor overview.

Arrays

Learn JavaScript arrays -- creating, accessing, mutating, iterating with map/filter/reduce, destructuring, and the spread operator.

Authentication & Permissions

The Users & Permissions plugin, JWT authentication, user registration, roles, API tokens, and controlling access to your Strapi API.

Backgrounds, Borders & Shadows

CSS background images, gradients, background shorthand, border-radius for rounded corners, box-shadow, text-shadow, and multiple backgrounds.

Basic Types

TypeScript's primitive types, type inference, type annotations, arrays, tuples, and the any, unknown, never, and void types.

Basic Workflow

git add, git commit, git status, git log, git diff, and writing good commit messages with Conventional Commits.

Branches

What branches are, creating and switching between them, deleting branches, HEAD and detached HEAD state, and when to branch.

Build a Simple Blog Page

A super-beginner, start-to-finish tutorial for building a simple blog page using only HTML, CSS, and vanilla JavaScript -- with an optional section on adding Vite later.

Building a REST API

Build a REST API with Java's built-in HttpServer -- HTTP basics, request handling, JSON serialization, routing, and exposing the task manager over HTTP.

Building a Web Application

Build a complete Notes application with registration, login, CRUD operations, routing, templates, and database integration using concepts from the entire guide.

Building Pages

Using Core Components, the responsive grid, navigation, header and footer, building a homepage and article page, and page properties.

Classes

TypeScript class syntax, access modifiers, readonly, constructors, inheritance, abstract classes, and implementing interfaces.

Classes & Objects

Learn Java OOP basics -- classes, objects, constructors, access modifiers, encapsulation, toString, equals/hashCode, static members, and records.

Client Libraries

CSS and JS management in AEM -- clientlib structure, categories, dependencies, embedding, proxy serving, and the ui.frontend module.

Collections

Learn Java collections -- ArrayList, HashMap, HashSet, iterating, generics, immutable collections, and choosing the right collection.

Collections

Vec for dynamic arrays, String for owned UTF-8 text, and HashMap for key-value storage -- creating, accessing, iterating, and common patterns.

Colors & Typography

CSS colour formats (named, hex, rgb, hsl), opacity, font properties, text styling, web-safe fonts, and loading Google Fonts.

Component Dialogs

Touch UI dialogs with Granite/Coral -- field types, tabs, multifields, image upload, validation, and conditional visibility.

Composer & Packages

Dependency management with Composer, installing packages, PSR-4 autoloading, semantic versioning, and security best practices.

Concurrency

Spawning threads, move closures for threads, message passing with channels (mpsc), shared state with Arc and Mutex, the Send and Sync traits, and an introduction to async/await with tokio.

Configuration & Deployment

Environment-based configuration, PostgreSQL setup, deploying Strapi to a VPS with PM2, nginx reverse proxy, HTTPS, and security hardening.

Content Fragments & GraphQL

Content Fragment Models, creating and managing fragments, the AEM GraphQL API, persisted queries, and headless content delivery.

Content Modeling

Defining collection types, single types, field types, components, and dynamic zones in Strapi 5.

Control Flow

Learn Java control flow -- if/else, switch expressions, for/while/do-while loops, enhanced for-each, break, continue, and common patterns.

Control Flow

Learn how to make decisions and repeat actions in JavaScript with if/else, switch, ternary operators, and loops.

Control Flow

Making decisions with if/else/elseif, switch and match, looping with while, do-while, for and foreach, and combining control structures in real programs.

Control Flow

if/else as expressions, loop, while, for with ranges and iterators, break and continue with labels, early introduction to match, and returning values from blocks.

CSS Custom Properties

CSS custom properties (variables) -- defining, using, scoping, fallback values, theming, building a dark mode toggle, and dynamic updates with JavaScript.

CSS Grid

CSS Grid layout -- defining rows and columns, the fr unit, grid areas, gap, auto-fit/auto-fill, minmax(), and implicit vs explicit grids.

Custom Controllers & Services

Extending Strapi's default CRUD controllers, creating custom actions, delegating business logic to services, and sanitizing output.

Debugging & Common Pitfalls

Using browser DevTools to debug CSS, understanding margin collapse, overflow issues, centring gotchas, z-index problems, and cross-browser testing.

Deploy to a VPS with nginx

Building for release, cross-compilation, creating a systemd service, setting up nginx as a reverse proxy, HTTPS with Let's Encrypt, Docker multi-stage builds, and CI/CD with GitHub Actions.

Deploying to a VPS with Nginx

Deploy your Java REST API to a VPS -- installing the JDK, running as a systemd service, configuring nginx as a reverse proxy, and HTTPS with Let's Encrypt.

Deploying to a VPS with Nginx

Deploy your website to a Virtual Private Server -- server setup, SSH, nginx configuration, HTTPS with Let's Encrypt, and basic security hardening.

Deployment & Cloud Manager

Git repo structure, Cloud Manager pipelines, environments, Rapid Development Environments, content transfer, and going to production.

Dispatcher & Caching

Dispatcher architecture, cache rules, filters, rewrites, vanity URLs, cache invalidation, and local Dispatcher SDK testing.

Display & Positioning

How CSS display modes (block, inline, inline-block) and positioning (static, relative, absolute, fixed, sticky) control element flow and placement.

Docker & Deployment Automation

Containerizing Strapi with Docker, docker-compose for development, and setting up automated deployments with GitHub Actions.

Docker Compose

Learn how to define and manage multi-container applications with Docker Compose, covering services, volumes, networks, and a full worked example.

Docker in CI/CD

Learn how to build and push Docker images in GitHub Actions, cache layers for faster CI builds, and deploy by pulling and restarting containers.

Docker Networking

Learn how Docker networks work, how containers communicate with each other by name, and how port mapping exposes services to the host.

End-to-End Testing with Playwright

Playwright setup, writing your first test, page navigation, clicks, form fills, selectors, headless execution, traces and screenshots on failure, and CI integration.

Enums & Literal Types

Numeric enums, string enums, const enums, literal types, discriminated unions, and exhaustive checks in TypeScript.

Environment Variables and Secrets

Learn how to manage configuration and secrets in Docker using ENV, ARG, .env files, runtime injection, and Docker secrets — without baking sensitive data into images.

Error Handling

Learn Java error handling -- try/catch/finally, checked vs unchecked exceptions, custom exceptions, try-with-resources, and best practices.

Error Handling

Handle errors gracefully in JavaScript -- try/catch/finally, error types, custom errors, async error handling, and common patterns.

Error Handling

panic! vs recoverable errors, Result in depth, the ? operator, unwrap and expect, custom error types, the From trait for error conversion, the thiserror crate, and when to panic vs return a Result.

Error Handling & Debugging

PHP error levels, configuring error reporting, exceptions with try/catch/finally, custom exception classes, and debugging techniques including Xdebug.

Events & Interactivity

Learn how to handle user interactions in JavaScript -- event listeners, the event object, bubbling, delegation, forms, and keyboard/mouse events.

File I/O

Learn Java file I/O -- Path, Files, reading and writing text files, directories, BufferedReader/Writer, and simple CSV parsing.

File Management

Create, copy, move, delete, and find files and directories with touch, mkdir, cp, mv, rm, ln, and find.

Filesystem Navigation

Navigate the Linux filesystem with pwd, ls, cd, and tree, and understand the standard directory hierarchy.

Flexbox

CSS Flexbox layout -- flex containers and items, direction, wrapping, alignment, sizing with flex-grow/shrink/basis, gap, and common patterns.

Functions

Learn JavaScript functions -- declarations, expressions, arrow functions, parameters, scope, closures, and callbacks.

Functions

Defining and calling functions, parameters and return values, type declarations, variable scope, closures, arrow functions, and built-in PHP functions.

Functions

Defining functions, parameters and return types, the difference between expressions and statements, implicit returns, the unit type, nested functions, diverging functions, and documentation comments.

Functions

Typed parameters, return types, optional and default parameters, rest params, function overloads, void vs never, and arrow functions in TypeScript.

Generics

Generic functions, interfaces, and classes in TypeScript, plus constraints with extends, default type parameters, and keyof and typeof operators.

Git Workflows

GitHub Flow, GitFlow, trunk-based development, and the fork workflow for open source — and how to choose the right one.

Gradle

Learn Gradle with Kotlin DSL -- project structure, dependency management, building fat JARs, and improving the REST API project with Jackson for JSON handling.

Health Checks and Logging

Learn how to configure Docker health checks, inspect container health status, manage logs with docker logs, and choose the right log driver for production.

Hooks and Automation

What git hooks are, pre-commit, commit-msg, and pre-push hooks, with practical examples and tools like husky and lefthook.

HTL Templates

The HTML Template Language in depth -- expressions, block statements, global objects, the Use API, and best practices.

HTML & CSS Essentials

Learn enough HTML and CSS to build web pages -- document structure, semantic elements, forms, CSS selectors, the box model, flexbox, and responsive design.

Images and Containers

Learn how to pull images, run containers with essential flags, manage container lifecycle, and clean up your local environment.

Inheritance & Interfaces

Learn Java inheritance, method overriding, abstract classes, interfaces, polymorphism, sealed classes, and composition vs inheritance.

Integration Testing

What makes a test an integration test, testing database interactions, testing HTTP endpoints with Supertest and MockMvc, and Docker-based testing with Testcontainers.

Interfaces & Type Aliases

Defining object shapes with interface and type, optional and readonly properties, extending interfaces, intersection types, and structural typing.

Introduction & Environment Setup

What Rust is, why it exists, how it compares to other languages, installing the toolchain with rustup, writing your first program, understanding Cargo, setting up your editor, and reading compiler errors.

Introduction & Environment Setup

What TypeScript is, why it exists, how to install it via npm, tsconfig basics, compiling with tsc, and your first typed program.

Introduction & First Styles

What CSS is, how it works with HTML, the three ways to add styles, the anatomy of a CSS rule, writing your first stylesheet, and a quick look at browser DevTools.

Introduction & Setup

What AEM is, the technology stack (Sling, JCR, OSGi), AEMaaCS vs on-premise, installing the SDK, generating a project with the Maven archetype, and a project structure walkthrough.

Introduction & Setup

What PHP is, how the web works, installing PHP on every major operating system, writing your first script, and understanding the PHP request lifecycle.

Introduction & Setup

What a headless CMS is, why Strapi, installing Strapi 5, understanding the project structure, and your first look at the admin panel.

Introduction to Docker

Learn what Docker is, how containers differ from virtual machines, and how to install and verify Docker on your system.

Introduction to Git

What Git is, distributed vs centralised VCS, installing Git, initial configuration, git init, .gitignore, and the three areas of a Git repository.

Introduction to Linux

What Linux is, an overview of common distributions, why developers use it, and how to connect to a remote server via SSH.

Introduction to Software Testing

Why testing matters, the testing pyramid, cost of bugs, coverage as a metric, and a tooling overview for JavaScript/TypeScript and Java projects.

Iterators & Closures

Closure syntax, capturing variables, Fn/FnMut/FnOnce traits, the Iterator trait, iterator adaptors like map/filter/fold/collect, chaining, lazy evaluation, and the difference between iter, into_iter, and iter_mut.

Lifecycle Hooks & Webhooks

Reacting to content events with Document Service middleware, configuring webhooks, and integrating with external services.

Lifetimes

Why lifetimes exist, lifetime annotations in function signatures and structs, the three lifetime elision rules, the 'static lifetime, and common lifetime patterns and pitfalls.

Managing Content

Using the admin panel to create, edit, and publish content -- drafts, publishing workflow, media library, and bulk operations.

Maven

Learn Apache Maven -- project structure, dependency management, building fat JARs, and improving the REST API project with Gson for JSON handling.

Media & File Uploads

Upload providers, S3 and Cloudinary integration, image optimization, responsive formats, upload validation, and media management.

Merging

Fast-forward vs three-way merges, resolving conflicts step by step, git mergetool, and aborting a merge.

Methods

Learn Java methods -- defining and calling static methods, parameters, return types, overloading, varargs, scope, and recursion.

Mocking in Java with Mockito

Mockito setup, @Mock and @InjectMocks, when().thenReturn(), verify(), ArgumentCaptor, mocking exceptions, and spy objects.

Modern CSS Features

Recent CSS additions -- native nesting, the :has() selector, container queries, @layer, logical properties, color-mix(), accent-color, and subgrid.

Modern PHP Features

PHP 8.0 through 8.4 highlights including named arguments, enums, readonly properties, property hooks, and choosing your PHP version.

Modules & Crates

Organizing code with mod, pub, and use, file-based module structure, re-exports, library vs binary crates, workspaces, Cargo.toml dependencies, crates.io, semantic versioning, and feature flags.

Modules & Declaration Files

ES modules in TypeScript, import and export patterns, declaration files (.d.ts), DefinitelyTyped, and writing your own type declarations.

Multi-Site Manager & i18n

Blueprints, Live Copies, rollout configurations, language copies, the translation framework, and i18n dictionaries.

Multi-Stage Builds

Learn how to use multi-stage builds to produce small, secure production images by separating build-time and runtime dependencies.

Networking

Diagnose and work with Linux networking using ip, curl, wget, ss, dig, SSH config, scp, and rsync.

Object-Oriented Programming Basics

Classes and objects, properties and methods, constructors, visibility modifiers, getters and setters, static members, class constants, and a practical Product and ShoppingCart example.

Objects

Learn JavaScript objects -- literals, properties, methods, this, destructuring, spread, Object methods, and JSON.

OOP Advanced

Inheritance, abstract classes, interfaces, traits, namespaces, autoloading, and building flexible object-oriented systems.

Operators & Expressions

Learn how PHP combines values with operators -- arithmetic, assignment, comparison, logical, and string concatenation. Understand loose vs strict comparison and operator precedence.

Optionals

Avoid NullPointerException with Java's Optional -- creation, unwrapping, chaining, and best practices for handling missing values.

OSGi Fundamentals

OSGi bundles, services, the component lifecycle, the Web Console, and configuration management in AEM.

Ownership & Borrowing

The stack and the heap, ownership rules, move semantics, the Copy and Clone traits, references and borrowing, mutable references, dangling references, String vs &str, and slices.

Package Management

Install, update, and remove software packages on Debian/Ubuntu with apt, RHEL/Fedora with dnf, and Alpine with apk.

Pattern Matching

match exhaustiveness, destructuring structs and enums, if let, while let, the matches! macro, match guards, the wildcard pattern, nested patterns, and matching on Option and Result.

Performance Optimization

Database indexing, query optimization, caching strategies, CDN setup, and monitoring for high-performance Strapi applications.

Permissions and Ownership

Understand Linux file permissions, ownership, chmod, chown, umask, and sudo for secure server access control.

Practice Project

An end-to-end exercise covering initialising a repo, feature branches, simulated PR review, squash-merge, and tagging a release.

Practice Projects

Six hands-on projects -- from a simple component to a production Dispatcher config -- to reinforce everything covered in the guide.

Practice Projects

Six hands-on CSS projects from beginner to advanced -- personal profile card, navigation bar, photo gallery, landing page, dashboard layout, and CSS art.

Practice Projects

Six hands-on project ideas -- from beginner to advanced -- to reinforce everything you learned in the PHP Beginners Guide.

Practice Projects

Eight hands-on project ideas -- from beginner to advanced -- to reinforce everything you learned in the Rust Beginners Guide.

Practice Projects

Six hands-on project ideas -- from beginner to advanced -- to reinforce everything you learned in the Strapi 5 Beginners Guide.

Processes and Jobs

Monitor, control, and manage Linux processes and system services using ps, top, kill, systemctl, and journalctl.

Production Best Practices

Learn how to harden Docker containers for production — non-root users, read-only filesystems, minimal base images, resource limits, restart policies, and a complete end-to-end project.

Project: Build a Complete Website

Build a multi-page vanilla JavaScript website from scratch -- navigation, theme toggle, form validation, dynamic content, and local storage.

Project: CLI Task Manager

Build a complete command-line task manager in Java -- CRUD operations, file-based persistence, input validation, and packaging as a runnable JAR.

Project: CLI Task Manager

Build a complete CLI application with clap for argument parsing, serde for JSON serialization, file-based storage, proper error handling, and a modular project structure.

Pseudo-classes & Pseudo-elements

CSS pseudo-classes for targeting element states (:hover, :focus, :nth-child) and pseudo-elements for creating virtual content (::before, ::after).

React Component Testing

React Testing Library setup, render/screen/fireEvent/userEvent, querying by role and text, testing forms, and testing components that fetch async data.

Rebasing

git rebase vs merge, interactive rebase for squashing and editing commits, and the golden rule of rebasing.

Registries and Image Management

Learn how to push and pull images to Docker Hub, GHCR, and private registries, apply tagging conventions, and scan images for vulnerabilities.

Regular Expressions

Master JavaScript regular expressions -- patterns, character classes, quantifiers, groups, lookaheads, and practical validation examples.

Relations

Defining one-to-one, one-to-many, and many-to-many relations between content types to build a blog data model.

Remote Repositories

git clone, managing remotes, git fetch, git pull, git push, tracking branches, and upstream relationships.

Responsive Design

Building layouts that work on every screen size -- the viewport meta tag, media queries, mobile-first development, breakpoints, responsive images, and fluid typography.

REST API

Strapi's auto-generated REST API -- endpoints, filtering, sorting, pagination, field selection, population, and testing with curl.

REST API with Actix Web

Building a REST API with Actix Web: project setup, routes, handlers, extractors, JSON with serde, application state, middleware, CORS, and connecting to SQLite.

Routes, Policies & Middleware

Custom routes for new endpoints, access control policies, request/response middleware, and the Strapi request lifecycle.

Selectors

How CSS targets HTML elements -- element, class, ID, universal, grouping, descendant, child, sibling, and attribute selectors.

Sessions & Cookies

HTTP statelessness, cookies with setcookie(), PHP sessions, flash messages, and building a secure login/logout system.

Shell Scripting Basics

Write bash scripts with variables, conditionals, loops, and command substitution to automate repetitive server tasks.

Sling Models

Injecting JCR content into Java models -- annotations, adaptables, child resources, OSGi services, exporters, and best practices.

Snapshot & Visual Testing

Jest snapshot testing pros and cons, updating snapshots, when to use them, and an introduction to Storybook for visual component testing.

Specificity & the Cascade

How CSS decides which rule wins -- the cascade algorithm, specificity calculation, inheritance, the !important keyword, and cascade layers.

Streams & Lambdas

Functional Java -- lambda expressions, method references, the Stream API, and practical data processing pipelines.

Strings & Arrays

Master PHP strings -- concatenation, heredoc, common functions, and multibyte handling. Then dive into indexed and associative arrays, looping, essential functions, and practical examples.

Structs & Enums

Defining structs, field init shorthand, tuple structs, unit structs, impl blocks, methods, associated functions, enums, enum variants with data, Option, and Result.

System Administration

Administer a Linux server — disk usage, cron jobs, log management, and environment variable configuration.

Tags and Releases

Lightweight vs annotated tags, creating and pushing tags, semantic versioning, deleting tags, and checking out tags.

Templates & Policies

Editable templates, template types, structure vs initial content, component policies, allowed components, and page structure.

Test Coverage

Coverage metrics (line, branch, function), configuring Istanbul and JaCoCo, setting thresholds, what good coverage means, and collecting coverage in CI.

Test-Driven Development (TDD)

The red-green-refactor cycle, when TDD makes sense, a worked example building a shopping cart in both TypeScript and Java, and common TDD pitfalls.

Testing

Write your first Java tests -- JUnit 5 setup, assertions, test structure, parameterized tests, and testing the Task Manager and REST API.

Testing

Unit tests with #[test], the cfg(test) module, assert macros, testing panics, integration tests in the tests/ directory, doc tests, cargo test options, and test organization.

Testing Strapi Applications

Unit testing services and controllers, integration testing API endpoints, and end-to-end testing strategies for Strapi 5.

Text Processing

Read, search, and transform text files using cat, grep, sed, awk, and shell pipes and redirection.

The Box Model

How browsers calculate element sizes using the CSS box model -- content, padding, border, margin, box-sizing, and debugging with DevTools.

The DOM

Learn how JavaScript interacts with web pages through the DOM -- selecting elements, modifying content, creating and removing elements, and traversing the tree.

The JCR & Sling

The Java Content Repository, node types and properties, resource resolution, CRXDE Lite, and how Apache Sling maps URLs to content.

Traits & Generics

Defining traits, implementing traits for types, default methods, generic functions and structs, trait bounds, where clauses, standard library traits, derive macros, and trait objects.

Transitions & Animations

CSS transitions for smooth state changes, transform functions (translate, rotate, scale, skew), keyframe animations, timing functions, and performance tips.

tsconfig & Tooling

Key tsconfig.json options explained, strict mode, target and lib, path aliases, project references, ts-node, tsx, and ESLint integration.

TypeScript

TypeScript adds static types to JavaScript -- learn type annotations, interfaces, generics, union types, and how to set up a TypeScript project.

TypeScript in Practice

TypeScript with Node.js, TypeScript with React including event types and hooks, common real-world patterns, and migrating a JavaScript project to TypeScript.

TypeScript Integration

Setting up TypeScript in Strapi 5, generating types from content schemas, typing controllers, services, and Document Service queries.

Undoing Changes

git restore, git reset (soft/mixed/hard), git revert, git clean, amending commits, and using reflog as a safety net.

Units & Sizing

CSS length units -- px, em, rem, percentages, viewport units, and when to use each one for font sizes, spacing, and layout.

Utility Types

Practical examples of TypeScript's built-in utility types — Partial, Required, Readonly, Pick, Omit, Record, Exclude, Extract, NonNullable, ReturnType, and Parameters.

Variables & Data Types

Declaring variables with the dollar sign, understanding PHP's data types, working with constants, type juggling, and inspecting values with var_dump.

Variables & Types

Declaring variables with let, understanding immutability by default, the mut keyword, shadowing, scalar types, compound types, type inference, type annotations, constants, and numeric overflow.

Variables, Types & Operators

Learn Java's primitive types, String basics, type casting, var, final, arithmetic, comparison, and logical operators.

Variables, Types & Operators

Learn about JavaScript variables (let, const, var), primitive data types, type coercion, operators, and template literals.

Volumes and Bind Mounts

Understand named volumes and bind mounts, when to use each, and how to persist data across container restarts and rebuilds.

Working with Data

Learn how to fetch data from APIs, handle JSON responses, use async/await, and store data with localStorage and sessionStorage.

Working with Databases

Relational databases, PDO, CRUD operations, prepared statements, transactions, and building a simple task manager.

Working with Files

Reading and writing files, CSV and JSON, directory operations, file uploads, path functions, and security best practices.

Writing a Dockerfile

Learn how to write a Dockerfile to build custom images, understand layer caching, use .dockerignore, and tag and push your builds.

Your First Component

Component anatomy in AEM -- the cq:Component node, HTL template, dialog, and Sling Model. Creating, deploying, and using a simple component.