This is a full-stack personal portfolio website built to showcase my projects, skills, and contact information. The project utilizes a React-based frontend, a Node.js/Express backend, and a MongoDB database to manage dynamic content.
- Live Demo
- Features
- Technologies Used
- Getting Started
- Environment Variables
- Deployment
- Contact
- License
You can access the live version of the website here.
- Home Page: Introduction to the portfolio with a personalized greeting and links to Resume and Leave a Quote.
- About Page: Information about me, including a brief introduction, tech stack, and links to download my resume or contact me.
- Projects Page: A card-style display of projects showcasing images, descriptions, and technologies used. Includes links to project GitHub repositories.
- Contact Page: A form where users can contact me. The form uses Nodemailer to send email notifications.
- Leave a Quote Page: Users can submit a motivational quote, which is saved in a MongoDB database and displayed in a dynamic list.
- React: JavaScript library for building user interfaces.
- Tailwind CSS: Utility-first CSS framework for styling.
- React-Router-DOM: For routing between different pages.
- React-Icons: For adding icons to the UI.
- React-Confetti: Confetti animation for successful form submissions.
- Node.js & Express: Backend server for handling API routes and serving the React frontend.
- Nodemailer: Library to send emails from the server.
- Mongoose: Object Data Modeling (ODM) library for MongoDB to manage database interactions.
- MongoDB: NoSQL database for storing user-submitted quotes.
- Frontend: Deployed on Vercel.
- Backend: Deployed on Heroku.
- MongoDB Atlas: Used for cloud-hosted MongoDB.
- Node.js: v14 or above
- npm or yarn for managing dependencies
- MongoDB: You need a MongoDB connection URI for storing quotes.
- Heroku CLI (for deploying backend)
- Vercel CLI (optional, for deploying frontend)
-
Clone the repository:
git clone https://github.com/PaulP1406/Personal-portfolio cd portfolio-website
-
Install Dependencies:
- Install server dependencies:
cd server npm install
- Install client dependencies:
cd ../client npm install
- Install server dependencies:
-
Backend:
- Set environment variables as explained in Environment Variables.
- Run the backend:
cd server npm start
- By default, the server will run on port 5000.
-
Frontend:
- Run the frontend:
cd ../client npm start
- The React application will run on port 3000.
- Run the frontend:
-
Access the Website:
- Go to
http://localhost:3000
to view the frontend.
- Go to
Create a .env
file in the root of your server
directory with the following variables (use your own if you wanted to test):
MONGO_URI=<your-mongo-db-connection-uri>
EMAIL=<your-email-address>
PASSWORD=<your-email-password-or-app-password>
PORT=5000