Skip to content

59n/folio

Repository files navigation

Portfolio Website

A minimal, dark-themed personal portfolio website built with Next.js 16, TypeScript, and Tailwind CSS 4. Inspired by adryd.com, prpl.wtf, and matdoes.dev.

๐ŸŽฏ Live Demo

๐Ÿ‘‰ View Live Demo

๐ŸŽจ View Theme Demo - Preview and switch between 17 different portfolio themes!

What You'll See

The live demo showcases all features of the portfolio:

๐Ÿ  Homepage

  • Minimal dark-themed design with centered layout
  • Social icons (GitHub, Email, Solo.to)
  • Navigation buttons to Blog and Projects sections
  • Clean typography and spacing

๐Ÿ“ Blog Page

  • Search bar with debounced input
  • Multiple filters: Tags, Year, and Has Files (filter posts with/without attachments)
  • Pagination controls
  • Example blog posts with tags and metadata
  • See the "Has Files" filter in action

๐Ÿ“„ Blog Post Page

  • Full markdown rendering with beautiful typography
  • File Attachments section at the bottom showing:
    • PDF documents with document icons
    • ZIP archives with download icons
    • Text files with file icons
    • File sizes and download links
  • Example: "Complete Guide to Next.js Deployment" post demonstrates file attachments

๐Ÿ’ผ Projects Page

  • Grid layout of GitHub repositories
  • Project cards with descriptions
  • Language indicators
  • Star counts
  • Updated dates
  • "View Live" links for projects with homepages
  • Pagination for multiple pages

๐ŸŽจ Theme Demo Page

  • Preview 17 different portfolio themes
  • See color schemes, typography, and styling
  • Switch between themes instantly
  • Each theme has unique personality and branding

๐ŸŽฎ Interactive Features

  • Try the easter eggs mentioned below
  • Test the search and filter functionality
  • Navigate through paginated content
  • Explore different themes on the demo page

โœจ Features

  • ๐ŸŽจ 17+ Portfolio Themes - Choose from multiple pre-configured themes or create your own
  • ๐ŸŽจ Theme Demo Page - Preview all available themes at /demo
  • ๐ŸŽจ Minimal Dark Theme - Clean, modern design with fully customizable colors
  • ๐Ÿ“ Markdown Blog - Write blog posts in markdown with frontmatter support
  • ๐Ÿ“Ž File Attachments - Attach files (PDFs, ZIPs, documents) to blog posts for guides and resources
  • ๐Ÿ’ผ GitHub Projects Integration - Automatically fetches and displays your GitHub repositories
  • ๐Ÿ” Advanced Search & Filters - Search blog posts and filter by tags, year, and file attachments with pagination
  • ๐Ÿ“„ Pagination - Navigate through projects and blog posts with smart page controls
  • ๐ŸŽฎ Hidden Easter Eggs - Multiple interactive easter eggs throughout the site
  • โš™๏ธ Fully Configurable - Everything customizable via centralized config/site.ts
  • ๐Ÿ“ฑ Fully Responsive - Works beautifully on all devices
  • ๐ŸŒˆ Rainbow Mode - Toggle colorful overlay with keyboard shortcut
  • ๐Ÿ–ผ๏ธ Image Support - Add images to blog posts with automatic styling

๐Ÿš€ Getting Started

Prerequisites

  • Node.js 20+ (recommended for Next.js 16)
  • npm, yarn, or pnpm

Installation

  1. Clone the repository:
git clone https://github.com/59n/folio.git
cd folio
  1. Install dependencies:
npm install
  1. Configure your site: Edit config/site.ts with your information:
  • Site name, title, description
  • Social links (GitHub, email, solo.to)
  • Colors and theme
  • GitHub username for projects
  1. Run the development server:
npm run dev

Open http://localhost:3000 to see your site.

๐Ÿ“ Blog Posts

Create markdown files in content/posts/ to add blog posts. See BLOG_README.md for detailed instructions.

Example post structure:

---
title: "My First Post"
date: "2024-01-15"
tags: ["javascript", "react", "tutorial"]
excerpt: "A short description of your post"
attachments:
  - name: "Guide PDF"
    url: "/attachments/guide.pdf"
    size: "245 KB"
    type: "pdf"
---

Your blog post content here! Supports full markdown.

๐Ÿ“Ž File Attachments

You can attach files to blog posts, perfect for guides, templates, or resources:

  1. Place files in public/attachments/ directory
  2. Add to frontmatter:
attachments:
  - name: "Complete Guide PDF"
    url: "/attachments/guide.pdf"
    size: "245 KB"
    type: "pdf"
  - name: "Template File"
    url: "/attachments/template.txt"
    size: "1.2 KB"
    type: "txt"

Supported file types:

  • PDF documents
  • ZIP/RAR/7Z archives
  • DOC/DOCX documents
  • XLS/XLSX spreadsheets
  • TXT text files
  • External URLs (any file type)

Attachments appear at the bottom of blog posts with:

  • File type icons
  • File names and sizes
  • Download links
  • Hover effects

Filter by attachments: Use the "Has Files" filter on the blog page to show only posts with or without attachments.

โš™๏ธ Configuration

All customization is done through config/site.ts. See CONFIG_README.md for detailed configuration options.

Quick Config Examples

Change Site Name:

name: 'YourName',
title: 'Your Name',
header: {
  title: 'Your Name',
  subtitle: 'Your subtitle here',
}

Change GitHub User for Projects:

projects: {
  githubUser: 'yourusername',
  perPage: 6, // Projects per page
  sortBy: 'updated', // 'updated' | 'created' | 'stars'
}

Change Colors:

colors: {
  background: '#000000',
  foreground: '#ffffff',
  text: {
    primary: '#ffffff',
    secondary: '#9ca3af',
    muted: '#6b7280',
  },
  // ... more color options
}

Toggle Footer:

footer: {
  enabled: true, // Set to false to hide footer
}

๐ŸŽฎ Easter Eggs

The site includes several hidden easter eggs:

  • Konami Code: โ†‘ โ†‘ โ†“ โ†“ โ† โ†’ โ† โ†’ B A - Classic gaming easter egg
  • Secret Words: Type secret, hello, magic, surprise, or hidden anywhere
  • Title Click: Click the site title 5 times quickly
  • Rainbow Mode: Press Ctrl/Cmd + Shift + R to toggle colorful overlay

Try them out on the live demo!

๐Ÿ—๏ธ Project Structure

.
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ blog/
โ”‚   โ”‚   โ”œโ”€โ”€ [slug]/      # Individual blog post pages
โ”‚   โ”‚   โ””โ”€โ”€ page.tsx     # Blog listing page
โ”‚   โ”œโ”€โ”€ projects/
โ”‚   โ”‚   โ””โ”€โ”€ page.tsx     # Projects page
โ”‚   โ”œโ”€โ”€ layout.tsx       # Root layout with metadata
โ”‚   โ”œโ”€โ”€ page.tsx         # Home page
โ”‚   โ””โ”€โ”€ globals.css      # Global styles and animations
โ”œโ”€โ”€ components/
โ”‚   โ”œโ”€โ”€ Header.tsx       # Site header with social icons
โ”‚   โ”œโ”€โ”€ Footer.tsx       # Site footer
โ”‚   โ”œโ”€โ”€ ClickableTitle.tsx # Title component with easter egg
โ”‚   โ”œโ”€โ”€ BlogFilters.tsx  # Blog search and filter controls
โ”‚   โ”œโ”€โ”€ Attachments.tsx  # File attachments display component
โ”‚   โ””โ”€โ”€ EasterEgg.tsx   # Easter egg system
โ”œโ”€โ”€ config/
โ”‚   โ””โ”€โ”€ site.ts          # Centralized site configuration
โ”œโ”€โ”€ content/
โ”‚   โ””โ”€โ”€ posts/           # Blog post markdown files
โ”œโ”€โ”€ lib/
โ”‚   โ””โ”€โ”€ posts.ts         # Blog post utilities and parsing
โ”œโ”€โ”€ public/              # Static assets (favicons, images, etc.)
โ”‚   โ””โ”€โ”€ attachments/    # Blog post file attachments
โ”œโ”€โ”€ netlify.toml         # Netlify deployment configuration
โ””โ”€โ”€ package.json

๐Ÿ› ๏ธ Technologies

  • Next.js 16 - React framework with App Router
  • React 19 - Latest React with improved performance
  • TypeScript 5.9 - Type safety
  • Tailwind CSS 4 - Utility-first CSS framework
  • gray-matter - Markdown frontmatter parsing
  • remark - Markdown processing and HTML conversion
  • @tailwindcss/typography - Beautiful typography for markdown content

๐Ÿ“ฆ Scripts

npm run dev      # Start development server
npm run build    # Build for production
npm start        # Start production server
npm run lint     # Run ESLint

๐Ÿš€ Deployment

Netlify

This project is configured for Netlify deployment with netlify.toml. Simply:

  1. Connect your GitHub repository to Netlify
  2. Netlify will automatically detect Next.js and deploy
  3. No additional configuration needed!

The build command and output directory are already configured in netlify.toml.

Manual Build

npm run build

The build output will be in the .next directory.

Environment Variables

No environment variables are required. All configuration is done through config/site.ts.

๐ŸŽจ Customization Guide

Themes

  • Preview Themes: Visit /demo to see all available themes
  • Switch Themes: Copy any theme config file (e.g., config/steampunk_site.ts) to config/site.ts
  • Create Custom Theme: Edit config/site.ts with your own colors, labels, and branding

Colors & Theme

Edit config/site.ts โ†’ colors section

Layout & Spacing

Edit config/site.ts โ†’ layout section

Content

  • Header: Edit config/site.ts โ†’ header
  • Navigation: Edit config/site.ts โ†’ navigation
  • Footer: Edit config/site.ts โ†’ footer

Blog

  • Add markdown files to content/posts/
  • Configure in config/site.ts โ†’ blog
  • Add file attachments to posts (see BLOG_README.md)
  • Filter posts by tags, year, and file attachments

Projects

  • Configure GitHub user in config/site.ts โ†’ projects
  • Customize display options (stars, language, dates)
  • Exclude specific repositories via excludePatterns

๐Ÿ“š Documentation

Key Features Documentation

File Attachments:

  • Place files in public/attachments/ directory
  • Add attachments array to blog post frontmatter
  • Supports local files and external URLs
  • Automatic file type icons and styling
  • Filter posts by "Has Files" on blog page

Images in Blog Posts:

  • Place images in public/ directory
  • Use standard markdown: ![Alt text](/image.jpg)
  • Automatic styling with rounded corners and shadows
  • Supports both local and external images

Blog Filters:

  • Search: Full-text search across titles, excerpts, and content
  • Tags: Filter by post tags
  • Year: Filter by publication year
  • Has Files: Filter posts with/without attachments
  • All filters work together and persist in URL

๐Ÿค Contributing

Feel free to fork and customize for your own portfolio! This is a personal portfolio template, so contributions should align with the minimal design philosophy.

๐Ÿ“„ License

MIT

๐Ÿ™ Credits

Design inspired by:


Built with โค๏ธ using Next.js 16, React 19, and TypeScript

About

Nextjs portfolio page with blog and projects section

Resources

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •  

Languages