{"repo":"kirkwat/portfolio-blog","free":true,"listed":false,"github":"https://github.com/kirkwat/portfolio-blog","clone":"git clone https://github.com/kirkwat/portfolio-blog.git","description":"Next.js personal portfolio/blog site where a site owner can showcase their work and experiences.","language":"TypeScript","stars":44,"topics":["nextjs","sanity-io","tailwindcss","typescript","blog","portfolio","portfolio-blog","portfolio-template","portfolio-website","best-portfolio-website"],"license":"MIT","category":"dev-tools","readme_excerpt":"Portfolio / Blog Personal portfolio and blog for zamirazenil.com — a statically generated site with an embedded CMS for content editing. Stack - Next.js 16 (App Router, Turbopack, Cache Components / PPR) - Sanity Studio v6, embedded at /studio , with Visual Editing and TypeGen - Tailwind CSS 4 + shadcn/ui - Bun as package manager; oxlint + oxfmt for linting/formatting - Deployed on Vercel Development Environment variables ( .env.local ): Variable Purpose ------------------------------- ------------------------------------------------------- NEXT PUBLIC SANITY PROJECT ID Sanity project ID NEXT PUBLIC SANITY DATASET Dataset name ( production ) SANITY API READ TOKEN Viewer token — required for draft mode / visual editing NEXT PUBLIC BASE URL Canonical site origin (https required in production) GOOGLE ANALYTICS ID Optional GA4 measurement ID ( G-… ) Pull real values with vercel env pull .env.local . Commands Command What it does --------------------------- ------------------------------------------------------- bun dev Dev server (runs Sanity typegen first) bun run build Production build + Studio manifest extract bun run typegen Regenerate sanity.types.ts from schema + GROQ queries bun run type-check Next typegen + tsc --noEmit bun run lint / lint:fix oxlint / oxfmt + oxlint --fix bun run format Format with oxfmt Content model Documents: post (blog), project (portfolio). Singletons: home , about , postList , projectList , settings . Schemas live in sanity/schemas/ ; GROQ queries ","default_branch":null,"files":null,"tree":[],"storefront":"/r/kirkwat","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/kirkwat/portfolio-blog/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}