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
- 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
- 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:
- Start the Services
Deploy the defined services in detached mode using the docker compose up command.
docker compose up -d
- 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
- 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
- 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
- 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
- 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
- Log in to your Vercel account
Authentication is required to associate deployments with your Vercel account and manage permissions.
vercel login
- Deploy your project to a preview environment
This command deploys your local project to a temporary preview URL for testing before production deployment.
vercel
- 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
- Install Wrangler
Install the Wrangler CLI tool as a development dependency to interact with Cloudflare Pages.
npm install -D wrangler
- Log in to Wrangler
Authenticate your Cloudflare account with the Wrangler CLI using the login command.
npx wrangler login
- 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
- 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
- Initialize Prisma in Your Project
Initializing Prisma sets up the required configuration files and directory structure for managing database migrations.
npx prisma init
- 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
}
- 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
- 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]"
- 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"}
- 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
- 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"
}
- Initialize Terraform
Run terraform init to download and initialize the required provider plugins and modules.
terraform init
- Plan the infrastructure changes
Execute terraform plan to review what changes Terraform will make before applying them.
terraform plan
- 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
- 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
- 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
- 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
- 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.
- 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
- 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
- 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
- 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
- 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
- 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
- Install Redis Python Client
Install the Python Redis client library to enable interaction with the Redis server from your application.
pip install redis
- 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
- 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
- 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
- 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