An ultra-minimalist blog for Dr. Aysajan Eziz, embracing radical minimalism with only essential features. Built with Next.js 15, TypeScript, and Tailwind CSS.
- Ultra-minimal Homepage with essential introduction
- Blog System with full MDX support for rich content
- Tag-based Organization for content categorization
- Search Functionality for finding specific posts
- Colophon Page documenting the minimalist philosophy
- MDX Support with mathematical notation (KaTeX) and syntax highlighting
- Typography-focused Design using system monospace fonts
- SEO Optimized with meta tags, Open Graph, and RSS feed
- Static Generation for maximum performance
- Zero Client JavaScript for basic functionality
- Next.js 15 with App Router for optimal performance
- Static Site Generation with server components only
- TypeScript for type safety and better development experience
- Tailwind CSS with Typography plugin only
- Minimal Bundle Size - reduced by >50% through aggressive minimalism
- Node.js 18+
- npm or yarn
-
Clone the repository:
git clone <repository-url> cd personal-portfolio-web-app
-
Install dependencies:
npm install
-
Start development server:
npm run dev
-
Open your browser to
http://localhost:3000
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run type-check # Run TypeScript checkspersonal-portfolio-web-app/
βββ app/ # Next.js App Router (ultra-minimal)
β βββ blog/ # Blog listing and [slug] dynamic routes
β βββ search/ # Search functionality
β βββ tags/ # Tag listing and [tag] dynamic routes
β βββ colophon/ # Philosophy and design notes
β βββ [feed.xml|sitemap.xml|robots.txt|manifest.json]/ # SEO routes
β βββ layout.tsx # Root layout with minimal navigation
βββ components/ # Minimal React components (server-only)
β βββ MDXComponents.tsx # Basic MDX component overrides
β βββ Navigation.tsx # Static navigation (no client JS)
β βββ Footer.tsx # Simple footer with RSS link
βββ content/ # MDX content files
β βββ posts/ # All blog posts (unified content type)
βββ lib/ # Utility functions
β βββ mdx.ts # Simplified MDX processing utilities
βββ public/ # Static assets
Create a new MDX file in content/posts/ with this frontmatter schema:
---
title: "Your Post Title"
date: "2024-01-15"
excerpt: "A brief description of your post"
author: "Dr. Aysajan Eziz"
tags: ["operations research", "data science"]
category: "Research" # or "Project" for legacy content
published: true
featured: false
---
# Your Post Title
Your content here with full MDX support, including:
- Mathematical equations: $E = mc^2$
- Code blocks with syntax highlighting
- Images and media
- Basic React componentsRequired fields:
title: string- Post titledate: string- Date in YYYY-MM-DD format
Optional fields:
excerpt: string- Brief description for listingsauthor: string- Author nametags: string[]- Array of tags for categorizationcategory: string- Category (used for legacy research/project content)published: boolean- Whether to show the post (defaults to true)featured: boolean- Whether to feature the post
All content is unified as blog posts with different tags:
- Regular blog posts: General content with any tags
- Research papers: Use
tags: ["research"]andcategory: "Research" - Projects: Use
tags: ["project"]andcategory: "Project"
Content has been migrated from the original v0 website. Research papers and projects are now unified as blog posts in content/posts/ with appropriate tags and categories for organization.
The site uses Tailwind CSS with radical minimalism:
- Typography: System monospace fonts only (
ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace) - Colors: Minimal color palette focused on readability
- Components: Basic Tailwind classes only, no complex CSS
- Layout: Typography-first design prioritizing content over visuals
Key configuration files:
- Metadata:
app/layout.tsxfor SEO and minimal site metadata - Navigation:
components/Navigation.tsxfor static navigation links - Content:
lib/mdx.tsfor content processing utilities
The site supports LaTeX math notation via KaTeX:
Inline math: $E = mc^2$
Block math:
$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$Syntax highlighting is provided by Highlight.js:
def calculate_statistics(data):
return {
'mean': np.mean(data),
'std': np.std(data)
}- Push your code to GitHub
- Connect your repository to Vercel
- Deploy automatically
- Configure your custom domain (www.aysajaneziz.com)
See DEPLOYMENT.md for detailed deployment instructions.
The site can be deployed to:
- Netlify
- GitHub Pages
- Traditional web hosting (static export)
- Meta tags for all pages
- Open Graph and Twitter Card support
- Structured data for better search engine understanding
- Sitemap generation (
/sitemap.xml) - RSS feed (
/feed.xml) - robots.txt configuration
Add your analytics tracking codes to environment variables:
NEXT_PUBLIC_GA_ID=G-XXXXXXXXXX
NEXT_PUBLIC_HOTJAR_ID=XXXXXXX- Next.js 15: React framework with App Router
- TypeScript: Type-safe JavaScript with ES2022 target
- Tailwind CSS: Utility-first CSS framework with Typography plugin
- MDX: Markdown with JSX components via next-mdx-remote
- KaTeX: Mathematical notation rendering
- Highlight.js: Code syntax highlighting
- ESLint: Code linting and formatting
- TypeScript: Static type checking
- Prettier: Code formatting (configure as needed)
- Static Generation: All pages are pre-rendered for maximum speed
- Server Components: Zero client JavaScript for basic functionality
- System Fonts: Uses system monospace fonts, no external font loading
- Minimal Bundle: Dramatically reduced JavaScript payload through aggressive minimalism
If you're customizing this portfolio template:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
For questions about this ultra-minimalist blog system:
- Review the project philosophy in
CLAUDE.md - Check the deployment guide in
DEPLOYMENT.md(if created) - Understand the minimalist approach described in
/colophon
This project is Dr. Aysajan Eziz's ultra-minimalist blog. Feel free to use it as inspiration for your own minimalist blog, but please replace all personal content with your own.
Built with radical minimalism using Next.js 15, TypeScript, and Tailwind CSS