Production-ready cybersecurity consulting portfolio for Apoorv Bandyopadhyay. The site is a Vite, React, TypeScript, and Tailwind CSS single-page application based on the exported Kinetic Sentinel design system.
- React
- TypeScript
- Vite
- Tailwind CSS
- Lucide React
src/components/layout- navigation and footersrc/components/sections- portfolio page sectionssrc/components/ui- small reusable presentation componentssrc/data/portfolio.ts- centralized content, links, credentials, and TODO placeholderspublic/assets- profile image assetspublic/certifications- credential badge assets and credential JSON filespublic/resume- downloadable resume PDFpublic/robots.txtandpublic/sitemap.xml- production SEO files
Install dependencies:
pnpm installRun the development server:
pnpm run devCreate a production build:
pnpm run buildPreview the production build:
pnpm run previewUpdate portfolio content in src/data/portfolio.ts. This includes navigation, hero copy, expertise categories, sector experience, professional experience, selected engagements, credentials, social links, email, and resume path.
Missing values are intentionally marked with TODO comments in the data file rather than invented:
- Fiverr Pro profile URL
- CEH Practical verification URL
- Preferred CRTP verification URL, if different from the exported design reference
Profile image:
- Source asset copied from
Assets/Profile_picture.jpg - Optimized WebP used at
public/assets/profile-picture.webp
Resume:
- Replace
public/resume/Apoorv_Bandyopadhyay_Fiverr_Pro_Resume.pdfwith an updated PDF using the same filename, or updateportfolio.person.resumeUrl.
Credentials:
- CRTP uses
public/certifications/crtp.avif - CEH Practical uses
public/certifications/ceh-practical.png - PNPT and eCTHP use badge URLs from the provided W3C credential JSON files because local image files were not present in the project
- Replace PNPT/eCTHP badge URLs with local files in
public/certificationsif local badge images are later added
- Create a new GitHub repository.
- Initialize git locally if needed.
- Add the project files.
- Commit the production portfolio.
- Push to the GitHub repository.
Example:
git init
git add .
git commit -m "Build portfolio website"
git branch -M main
git remote add origin <your-github-repository-url>
git push -u origin main- Import the GitHub repository into Vercel.
- Use the Vite defaults:
- Build command:
pnpm run build - Output directory:
dist
- Build command:
- Deploy the project.
- Confirm the generated Vercel URL loads correctly.
The domain will be managed in GoDaddy and the website will be hosted on Vercel.
- Add the custom domain in the Vercel project domain settings.
- Use the exact DNS records shown by Vercel for the specific project and domain.
- Add or update those records in GoDaddy DNS management.
- Configure both domain variants if needed:
example.comwww.example.com
- Choose the preferred canonical domain in Vercel.
- Configure the non-preferred variant to redirect to the preferred domain.
- Wait for DNS verification.
- Vercel will automatically provision HTTPS after the domain verifies.
Do not hardcode generic DNS values from examples. Always use the records shown in the Vercel dashboard for the actual project.
Before launch:
- Replace
https://example.com/inindex.html,public/robots.txt,public/sitemap.xml, andsrc/data/portfolio.ts. - Update Open Graph image URLs in
index.html. - Confirm the sitemap uses the final canonical domain.
- Rebuild and redeploy.
Professional experience, education, skills, and certifications were taken from the provided resume files. Engagements are anonymized and avoid client names, vulnerability counts, financial impact, and sensitive technical details.