Welcome to the source code of my dynamic, full-stack personal portfolio! This website is designed to showcase my projects, research publications, events, and achievements in an interactive and visually appealing manner.
- Modern & Responsive UI: Built with HTML5, vanilla JavaScript, and Tailwind CSS. Features a sleek dark theme with glassmorphism effects and smooth micro-animations.
- Dynamic Content: All major sections (Projects, Events, Certificates, Publications) are fetched dynamically from a MongoDB database, ensuring the portfolio is always up-to-date.
- Secure Admin Dashboard: A dedicated
/adminroute protected by Google OAuth allows authorized users to manage (Create, Read, Update, Delete) portfolio content directly from the browser without touching the code. - Interactive Filtering: Easily filter projects by category (e.g., AI/ML, Data Science, Web App) through an intuitive UI.
- Integrated Contact Form: Allows visitors to easily reach out via FormSubmit.
- Frontend: HTML5, Vanilla JavaScript, Tailwind CSS, FontAwesome
- Backend: Node.js, Express.js
- Database: MongoDB Atlas
- Authentication: Google Sign-In API (for the Admin Panel)
- Node.js (v14 or higher)
- A MongoDB Atlas cluster (or local MongoDB instance)
- A Google Cloud Console project (for OAuth credentials)
-
Clone the repository:
git clone https://github.com/Syeed7682/portfolio-main.git cd portfolio-main -
Install dependencies:
npm install
-
Configure Environment Variables: Create a
.envfile in the root directory (or set environment variables locally) and add your MongoDB URI and port:MONGODB_URI=your_mongodb_connection_string PORT=3000
-
Set Up Google OAuth (Admin Panel):
- In
admin.html, update thedata-client_idin the Google Sign-In<div id="g_id_onload">with your own Client ID. - Update the
authorizedEmailvariable in theadmin.htmlscript block to match your personal Google email.
- In
-
Run the Application:
npm start
The server will start at
http://localhost:3000and automatically seed initial data to your MongoDB if the collections are empty.
index.html: The main landing page showcasing the portfolio.admin.html: The secure dashboard for managing content.server.js: The Express.js backend handling API requests and database connections./image: Directory storing all static assets, project screenshots, and profile pictures.
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ by Kha. Mo. Syeed Asif