A modern, responsive portfolio and blog website built with Next.js, featuring AI research insights, data science content, and professional services. Built with contemporary web development practices for optimal performance and SEO.
Visit the live website at randalolson.com
serve)src/
βββ app/ # Next.js App Router
β βββ blog/ # Blog listing page
β βββ search/ # Search functionality
β βββ resume/ # Resume page
β βββ work-with-me/ # Services page
β βββ [year]/[month]/[day]/[slug]/ # Dynamic blog posts
β βββ layout.tsx # Root layout
β βββ page.tsx # Homepage
β βββ globals.css # Global styles
βββ components/
β βββ layout/ # Navigation, footer
β βββ ui/ # Reusable UI components
β βββ theme-toggle.tsx # Theme switching
βββ lib/
βββ content.ts # Content loading utilities
βββ search.ts # Search functionality
βββ utils.ts # Helper functions
git clone https://github.com/rhiever/rhiever.github.io.git
cd rhiever.github.io
npm install
npm run dev
open http://localhost:3000
npm run build
This generates a static export in the dist/ directory, ready for deployment.
_posts/ directory---
layout: post
title: "Your Post Title"
date: 2025-01-15 10:00:00.000000000 -08:00
description: "Brief description for SEO"
keywords: "keyword1, keyword2, keyword3"
categories: ["category1", "category2"]
tags: ["tag1", "tag2"]
---
Your post content in Markdown...
public/assets/YYYY/MM/ directorynpm run build to regenerate static filesThis site is deployed on Railway using static export with the serve package.
package.json overrides serveβs pinned compression dependency to 1.8.2
to fix a memory leak when clients disconnect during compressed responses.
Keep the override until serve includes a patched version.
railway.json configurationnpm ci && npm run buildnpx serve dist -l $PORT -s*.railway.app URLrandalolson.com)dist/serve package hosts these files with proper SPA routing (-s flag)main branch automatically trigger new deployments# Build the site
npm run build
# Test production serving locally
npm run start:prod
railway.json)The deployment is configured via railway.json:
{
"build": {
"builder": "NIXPACKS",
"buildCommand": "npm ci && npm run build"
},
"deploy": {
"startCommand": "npx serve dist -l ${PORT:-3000} -s",
"healthcheckPath": "/",
"restartPolicyType": "ON_FAILURE",
"restartPolicyMaxRetries": 3
}
}
No environment variables required for basic functionality. Railway automatically provides:
PORT - The port to bind to (Railway assigns this)Colors, fonts, and spacing are defined in tailwind.config.ts and src/app/globals.css. The design system supports:
Content and code Β© 2026 Dr. Randal S. Olson. All rights reserved.
Catalog: https://www.randalolson.com/store/. Checkout and fulfillment: https://store.randalolson.com/ (separate Randy Olson Data Art shop).
Internal store operating guide: catalog ownership, artwork,
shop-specific API access, release checks, analytics, and known limitations.
Repository docs and production files are not website content; only reduced
artwork previews belong in public/assets/store/.