Build a Discord Bot with Claude — From Prompt to Running Bot

This is the last Quick Build in the series. We have built a CLI app, a REST API, a landing page, and a Chrome extension. Now we build something that runs 24/7 and interacts with real users: a Discord bot. Discord bots are a great test for Claude Code because they involve: An external API (Discord API) Event-driven architecture Slash command registration Permission handling Error recovery Deployment for uptime Total time: 71 minutes. Most of that was fighting with slash command registration. ...

June 28, 2026 · 17 min

Local AI Models for Coding — Ollama, Open Source, and Privacy

Every prompt you send to Claude, GPT, or Gemini goes through the internet to a data center. For most coding tasks, that is fine. But there are real reasons to run AI models locally — on your own machine, with no data leaving your network. This article covers when local models make sense, how to set them up with Ollama, and how to connect them to your existing tools. You will also get an honest comparison of local vs cloud models for coding tasks. ...

June 28, 2026 · 9 min

Build a Browser Extension with AI — Chrome Extension from Zero to Published

Browser extensions are the perfect vibe coding project. They are small in scope, have a clear structure, give you instant visual feedback, and the manifest format is strict enough that AI generates correct configurations most of the time. In this article, you will build a Chrome extension with AI — from the first prompt to publishing on the Chrome Web Store. The tool: Cursor as the primary AI editor. The project: PR Summary — a GitHub pull request summarizer that adds a one-click summary button to PR pages. When you click it, it extracts the PR diff, sends it to an AI API, and displays a plain-English summary right on the page. ...

June 27, 2026 · 10 min

Build a Chrome Extension with Claude — Tab Manager

Chrome extensions are different from anything we have built so far. There is a specific architecture (background scripts, content scripts, popups), a manifest file that Chrome parses, and browser APIs that work differently from regular web APIs. This is a good stress test for Claude Code. Can it handle Manifest V3 correctly? Does it know the Chrome extension APIs? The project: a tab manager extension called “TabFlow” that shows all open tabs, lets you search them, close duplicates, and save sessions for later. ...

June 27, 2026 · 13 min

Build a Mobile App with AI — Kotlin + Jetpack Compose

Mobile development is where AI tools face their toughest test. Android has complex APIs, Jetpack Compose changes fast, and platform-specific patterns do not always match what AI learned from web development tutorials. In this article, you will build a complete notes app with Kotlin and Jetpack Compose. You will use Claude Code as the primary tool (running alongside Android Studio) and Copilot for inline completions. Every prompt, every AI mistake, and every manual fix is shown. ...

June 27, 2026 · 9 min

Docker Cheat Sheet 2026 — All Commands in One Page

This is the complete Docker reference for 2026. All essential commands in one place. Versions covered: Docker Engine 29+, Docker Compose v2 (Compose Specification v5). Container Commands # Run a container docker run nginx # Run in detached mode (background) docker run -d nginx # Run interactively with a shell docker run -it ubuntu:24.04 bash # Run and remove when stopped docker run --rm nginx # Run with a name docker run --name mywebserver nginx # Run with port mapping (host:container) docker run -p 8080:80 nginx # Run with environment variables docker run -e APP_ENV=production myapp:1.0 # Run with environment file docker run --env-file .env myapp:1.0 # Run with volume docker run -v mydata:/data nginx # Run with bind mount docker run -v /host/path:/container/path nginx # Run with resource limits docker run --memory 512m --cpus 1.0 myapp:1.0 # Run as non-root user docker run --user 1001:1001 myapp:1.0 # Run with read-only filesystem docker run --read-only myapp:1.0 # Run with network docker run --network mynetwork myapp:1.0 # Run with restart policy docker run --restart unless-stopped nginx # List running containers docker ps # List all containers (including stopped) docker ps -a # Stop a container (SIGTERM) docker stop mywebserver # Kill a container (SIGKILL) docker kill mywebserver # Start a stopped container docker start mywebserver # Restart a container docker restart mywebserver # Remove a stopped container docker rm mywebserver # Force-remove a running container docker rm -f mywebserver # Remove all stopped containers docker container prune # View container logs docker logs mywebserver # Follow logs in real time docker logs -f mywebserver # Show last 50 lines docker logs --tail 50 mywebserver # Execute a command in a running container docker exec -it mywebserver bash # Copy files to/from a container docker cp mywebserver:/etc/nginx/nginx.conf ./nginx.conf docker cp ./nginx.conf mywebserver:/etc/nginx/nginx.conf # Inspect container details (JSON) docker inspect mywebserver # View real-time resource usage docker stats # View stats for one container docker stats mywebserver # View running processes inside a container docker top mywebserver Image Commands # Pull an image from Docker Hub docker pull nginx # Pull specific version docker pull nginx:1.27 # List local images docker images # Build an image from Dockerfile docker build -t myapp:1.0 . # Build from specific Dockerfile docker build -f Dockerfile.prod -t myapp:prod . # Build with build args docker build --build-arg APP_VERSION=2.0 -t myapp:2.0 . # Tag an image docker tag myapp:1.0 myapp:latest docker tag myapp:1.0 kemalcodes/myapp:1.0 # Push to Docker Hub docker push kemalcodes/myapp:1.0 # Remove an image docker rmi nginx # Remove all unused images docker image prune # Remove all unused images (including tagged but not referenced) docker image prune -a # View image history (layers) docker history nginx # Inspect image details (JSON) docker inspect nginx # Save image to tar file docker save myapp:1.0 -o myapp.tar # Load image from tar file docker load -i myapp.tar Volume Commands # Create a named volume docker volume create mydata # List all volumes docker volume ls # Inspect a volume docker volume inspect mydata # Remove a volume docker volume rm mydata # Remove all unused volumes docker volume prune Network Commands # List all networks docker network ls # Create a network docker network create mynetwork # Create with specific driver docker network create --driver bridge mynetwork # Inspect a network docker network inspect mynetwork # Connect a container to a network docker network connect mynetwork mycontainer # Disconnect a container from a network docker network disconnect mynetwork mycontainer # Remove a network docker network rm mynetwork # Remove all unused networks docker network prune Docker Compose Commands Always use docker compose (v2 plugin), not docker-compose (v1, deprecated). ...

June 26, 2026 · 7 min

Build a Full-Stack Web App with AI — Next.js Dashboard from Scratch

You have built a CLI tool and a REST API with AI. Now let us go full-stack. You are going to build a complete analytics dashboard with a frontend, backend, database, authentication, and charts — all in one project. The project: DevPulse — a developer activity dashboard that tracks coding sessions, displays charts, and lets users manage their data. It uses Next.js, Tailwind CSS, PostgreSQL, and Auth.js for authentication. This project uses three AI tools together: Cursor Composer for scaffolding and UI, Claude Code for backend logic and database work, and Copilot for inline completions. You will see how they complement each other in a real workflow. ...

June 26, 2026 · 10 min

Build a Landing Page with Claude — HTML, CSS, and Deploy

We built a CLI app and a REST API with Claude Code. Both were backend projects. Now let’s see how Claude handles the visual side: a modern landing page with responsive design, animations, and dark mode. The project: build a landing page for a fictional SaaS product called “FlowBoard” — a project management tool. No React, no frameworks. Just HTML, CSS (Tailwind), and a tiny bit of vanilla JavaScript. Total time: 38 minutes from empty folder to live on Netlify. ...

June 26, 2026 · 14 min

Android App Functions: Let AI Assistants Call Your Kotlin Code Directly

Android 16 ships a platform feature called App Functions. It lets an AI assistant — like Google Gemini — discover and call typed functions inside your app from a natural-language request, without the user opening your app. You annotate a suspend fun with @AppFunction. A KSP compiler plugin reads your KDoc and turns it into an XML schema. Android indexes that schema when the app installs. When a user says “set a 10-minute pasta timer,” an assistant like Gemini matches the request to your function and calls it. Your function runs locally, inside your app’s own process. ...

June 25, 2026 · 10 min

Docker Tutorial #9: Docker Security Best Practices

Most beginner Docker setups have serious security problems. Containers running as root. Passwords in Dockerfiles. Outdated base images with known vulnerabilities. No resource limits. This tutorial covers the most important Docker security practices. You do not need to implement all of them at once. Start with the first three — they will fix the most critical issues. 1. Never Run Containers as Root By default, processes inside Docker containers run as root (UID 0). If an attacker exploits a vulnerability in your app, they have root access inside the container — and potentially a path to the host. ...

June 25, 2026 · 7 min