GitHub - pokharelsandeep333-commits/Portfolio: My projects and IT experience, built with React and GSAP with a Gemini assistant · GitHub
Skip to content
pokharelsandeep333-commitsPublic

About

My projects and IT experience, built with React and GSAP with a Gemini assistant

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Personal Portfolio

View Live Site »

React 19 Vite 8 Tailwind CSS GSAP Docker


📖 Overview

A modern, highly interactive personal portfolio website engineered to showcase projects, skills, and professional experience. Built with a focus on performance, premium aesthetics, and dynamic user experiences, the platform integrates a custom AI assistant ("Digital Sandeep") to answer visitor queries in real-time. It provides a responsive, mobile-first design tailored for technical hiring managers and recruiters.

✨ Featured Projects

This portfolio showcases five production-grade projects:

Project Stack Description
Molecular Zettelkasten Next.js 16, Gemini API, Firebase, Docker, self-hosted server AI-powered knowledge management platform with Semantic RAG, deployed via GitHub Actions CI/CD
SandeepCloud Self-hosted Ubuntu server, Docker Compose, Nginx, MariaDB, Cloudflare Self-hosted Nextcloud cloud storage with enterprise-grade SSL and CDN
DQA Automation Suite PowerShell 5.1, WPF/XAML, WMI/CIM, SQLite Zero-prompt hardware QA tool iterated through 11 versions at DSU IT
LLM-Wiki Python, Obsidian, AI Agents, Git AI-agent-powered personal knowledge base with 125+ concept notes
This Portfolio React 19, Vite 8, GSAP, Tailwind CSS, Docker Cinematic hero, integrated AI assistant, custom cursor, scroll animations

🛠️ Tech Stack

Frontend & UI

  • React 19 – Component-based architecture for scalable UI.
  • Vite 8 – Lightning-fast HMR and optimized production builds.
  • Tailwind CSS & Custom Vanilla CSS – Utility-first CSS alongside custom design tokens.
  • GSAP – Robust, performant scroll-based and micro-interactions.

Backend & AI

  • Vercel Serverless – Hosts the /api/chat serverless backend.
  • Google Gemini API: gemini-3.8-flash for the AI chatbot, with gemini-3.5-flash-lite as the fallback when the primary is unavailable.
  • Upstash Redis – Handles IP-based rate limiting for the chat API.
  • Zod – Strict schema validation for chat requests.

Testing & Analytics

Architecture & Deployment

This project utilizes a hybrid deployment architecture:

  • Self-hosted Docker – The frontend UI is containerized using a multi-stage Docker build (Alpine Node + Nginx) and hosted on my own server, where Watchtower pulls new images from Docker Hub. Moved 2026-10-28: the server left AWS EC2 and now sits behind a Cloudflare Tunnel.
  • Vercel Serverless – The AI backend (/api/chat) runs as a Vercel Serverless Function to abstract API keys and offload processing from the self-hosted server.
  • GitHub Actions CI/CD – Automatically injects the VITE_API_URL secret during the Docker build so the self-hosted static site can communicate with the Vercel backend.

📁 Project Structure

api/                 # Vercel Serverless Functions (AI Backend)
├── chat.js          # Gemini LLM integration & rate limiting
src/
├── assets/          # Static media (images, videos, fonts)
├── components/      # React functional components
│   ├── About.jsx
│   ├── Certifications.jsx
│   ├── Contact.jsx
│   ├── CustomCursor.jsx
│   ├── DQASimulator.jsx
│   ├── Experience.jsx
│   ├── Footer.jsx
│   ├── Hero.jsx
│   ├── MagneticButton.jsx
│   ├── Navbar.jsx
│   ├── Projects.jsx
│   ├── ResumeView.jsx
│   ├── Skills.jsx
│   ├── Terminal.jsx
│   └── Terminal.test.jsx
├── data/            # Static datasets used in components
│   ├── projects.js
│   └── skills.js
├── test/            # Vitest testing setup
├── App.css          # App-specific styling
├── App.jsx          # Main application component routing & layout
├── index.css        # Global CSS variables, resets, and Tailwind directives
└── main.jsx         # Application entry point

🚀 Local Setup

Prerequisites

1. Clone the repository

git clone https://github.com/pokharelsandeep333-commits/Portfolio.git
cd Portfolio

2. Install dependencies

npm install

3. Configure Environment Variables

Create a .env file at the root of the project. Note that production AI keys are securely stored in Vercel. For local development, you only need VITE_API_URL if you want to point your local frontend to a live Vercel backend. If you are testing the serverless functions locally (e.g., via Vercel CLI), you will also need the AI API keys:

# Contact Form
VITE_FORMSPREE_URL=https://formspree.io/f/your_form_id

# AI API Keys (Only required if running the serverless backend locally)
GEMINI_API_KEY=your_gemini_api_key
UPSTASH_REDIS_REST_URL=your_upstash_url
UPSTASH_REDIS_REST_TOKEN=your_upstash_token

# Vercel Backend Security (Comma-separated URLs for strict CORS)
ALLOWED_ORIGINS=https://your-frontend-domain.com,http://localhost:5173

# Vercel Serverless URL (Optional: points local frontend to remote Vercel backend)
VITE_API_URL=https://your-project.vercel.app/api/chat

4. Run the development server

npm run dev

Open your browser and navigate to http://localhost:5173.

🧪 Testing

npm run test

🐳 Docker Deployment

# Build the Docker image
docker build -t portfolio-app .

# Run the container on port 8080
docker run -p 8080:80 -d portfolio-app

Built with ❤️ and React.

About

My projects and IT experience, built with React and GSAP with a Gemini assistant

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages