Skip to content

samirdevuz/samirdev.uz

Repository files navigation

Samir Abdumo'minov Portfolio

Premium minimal portfolio for Samir Abdumo'minov, built with Next.js, TypeScript, Tailwind CSS, Framer Motion, and Lucide icons.

Features

  • One-page developer portfolio with polished sections, projects, blog previews, and contact links.
  • Editable blog system backed by local JSON content.
  • Hidden admin route at /admin for managing posts.
  • Signed HttpOnly admin session cookie.
  • SEO metadata, sitemap, robots file, and custom minimalist logo.
  • Light/dark theme support.

Local Setup

npm install
npm run dev

Open http://localhost:3000.

Admin Setup

Create .env or .env.local:

ADMIN_PASSWORD="replace-with-a-long-random-password"
ADMIN_SESSION_SECRET="replace-with-a-different-long-random-secret"

The admin link is intentionally not shown in the public command menu or navigation. Visit /admin directly.

For production on Vercel, add the same variables in Project Settings -> Environment Variables. Without ADMIN_PASSWORD, admin login is disabled.

Editing Blog Posts

Blog content lives in:

src/data/blog-posts.json

The admin UI writes to that file in local development. On Vercel/serverless, it writes to /tmp/blog-posts.json by default to avoid read-only source files. You can override that with BLOG_POSTS_FILE, but durable production edits should still move to a database or CMS such as Supabase, Neon, Sanity, or Vercel Blob because serverless runtime files are not permanent.

Scripts

npm run lint
npm run build

Deployment

This project is optimized for Vercel. Before deploying production admin features, set:

  • ADMIN_PASSWORD
  • ADMIN_SESSION_SECRET

Never commit real environment values.

About

Minimalistic portfolio website for Samir Abdumo'minov (@samirdevuz).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors