Skip to content

wistant/portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wistant.me · License: MIT

A pixel-perfect, open-source portfolio, blog, and shadcn component registry. Built with Next.js 16, Tailwind CSS v4, and React 19.

→ Live: wistant.me


Overview

Stack

Layer Technology
Framework Next.js 16 (App Router)
Styling Tailwind CSS v4
UI shadcn/ui + Radix UI
Content MDX (next-mdx-remote)
Runtime React 19
Package pnpm
Deploy Vercel

Features

  • Clean, modern design with Light/Dark themes
  • Component registry powered by the shadcn CLI
  • Blog and documentation system via MDX
  • SEO-optimized (JSON-LD schema, sitemap, robots.txt)
  • AI-ready with /llms.txt support
  • Analytics-ready (PostHog / OpenPanel)
  • PWA-installable

Project Structure

src/
├── app/            # App Router pages, layouts, API routes
├── components/     # Shared UI and domain components
│   ├── portfolio/  # Portfolio-specific sections
│   ├── blog/       # Blog-specific components
│   └── doc/        # Documentation components
├── content/        # MDX content (blog posts, component docs)
├── data/           # Static typed data (portfolio facts, projects...)
├── registry/       # shadcn component registry
├── config/         # Site & registry configuration
├── hooks/          # React hooks
├── lib/            # Core utilities and libraries
├── types/          # Shared TypeScript types
└── utils/          # Pure utility functions

Getting Started

# Clone the repo
git clone https://github.com/wistant/portfolio.git
cd portfolio

# Install dependencies
pnpm install

# Start the dev server
pnpm dev

Requires Node.js 22.x and pnpm >= 9.

Environment Variables

Copy .env.example to .env.local and fill in the required values:

cp .env.example .env.local

Development Commands

pnpm dev             # Start the dev server (Turbopack)
pnpm build           # Production build
pnpm lint            # ESLint
pnpm format:write    # Prettier
pnpm check-types     # TypeScript strict check
pnpm registry:build  # Build the shadcn registry
pnpm push            # Run the release orchestrator (tooling/push.sh)
pnpm sync            # Sync branch with GitHub (tooling/sync.sh)

CI / CD

This project uses a strict atomic-commit and release pipeline:

Workflow Trigger Purpose
ci.yml Push / PR Lint, typecheck, build validation
release.yml Push to main Changeset versioning + GitHub Release

Locally, the tooling/ directory contains:

  • push.sh — Quality guard before pushing (format, lint, changeset intent)
  • sync.sh — Rebase-based upstream synchronization
  • make-release-description.sh — Generates structured release notes from git log

Contributors

Contributors

Stats

Alt


License

Licensed under the MIT License.

You are free to use, fork, and adapt this project. If you do, please remove my personal information before publishing your own version.

About

My personal hub, portfolio & blog. A place to document my projects, technical notes, and web development journey.

Topics

Resources

Code of conduct

Stars

Watchers

Forks

Packages

 
 
 

Contributors