Skip to content

Repository files navigation

vishalv.com

Personal site for Vishal V. Built on top of Timothy Lin’s Tailwind Next.js Starter Blog and customized for long-form notes, hacks, health logs, and a bookshelf.

Stack

  • Next.js 15.2.6 (App Router) + React 19.0.1
  • Contentlayer 2 + MDX for typed Markdown content
  • Tailwind CSS 4 with a custom palette
  • Pliny utilities (layouts, newsletter, kbar search, RSS)
  • TypeScript + ESLint + Prettier + Husky

Structure

Path Purpose
app/ Routes, layouts, API handlers.
components/ Shared UI pieces.
layouts/ Page/article layouts via Pliny.
data/frontiers/ Personal knowledge frontiers: publishable notes/theses, research notes, templates.
data/showcase/ Public-facing content collections, metadata, and support data.
css/ Tailwind + Prism styles.
scripts/ Post-build tasks (RSS, search index).
public/ Static assets and generated search.json.

Philosophy

  • Keep writing portable (Markdown in git).
  • Prioritize calm, legible layouts.
  • Automate chores (RSS, search, tag counts) during yarn build.
  • Add enhancements (theme switch, kbar, newsletter) without blocking core reading.

Commands

yarn install
yarn dev      # http://localhost:3000
yarn build    # runs Contentlayer + postbuild (RSS/search)
yarn start
yarn lint

Environment variables (.env.local + hosting platform):

  • BUTTONDOWN_API_KEY and BUTTONDOWN_SECURITY_TOKEN for newsletter signup via Buttondown. Set siteMetadata.newsletter.provider = null to hide it.

Vercel Web Analytics is wired in app/layout.tsx via @vercel/analytics. Enable Analytics for the project in Vercel to start collecting data on deployed traffic.

Content

  • Notes: data/frontiers/publish/notes/*.md/notes/[slug]
  • Theses: data/frontiers/publish/theses/*.md/theses/[slug]
  • Research notes: data/frontiers/research-notes/*.md stays raw, then yarn publish:research-notes generates publishable copies directly in data/frontiers/publish/notes/*.md. Hashtags become frontmatter tags, raw modified becomes date, and referenced images are copied to public/static/research-notes/**.
  • Obsidian templates: data/frontiers/obsidian-templates/** stays private/frontiers-only and is excluded from Contentlayer.
  • Hacks: data/showcase/hacks/*.md/hacks
  • Bookshelf: data/showcase/bookshelf/*.md/bookshelf + /bookshelf/[slug]
  • Health logs/routines: data/showcase/health/**
  • Author profile: data/showcase/authors/default.md

Run yarn dev or yarn build after editing content so research notes and Contentlayer regenerate.

Credits

Thanks to Timothy Lin for the original MIT-licensed starter. This repo keeps his license notice and adds Vishal’s customizations.

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages