VALHELA
13-Sign ChartAI Sanctum3D StudioCompatibilityMusicGalleryMerchShowcase Booking & Contact Valhella Voice Coming soon
Valhella Labs

The Showcase

AI-produced, fact-checked tutorials. Every guide below was written from a short brief, then checked for structure, real documentation sources and plain, filler-free language. Only guides that passed every check are published here.

12briefs run
100%passed fact-check
3.9savg. time per guide
12published

Batch produced . Want guides like these for your product? Get in touch.

For Backend Developers and DevOps Engineers

Docker Compose Multi-Service Apps Tutorial

This tutorial demonstrates how to define and run multi-container applications using Docker Compose. By following the steps, you will create a compose.yaml file that defines a web service and a database service, then deploy them with a single command.

Read the guide (4 steps)

Before you start

  • Docker Engine 24 or newer
  • Docker Compose v2 plugin installed
  1. Verify Docker Compose Installation

    Ensure that Docker Compose is properly installed and accessible in your environment before proceeding with multi-service application setup.

    docker compose version
  2. Create a Compose File

    Define the services required for your application in a compose.yaml file. This includes both a web service and a database service.

    version: '3.8'
    services:
      web:
        image: nginx
        ports:
          - "80:80"
        depends_on:
          - db
      db:
        image: postgres:13
        environment:
          POSTGRES_USER: user
          POSTGRES_PASSWORD: password
        volumes:
          - db_data:/var/lib/postgresql/data
    volumes:
      db_data:
  3. Start the Services

    Deploy the defined services in detached mode using the docker compose up command.

    docker compose up -d
  4. View Service Logs

    Monitor the logs of your running services to verify that they are starting correctly and to troubleshoot any issues.

    docker compose logs -f

Sources: docs.docker.com ↗

For Full-Stack Developers integrating payments

Stripe CLI Webhook Testing Tutorial

This tutorial guides developers through setting up and testing Stripe webhooks using the Stripe CLI. It demonstrates how to forward test events to a local server for development and debugging purposes.

Read the guide (3 steps)

Before you start

  • A Stripe account in test mode
  • Stripe CLI installed locally
  1. Authenticate with Stripe CLI

    The first step is to authenticate your local Stripe CLI with your Stripe account. This allows the CLI to access your test environment and manage webhooks.

    stripe login
  2. Start Listening for Webhook Events

    This command initiates the Stripe CLI webhook listener, which forwards incoming test events to your local development server endpoint.

    stripe listen --forward-to localhost:4242/webhook
  3. Trigger a Test Webhook Event

    Using the CLI, you can simulate real webhook events such as checkout.session.completed to test your local webhook handler.

    stripe trigger checkout.session.completed

Sources: docs.stripe.com ↗

For Frontend Developers shipping web apps

Vercel CLI Deploy Tutorial

This tutorial provides a step-by-step guide to deploying web applications using the Vercel Command Line Interface (CLI). It covers installation, authentication, and deployment to both preview and production environments.

Read the guide (4 steps)

Before you start

  • Node.js 18 or newer
  • A Vercel account
  1. Install the Vercel CLI globally

    The Vercel CLI must be installed globally on your system to enable command-line deployment capabilities.

    npm i -g vercel
  2. Log in to your Vercel account

    Authentication is required to associate deployments with your Vercel account and manage permissions.

    vercel login
  3. Deploy your project to a preview environment

    This command deploys your local project to a temporary preview URL for testing before production deployment.

    vercel
  4. Deploy your project to production

    The --prod flag ensures the deployment is made live and accessible at a permanent URL.

    vercel --prod

Sources: vercel.com ↗

For Web Developers hosting static sites

Cloudflare Pages Direct Upload Tutorial

Learn how to deploy a static site to Cloudflare Pages using Wrangler. This tutorial guides developers through installing Wrangler, logging in, and deploying a build folder.

Read the guide (3 steps)

Before you start

  • Node.js 18 or newer
  • A Cloudflare account
  1. Install Wrangler

    Install the Wrangler CLI tool as a development dependency to interact with Cloudflare Pages.

    npm install -D wrangler
  2. Log in to Wrangler

    Authenticate your Cloudflare account with the Wrangler CLI using the login command.

    npx wrangler login
  3. Deploy Your Static Site

    Deploy the contents of your build folder to Cloudflare Pages using the deploy command with a specified project name.

    npx wrangler pages deploy dist --project-name my-site

Sources: developers.cloudflare.com ↗

For TypeScript Backend Developers

Prisma Migrate Tutorial: Evolving Database Schemas with Versioned Migrations

This tutorial guides TypeScript backend developers through the process of using Prisma Migrate to evolve a PostgreSQL database schema with versioned migrations. It covers installation, initialization, schema modification, and migration execution steps.

Read the guide (4 steps)

Before you start

  • Node.js 18 or newer
  • A PostgreSQL database
  1. Install Prisma as a Development Dependency

    Installing Prisma ensures that the necessary tools for schema management and migration are available in your project environment.

    npm install prisma --save-dev
  2. Initialize Prisma in Your Project

    Initializing Prisma sets up the required configuration files and directory structure for managing database migrations.

    npx prisma init
  3. Define a New Model in schema.prisma

    Adding a model to the Prisma schema file defines the structure of a new table in your database, which will be reflected in subsequent migrations.

    model User {
      id    Int    @id @default(autoincrement())
      name  String
      email String @unique
    }
  4. Create and Apply the Initial Migration

    Running the dev command with a migration name creates a new migration file based on schema changes and applies it to the database.

    npx prisma migrate dev --name init

Sources: prisma.io ↗

For Python Developers building web APIs

FastAPI First REST API Tutorial

This tutorial guides Python developers through creating their first REST API using FastAPI, leveraging automatic interactive documentation and type hints for robust API development.

Read the guide (3 steps)

Before you start

  • Python 3.10 or higher
  • A virtual environment
  1. Install FastAPI and ASGI Server

    Install the FastAPI package along with an ASGI server for running the application. The [standard] extra includes uvicorn, which is the recommended ASGI server.

    pip install "fastapi[standard]"
  2. Create a Basic API Endpoint

    Create a main.py file that defines a simple GET endpoint. This step introduces the core FastAPI syntax for defining routes and handling requests.

    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    def read_root():
        return {"Hello": "World"}
  3. Run the Application

    Start the FastAPI application using the fastapi dev command. This will automatically reload the server on code changes and provide access to interactive API documentation.

    fastapi dev main.py

Sources: fastapi.tiangolo.com ↗

For Platform and Infrastructure Engineers

Terraform Infrastructure Basics Tutorial

This tutorial guides you through the foundational steps of using Terraform to provision infrastructure declaratively. You will declare a provider, define a resource, initialize the environment, plan changes, and apply them to create real infrastructure.

Read the guide (4 steps)

Before you start

  • Terraform CLI 1.6 or newer
  • Cloud provider credentials configured
  1. Create a main.tf file with a provider and resource

    Declare the required provider and define a basic resource to be provisioned. This step sets up the initial configuration for Terraform.

    provider "aws" {
      region = "us-west-2"
    }
    
    resource "aws_instance" "example" {
      ami           = "ami-0c55b159cbfafe1d0"
      instance_type = "t2.micro"
    }
  2. Initialize Terraform

    Run terraform init to download and initialize the required provider plugins and modules.

    terraform init
  3. Plan the infrastructure changes

    Execute terraform plan to review what changes Terraform will make before applying them.

    terraform plan
  4. Apply the configuration

    Use terraform apply to create the declared infrastructure resources in your cloud environment.

    terraform apply

Sources: developer.hashicorp.com ↗

For QA Engineers and Frontend Developers

Playwright End-to-End Testing Tutorial

This tutorial guides users through setting up and running cross-browser end-to-end tests using Playwright. It covers initializing a project, executing tests, and viewing reports with auto-waiting capabilities.

Read the guide (3 steps)

Before you start

  • Node.js 18 or newer installed
  • A web app running locally
  1. Initialize Playwright Project

    Begin by initializing a new Playwright project in your development environment. This command sets up the necessary configuration files and dependencies for testing.

    npm init playwright@latest
  2. Run End-to-End Tests

    Execute the test suite using Playwright's built-in test runner. This step runs all defined tests across supported browsers with auto-waiting features enabled.

    npx playwright test
  3. View Test Report

    After running the tests, generate and open a detailed report to analyze results. This provides insights into test execution, including screenshots and logs.

    npx playwright show-report

Sources: playwright.dev ↗

For React Developers starting new projects

Next.js App Router Setup Tutorial

This tutorial guides React developers through setting up a new Next.js project using the App Router, leveraging file-system routing with layouts and server components as outlined in the official documentation.

Read the guide (3 steps)

Before you start

  • Node.js 18.18 or newer
  • npm installed
  1. Create a new Next.js app

    Initialize a new Next.js project using the create-next-app command to scaffold the basic structure required for an App Router setup.

  2. Add a page component inside a nested folder

    Create a new directory named 'dashboard' within the app folder and add a page.tsx file to define a route for the dashboard section.

    mkdir app/dashboard && touch app/dashboard/page.tsx
  3. Start the development server

    Run the development server to preview your Next.js application and verify that the new route is correctly configured with the App Router.

    npm run dev

Sources: nextjs.org ↗

For DevOps Engineers new to Kubernetes

Kubernetes First Deployment Tutorial

This tutorial guides DevOps engineers through the fundamental steps of deploying a containerized application on a Kubernetes cluster using kubectl commands. It covers creating a deployment and exposing it with a service, following official Kubernetes documentation practices.

Read the guide (3 steps)

Before you start

  • kubectl installed
  • Access to a Kubernetes cluster
  1. Create a Kubernetes Deployment

    The first step involves creating a deployment using the nginx container image. This command initializes a deployment named 'hello' with the specified image.

    kubectl create deployment hello --image=nginx
  2. Expose the Deployment

    After creating the deployment, expose it as a NodePort service to make the application accessible from outside the cluster. This allows external traffic to reach the pods.

    kubectl expose deployment hello --type=NodePort --port=80
  3. Verify Pod Status

    Check the status of the pods created by the deployment to confirm that they are running correctly. This step ensures that the containerized application is properly deployed.

    kubectl get pods

Sources: kubernetes.io ↗

For Backend Developers improving response times

Redis Caching Quickstart Tutorial

This tutorial provides a step-by-step guide to implementing Redis caching for frequently accessed data, using Docker to launch the Redis server and Python to interact with the cache. The tutorial leverages official Redis documentation to ensure accuracy and best practices.

Read the guide (3 steps)

Before you start

  • Docker installed
  • Python 3.10 or higher
  1. Launch Redis Server with Docker

    Start a Redis instance using Docker to provide an in-memory data store for caching.

    docker run -d -p 6379:6379 redis
  2. Install Redis Python Client

    Install the Python Redis client library to enable interaction with the Redis server from your application.

    pip install redis
  3. Set and Read a Cached Key with Expiry

    Use Python to set a key-value pair in Redis with an expiration time, then read it back.

    import redis
    r = redis.Redis(host='localhost', port=6379, db=0)
    r.setex('my_key', 60, 'my_value')
    print(r.get('my_key').decode('utf-8'))

Sources: redis.io ↗

For Developers automating builds and tests

GitHub Actions CI Pipeline Tutorial

This tutorial guides developers through setting up an automated CI pipeline using GitHub Actions. It demonstrates how to configure a workflow that runs tests automatically on every push and pull request, ensuring code quality and continuous integration.

Read the guide (3 steps)

Before you start

  • A GitHub repository
  • A project with an automated test command
  1. Create a CI Workflow File

    To begin automating your CI pipeline, create a workflow file in your repository at .github/workflows/ci.yml. This file defines the actions that GitHub Actions will execute.

    mkdir -p .github/workflows
    vim .github/workflows/ci.yml
  2. Define the CI Job

    Add a job to your workflow file that checks out the code and runs the automated test command. This ensures tests are executed in a clean environment on every push or pull request.

    name: CI
    on: [push, pull_request]
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v3
          - name: Run tests
            run: npm test
  3. Commit and Push Changes

    After defining your workflow, commit the changes to your repository and push them to GitHub. This triggers the CI pipeline for the first time.

    git add .github/workflows/ci.yml
    git commit -m "Add CI workflow"
    git push

Sources: docs.github.com ↗

Curated by Bill Kelsey · Valhella