Personal portfolio and project admin for vitovec.com, built with Next.js App Router, TypeScript, Prisma, PostgreSQL, next-intl, tRPC, NextAuth, and Vercel Blob.
- Next.js 16 + React 19
- TypeScript
- Tailwind CSS
- Prisma + PostgreSQL
- tRPC + React Query
- next-intl for Czech and English routes
- NextAuth with GitHub allowlist
- Vercel Blob for admin uploads
- Resend for contact form delivery
pnpm install
cp .env.example .env.local
pnpm devOpen http://localhost:3000.
Use .env.example as the template for local variables. Required production services:
- PostgreSQL database
- GitHub OAuth application
- Vercel Blob store
- Resend API key for contact form email
- OpenAI API key for admin translation tools
For Vercel Blob, attach a Blob store to the Vercel project. Locally, pull Vercel variables with vercel env pull or add BLOB_READ_WRITE_TOKEN manually.
pnpm dev # start the local dev server
pnpm lint # run ESLint
pnpm build # create a production build
pnpm db:seed # seed the databasesrc/app- App Router routes and API handlerssrc/components- reusable UI and feature componentssrc/server- server-only auth, database, queries, and tRPC routerssrc/messages- Czech and English UI messagesprisma- schema, migrations, and seed data
Before shipping changes:
pnpm lint
pnpm buildAfter deployment, verify robots.txt, sitemap.xml, page metadata, structured data, and Core Web Vitals for the public Czech and English pages.