A premium, high-performance personal portfolio website built with a Node.js/Express backend and a modern Tailwind-powered frontend. This project features a robust contact system, an admin dashboard, and a sleek dark-themed UI.
- Premium UI/UX: Dark-themed design with custom animated cursors, smooth transitions, and glassmorphism.
- Full-Stack Architecture: Express.js server serving static HTML pages with clean URL routing.
- Secure Contact System: Integrated contact form with:
- Database Persistence: Messages stored in MongoDB.
- Email Notifications: Real-time alerts via NodeMailer (Gmail).
- Rate Limiting: Protection against spam (10 requests per 15 mins).
- Admin Dashboard: A secure, token-protected interface to view, manage, and delete incoming messages.
- CV Download: Dedicated route for direct CV downloads.
- Responsive Design: Fully optimized for mobile, tablet, and desktop views.
- Health Monitoring:
/api/healthendpoint for server and database status checks.
- Frontend: HTML5, CSS3, Tailwind CSS (via CDN), Google Fonts, Material Symbols.
- Backend: Node.js, Express.js.
- Database: MongoDB (Mongoose ODM).
- Tools: NodeMailer, Express-Rate-Limit, Dotenv, Nodemon.
portfolio/
├── backend/ # Node.js/Express server logic
│ ├── models/ # Mongoose database schemas
│ ├── routes/ # API and Admin routes
│ ├── server.js # Main application entry point
│ └── .env.example # Template for environment variables
├── frontend/ # Static HTML pages
│ ├── home.html
│ ├── experience.html
│ ├── project.html
│ └── ...
├── public/ # Shared assets (Images, CV, etc.)
└── README.md # Project documentation
git clone https://github.com/Jatzz26/Portfolio.git
cd PortfolioNavigate to the backend directory and create a .env file based on .env.example:
cd backend
cp .env.example .envEdit the .env file with your credentials:
PORT: Server port (default: 3000)MONGODB_URI: Your MongoDB connection stringADMIN_TOKEN: A secret string for dashboard accessEMAIL_USER&EMAIL_PASS: Gmail App Password for notificationsNOTIFICATION_EMAIL: Where you want to receive contact alerts
npm installDevelopment Mode (Auto-restart):
npm run devProduction Mode:
npm startThe server will be running at http://localhost:3000.
To access the admin dashboard, navigate to:
http://localhost:3000/admin?token=YOUR_ADMIN_TOKEN
Replace YOUR_ADMIN_TOKEN with the value set in your .env file.
This project is personal property. Feel free to use it as inspiration for your own portfolio.