Hello world — the new mteke.com
Migrating from Ghost to Next.js, the writing workflow, and a quick tour of the MDX components.
This site is built on Next.js 16 + MDX + Tailwind v4 and is published to GitHub Pages. This post is a short tour of the new content format — copy, edit, ship.
Three theme modes
Use the toggle in the header to switch between Light, Dark, and Navy. The whole palette — backgrounds, accents, code highlight — re-tunes automatically.
Colored callouts
Spin up a new post with: npm run new-post "Your post title". It creates
the folder and a frontmatter skeleton.
Five types are available: info, success, warning,
danger, tip. Each has its own color and icon.
Relative ./image.png paths inside Markdown are automatically rewritten to
/blog/<slug>/image.png. Just drop images next to the post.
Because we ship with output: 'export', runtime features like
cookies(), server actions, and request rewrites do not work — everything
stays fully static.
Code blocks — language-aware highlighting
Default theme (matches the active site theme — light / dark / navy):
from netmiko import ConnectHandler
def add(a: int, b: int) -> int:
return a + b
def connect(host: str) -> ConnectHandler:
"""Open an SSH session to a Cisco device."""
return ConnectHandler(device_type="cisco_ios", host=host)Per-block alternate themes
Add style="<name>" to the fence to opt a single block into a different
syntax-highlight palette. Available: dracula, nord, solarized, monokai.
Dracula:
def greet(name: str) -> str:
return f"Hello, {name}!"
print(greet("world"))Nord:
type User = { id: number; name: string };
const users: User[] = [
{ id: 1, name: "Ada" },
{ id: 2, name: "Linus" },
];
users.forEach((u) => console.log(`${u.id}: ${u.name}`));Solarized:
# Deploy with one command
git add . && git commit -m "post: hello world" && git pushMonokai:
package main
import "fmt"
func main() {
fmt.Println("Hello, monokai!")
}Inline syntax: variables like count and strings like "hello" get colored
individually. Plain inline code works too.
YouTube embeds
Full width (default):
60% wide, centered:
GitHub repo cards
Use the <GitHubRepo> component for a rounded-square link card:
The React Framework for the Web — used by some of the world's largest companies.
Source for this site — Next.js + MDX + Tailwind, statically deployed to GitHub Pages.
You can also just drop a plain GitHub link inline like https://github.com/anthropics/claude-code and it picks up a rounded chip style automatically.
Spotify embeds
Track:
Album:
Playlist:
Podcast episode:
Podcast embeds (Apple / RSS / etc.)
Apple Podcasts — paste the page URL, the component upgrades it to an embed:
Any provider that supplies an embeddable iframe URL also works:
Tables, lists, and more
| Feature | Status | Notes |
|---|---|---|
| Static export | ✓ | GitHub Pages |
| Three theme modes | ✓ | Light / Dark / Navy |
| Pagefind search | ✓ | After npm run build |
| MDX media embeds | ✓ | GitHub / Spotify / Podcast |
A blockquote — replaces the yellow-bordered boxes from Ghost.
What's next
- Import existing Ghost posts:
npm run migrate <ghost-export.json> - Tweak the palette in
src/app/globals.css(CSS variables) - Update social links in
src/lib/social.ts
Happy writing 🚀