Skip to content
New Project

Next.js Portfolio with Pageview Counter

Portfolio site with pageview counter, built with Next.js 13 App Router, Contentlayer, and Upstash Redis.

DeployView Demo

chronark.com

My personal site and blog. Fully static, a tiny script for the theme toggle and hover-prefetching, nothing else running in the browser.

Built with Astro and MDX.

Features

  • Markdown mirrors. Append .md to any page URL and you get the raw markdown instead of HTML. Works for the homepage and every post, useful for LLMs and curl enjoyers.
  • Dark first. The design leads with a near-black theme and ships a matching light mode. The toggle persists your choice, otherwise the OS preference wins.
  • RSS at /rss.xml.
  • No client-side framework. Astro renders everything to plain HTML and CSS at build time.

Development

pnpm install
pnpm dev

Writing

Posts are MDX files in src/content/blog/:

---
title: Post title
description: Optional, used for meta tags and RSS.
date: 2026-07-15
draft: false
---

Drafts (draft: true) are excluded from the build entirely: no page, no RSS entry, no markdown mirror.

Deploy

pnpm build

Everything is pregenerated into dist/. The Dockerfile builds the site and wraps the output in a small Caddy image that listens on $PORT.

The container runs anywhere, but the best place for it is unkey.com: global routing and usage insights included. This site runs there too.

docker build -t chronark.com .
docker run -e PORT=8080 -p 8080:8080 chronark.com
GitHub
Ownerchronark
Repositorychronark.com
Use Cases
Portfolio
Blog
Stack
Next.js
Tailwind
Database
Upstash

Related Templates

Portfolio Starter Kit

Easily create a portfolio with Next.js and Markdown.
Portfolio Starter Kit thumbnail

Next.js Portfolio with Blog

Easily create a portfolio with Next.js and Markdown.
Next.js Portfolio with Blog thumbnail

Content Wind

A lightweight Nuxt theme to build a Markdown driven personal website, based on Nuxt Content, TailwindCSS and Iconify.
Content Wind thumbnail
DeployView Demo