Shivam Verma

Shivam Verma — Portfolio

Personal portfolio website built with Next.js, showcasing my experience, projects, and contact information.

Live site: stoppieboy-github-io.vercel.app


Tech Stack

Layer Technology
Framework Next.js 14 (App Router)
Styling Tailwind CSS
Data fetching Apollo Client + GitHub GraphQL API
KV store Vercel KV
Font Urbanist via next/font/google
Deployment Vercel

Features


Project Structure

app/
  layout.jsx          # Root layout, metadata (OG + Twitter cards), Navbar
  page.jsx            # Page composition — assembles all sections
  api/get-repos/      # API route — fetches pinned GitHub repos via GraphQL
components/
  Home.jsx            # Hero section
  About.jsx           # About section
  Experience.jsx      # Experience section
  Projects.jsx        # Projects section (client component)
  Contact.jsx         # Contact section
  Navbar.jsx          # Fixed navbar with mobile hamburger menu
  SocialLinks.jsx     # Vertical social icon strip
  Skill.jsx           # Inline skill highlight chip
data.json             # Content data — experience entries, about text, email
public/assets/        # Static icons and images
styles/globals.css    # Global styles and Tailwind component layer

Getting Started

Prerequisites

Local development

  1. Clone the repo:
    git clone https://github.com/stoppieboy/stoppieboy.github.io.git
    cd stoppieboy.github.io
    
  2. Install dependencies:
    npm install
    
  3. Create a .env.local file:
    GITHUB_ACCESS_TOKEN=your_github_token_here
    KV_REST_API_URL=your_vercel_kv_url
    KV_REST_API_TOKEN=your_vercel_kv_token
    
  4. Run the development server:
    npm run dev
    

    Open http://localhost:3000.

Build for production

npm run build
npm start

Lint

npm run lint

Tests

npm test

Content Updates

All site content is driven by data.json — no component code changes needed for routine updates:

{
  "email": "you@example.com",
  "about_text": "...",
  "experience": [
    {
      "title": "Job Title",
      "company": "Company Name",
      "duration": "Month Year – Month Year",
      "description": ["Bullet one.", "Bullet two."]
    }
  ]
}

Pinned GitHub projects are fetched live from the GitHub API — pin/unpin repos on GitHub and they update automatically.


Deployment

The site is deployed on Vercel. Push to main to trigger a production deploy. Environment variables (GITHUB_ACCESS_TOKEN, KV_REST_API_URL, KV_REST_API_TOKEN) must be set in the Vercel project settings.