A modern, production-ready personal portfolio built with React Router, Vite, TypeScript, and a Node.js/Express backend. Showcases projects, skills, certifications, and contact information, with an admin panel for content management.
- β‘οΈ Fast, optimized, and SEO-friendly
- π οΈ Built with React Router, TypeScript, and Vite
- π¨ Tailwind CSS for rapid UI development
- π± Responsive and mobile-friendly
- π Dynamic skills and certifications (fetched from backend)
- ποΈ Project showcase with images and categories
- π¬ Contact page with email integration
- π§© Modular component structure
- π³ Docker-ready for deployment
- πΈοΈ PWA support (manifest, favicons, offline-ready)
- π Analytics and performance insights (Vercel Analytics, Speed Insights)
- π Admin panel for managing portfolio content
- Frontend: React, React Router, Vite, TypeScript, Tailwind CSS
- Backend: Node.js, Express, MongoDB, Mongoose
- Admin: React + Vite (separate app)
- Other: Docker, PWA, SEO meta tags, Open Graph, Email (Nodemailer), Analytics
portfolio/
β
βββ admin/ # Admin panel (React + Vite)
βββ frontend/ # Main portfolio frontend (React, Vite, TypeScript)
βββ server/ # Backend API (Node.js, Express, MongoDB)
βββ README.md # Project documentation
app/components/β React components (Navbar, Sidebar, Home, Projects, Skills, Contact, etc.)app/routes/β Route files for each pageapp/assets/β Images and iconspublic/β Favicons, manifest, robots.txt, sitemap, Open Graph images
controllers/β API controllers (projects, certificates, contact, etc.)models/β Mongoose schemas (Project, Certificate)routes/β Express routes (public, admin, auth)utils/β Utilities (email, error handling, logger)views/β Email templates (Pug)public/β Static files
- React + Vite app for managing portfolio content (projects, skills, certificates, etc.)
- Node.js (v18+ recommended)
- npm or yarn
- MongoDB
Clone the repository and install dependencies for each package:
# Clone the repository
git clone https://github.com/Shreekant-04/portfolio.git
cd portfolio
# Install frontend
cd frontend
npm install
# Install backend
cd ../server
npm install
# Install admin panel
cd ../admin
npm installcd frontend
npm run devVisit http://localhost:5173
cd server
npm startAPI runs on http://localhost:2204 by default.
cd admin
npm run devVisit http://localhost:5174 (or as configured).
# Frontend
cd frontend
npm run build
# Backend
cd ../server
npm run build # (if applicable)Build and run with Docker:
docker build -t portfolio-app .
docker run -p 3000:3000 portfolio-appYou can deploy the build output to any static hosting or Node.js server, including Vercel, Netlify, AWS, Azure, DigitalOcean, and more.
GET /api/v1/public/projectsβ List all projectsGET /api/v1/public/certificateβ List all certificatesPOST /api/v1/public/contactβ Send a contact message (email integration)
- Includes
manifest.json, favicons,robots.txt, andsitemap.xmlfor SEO and PWA support. - Meta tags for Open Graph and Twitter Cards are set up for all main pages.
portfolio
ββ admin
β ββ eslint.config.js
β ββ index.html
β ββ package.json
β ββ public
β β ββ vite.svg
β ββ README.md
β ββ src
β β ββ App.css
β β ββ App.jsx
β β ββ assets
β β β ββ react.svg
β β ββ index.css
β β ββ main.jsx
β ββ vite.config.js
ββ frontend
β ββ .dockerignore
β ββ .react-router
β β ββ types
β β ββ +future.ts
β β ββ +routes.ts
β β ββ +server-build.d.ts
β β ββ app
β β ββ +types
β β β ββ root.ts
β β ββ routes
β β ββ +types
β β ββ contact.ts
β β ββ home.ts
β β ββ projects.ts
β β ββ search.ts
β β ββ skills.ts
β ββ app
β β ββ app.css
β β ββ assets
β β β ββ images
β β β β ββ avatar-1.png
β β β β ββ avatar-2.png
β β β β ββ avatar-3.png
β β β β ββ avatar-4.png
β β β β ββ blog-1.jpg
β β β β ββ blog-2.jpg
β β β β ββ blog-3.jpg
β β β β ββ blog-4.jpg
β β β β ββ blog-5.jpg
β β β β ββ blog-6.jpg
β β β β ββ icon-app.svg
β β β β ββ icon-design.svg
β β β β ββ icon-dev.svg
β β β β ββ icon-photo.svg
β β β β ββ icon-quote.svg
β β β β ββ logo-1-color.png
β β β β ββ logo-2-color.png
β β β β ββ logo-3-color.png
β β β β ββ logo-4-color.png
β β β β ββ logo-5-color.png
β β β β ββ logo-6-color.png
β β β β ββ logo.ico
β β β β ββ logo.svg
β β β β ββ my-avatar.png
β β β β ββ project-1.jpg
β β β β ββ project-2.png
β β β β ββ project-3.jpg
β β β β ββ project-4.png
β β β β ββ project-5.png
β β β β ββ project-6.png
β β β β ββ project-7.png
β β β β ββ project-8.jpg
β β β β ββ project-9.png
β β β ββ uifaces-cartoon-image.jpg
β β ββ components
β β β ββ Common
β β β β ββ Loader.css
β β β β ββ Loader.tsx
β β β β ββ PageNotFOund.jsx
β β β ββ contact
β β β β ββ Contact.tsx
β β β ββ home
β β β β ββ Home.tsx
β β β ββ Navbar.tsx
β β β ββ projects
β β β β ββ Projects.tsx
β β β β ββ Untitled-1.css
β β β ββ Resuable
β β β β ββ Reusable.jsx
β β β ββ search
β β β β ββ Search.tsx
β β β ββ Sidebar.tsx
β β β ββ skills
β β β ββ Skills.tsx
β β ββ root.tsx
β β ββ routes
β β β ββ contact.tsx
β β β ββ home.tsx
β β β ββ projects.tsx
β β β ββ search.tsx
β β β ββ skills.tsx
β β ββ routes.ts
β β ββ utils
β β ββ gtag.ts
β β ββ schema.ts
β ββ Dockerfile
β ββ package-lock.json
β ββ package.json
β ββ public
β β ββ favicon.ico
β β ββ favicon128x128.ico
β β ββ favicon16x16.ico
β β ββ favicon192x192.ico
β β ββ favicon256x256.ico
β β ββ favicon32x32.ico
β β ββ favicon48x48.ico
β β ββ favicon512x512.ico
β β ββ favicon64x64.ico
β β ββ manifest.json
β β ββ not-found.jpg
β β ββ og-image-contact.png
β β ββ og-image-home.png
β β ββ og-image-projects.png
β β ββ og-image-skills.png
β β ββ profile.jpg
β β ββ robots.txt
β β ββ sitemap.xml
β ββ react-router.config.ts
β ββ README.md
β ββ tsconfig.json
β ββ vite.config.ts
ββ LICENSE
ββ README.md
ββ server
ββ app.js
ββ config
β ββ database.js
β ββ gridFs.js
β ββ multerConfig.js
ββ controllers
β ββ adminController.js
β ββ authController.js
β ββ errorController.js
β ββ publicController.js
ββ ecosystem.config.js
ββ index.js
ββ models
β ββ certificate.js
β ββ projectSchema.js
ββ nodemon.json
ββ package-lock.json
ββ package.json
ββ public
β ββ favicon.ico
β ββ robots.txt
ββ routes
β ββ adminRoutes.js
β ββ authRoutes.js
β ββ certificateRoute.js
β ββ Project.js
β ββ publicRoutes.js
ββ utils
β ββ appError.js
β ββ catchAsync.js
β ββ email.js
β ββ logger.js
ββ vercel.json
ββ views
ββ mail
ββ auto_reply.pug
ββ message.pug
ββ otp.pug
