{"id":27645775,"url":"https://github.com/sayaliakbar/portfolio","last_synced_at":"2026-04-10T07:50:25.252Z","repository":{"id":286091131,"uuid":"960284168","full_name":"sayaliakbar/portfolio","owner":"sayaliakbar","description":"A full-featured, modern portfolio website built with the MERN stack (MongoDB, Express, React, Node.js). Includes project showcase, secure admin dashboard, contact form, resume upload, JWT authentication, and Cloudinary image management. Designed with responsive UI and smooth animations.","archived":false,"fork":false,"pushed_at":"2025-04-21T10:10:23.000Z","size":19201,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-24T01:12:27.907Z","etag":null,"topics":["admin-dashboard","cloudinar","framer-motion","fullstack-app","jwt-authentication","mern-stack","mongodb","muter","nodejs","nodemailer","porftolio-website","react","responsive-design","tailwindcss"],"latest_commit_sha":null,"homepage":"https://www.sayaliakbar.tech","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sayaliakbar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-04T07:02:59.000Z","updated_at":"2025-04-21T10:15:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"85f73606-9b06-480d-bd77-8b1194f39e6f","html_url":"https://github.com/sayaliakbar/portfolio","commit_stats":null,"previous_names":["sayaliakbar/portfolio"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayaliakbar%2Fportfolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayaliakbar%2Fportfolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayaliakbar%2Fportfolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayaliakbar%2Fportfolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sayaliakbar","download_url":"https://codeload.github.com/sayaliakbar/portfolio/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250540928,"owners_count":21447427,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin-dashboard","cloudinar","framer-motion","fullstack-app","jwt-authentication","mern-stack","mongodb","muter","nodejs","nodemailer","porftolio-website","react","responsive-design","tailwindcss"],"created_at":"2025-04-24T01:12:32.269Z","updated_at":"2026-04-10T07:50:20.173Z","avatar_url":"https://github.com/sayaliakbar.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Portfolio Website\n\n![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)\n![React](https://img.shields.io/badge/React-19.0.0-61dafb)\n![Node.js](https://img.shields.io/badge/Node.js-Express-green)\n![MongoDB](https://img.shields.io/badge/Database-MongoDB-green)\n\nA modern, responsive full-stack portfolio website built with the MERN stack (MongoDB, Express.js, React, and Node.js). This application showcases projects, skills, and provides administrative features for content management.\n\n![Image](https://github.com/user-attachments/assets/4b2a0e78-67c4-481d-abe9-75d6f44b4616)\n\n## Features\n\n- **Responsive Design**: Optimized for all device sizes\n- **Project Showcase**: Filterable gallery of projects with details\n- **Admin Dashboard**: Secure admin panel to manage content\n  - Project management (create, read, update, delete)\n  - Message management\n  - Resume upload and management\n- **Contact Form**: Allow visitors to send messages\n- **Authentication**: Secure JWT-based authentication system\n- **Image Management**: Cloud-based image storage with Cloudinary\n- **Animations**: Smooth page transitions and UI animations with Framer Motion\n\n## Technologies Used\n\n### Frontend\n\n- React 19\n- React Router v7\n- Framer Motion\n- Tailwind CSS\n- Axios\n- React Toastify\n- React Query\n\n### Backend\n\n- Node.js\n- Express.js\n- MongoDB (Mongoose)\n- JSON Web Token (JWT) for authentication\n- Bcrypt.js for password hashing\n- Multer for file uploads\n- Cloudinary for image storage\n- Nodemailer for email functionality\n- Express Rate Limit for API protection\n\n## Installation\n\n### Prerequisites\n\n- Node.js (v16 or higher)\n- MongoDB (local installation or MongoDB Atlas account)\n- Cloudinary account for image storage\n\n### Setup Instructions\n\n1. **Clone the repository**\n\n   ```\n   git clone https://github.com/yourusername/portfolio.git\n   cd portfolio\n   ```\n\n2. **Set up environment variables**\n\n   Create a `.env` file in the server directory with the following variables:\n\n   ```\n   # Server Configuration\n   PORT=5000\n   NODE_ENV=development\n\n   # MongoDB\n   MONGO_URI=your_mongodb_connection_string\n\n   # JWT\n   JWT_SECRET=your_jwt_secret\n   JWT_EXPIRE=24h\n\n   # Admin User\n   ADMIN_USERNAME=your_admin_username\n   ADMIN_PASSWORD=your_secure_password\n\n   # Cloudinary\n   CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name\n   CLOUDINARY_API_KEY=your_cloudinary_api_key\n   CLOUDINARY_API_SECRET=your_cloudinary_api_secret\n\n   # Email\n   EMAIL_SERVICE=your_email_service\n   EMAIL_USER=your_email_username\n   EMAIL_PASS=your_email_password\n   ```\n\n3. **Install server dependencies**\n\n   ```\n   cd server\n   npm install\n   ```\n\n4. **Install client dependencies**\n   ```\n   cd ../client\n   npm install\n   ```\n\n## Usage\n\n### Development Mode\n\n1. **Start the server**\n\n   ```\n   cd server\n   npm run dev\n   ```\n\n2. **Start the client (in a new terminal)**\n\n   ```\n   cd client\n   npm run dev\n   ```\n\n3. Access the application at `http://localhost:5173`\n4. Access the API at `http://localhost:5000`\n\n### Production Mode\n\n1. **Build the client**\n\n   ```\n   cd client\n   npm run build\n   ```\n\n2. **Start the server in production mode**\n   ```\n   cd ../server\n   npm start\n   ```\n\n## API Endpoints\n\n### Authentication\n\n- `POST /api/auth/login` - Login\n- `POST /api/auth/logout` - Logout\n- `POST /api/auth/refresh` - Refresh token\n\n### Projects\n\n- `GET /api/projects` - Get all projects\n- `GET /api/projects/featured` - Get featured projects\n- `GET /api/projects/:id` - Get a single project\n- `POST /api/projects` - Create a new project (auth required)\n- `PUT /api/projects/:id` - Update a project (auth required)\n- `DELETE /api/projects/:id` - Delete a project (auth required)\n\n### Messages\n\n- `POST /api/messages` - Send a message\n- `GET /api/messages` - Get all messages (auth required)\n- `PUT /api/messages/:id/read` - Mark a message as read (auth required)\n- `DELETE /api/messages/:id` - Delete a message (auth required)\n\n### Resume\n\n- `GET /api/resume` - Get resume info\n- `POST /api/resume/upload` - Upload resume (auth required)\n\n### Uploads\n\n- `POST /api/uploads/image` - Upload an image (auth required)\n- `DELETE /api/uploads/image` - Delete an image (auth required)\n\n## Scripts\n\n### Server\n\n- `npm start` - Start the server\n- `npm run dev` - Start the server with nodemon\n- `npm run generate-jwt-secret` - Generate a new JWT secret\n- `npm run setup-backups` - Set up database backup cron jobs\n- `npm run cleanup-images` - Clean up orphaned images\n- `npm run migrate-export` - Export data for migration\n- `npm run migrate-import` - Import data for migration\n- `npm run migrate-full` - Full migration process\n\n### Client\n\n- `npm run dev` - Start the development server\n- `npm run build` - Build for production\n- `npm run preview` - Preview production build\n- `npm run lint` - Run linting\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Author\n\nAli Akbar\n\n- GitHub: [https://github.com/sayaliakbar](https://github.com/sayaliakbar)\n- LinkedIn: [https://www.linkedin.com/in/sayaliakbar](https://www.linkedin.com/in/sayaliakbar)\n- Email: sayaliakbar@gmail.com\n\n---\n\nMade with ❤️ using the MERN Stack.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsayaliakbar%2Fportfolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsayaliakbar%2Fportfolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsayaliakbar%2Fportfolio/lists"}