Skip to content

merogersdev/dev-portfolio

Repository files navigation

My Portfolio Site

Screenshot

Description

Full-Stack portfolio app utilizing the popular MERN stack (MongoDB, Express, React, Node), JWT Tokens, SendGrid API for sending contact form emails, and Google Cloud Storage for storing project screenshots. Users can register and then login to create, edit and delete projects. Learned about implementing a true state management solution with Redux Toolkit. Main pain point was contending with scope creep and asynchronous lifecycles in Redux. Deployed to AWS.

Core Features

  • Responsive mobile-first design
  • CRUD functionality (portfolio projects)
  • Register/Login users
  • JWT Token authentication
  • Contact form utilizes SendGrid API to send emails
  • Project screenshots uploaded to Google Cloud Storage
  • State management via Redux Toolkit
  • Vite development tool
  • Deployment via Docker Containers

Development

Server

  1. Rename backend/example.env to backend/.env and add in credentials for MongoDB, SendGrid API, Google Cloud Storage
  2. Generate your JWT secret eg. node -e "console.log(require('crypto').randomBytes(256).toString('base64'));"
  3. Run development server with yarn run dev. Runs on default port 5000 unless otherwise specified in .env file.

Client

Run Vite development server with yarn run dev. Runs on default port 5173.

Deployment

This application can be deployed to production via docker compose

  1. Rename example.docker-compose.yml to docker-compose.yml and add in the environment variables from backend/.env.
  2. Deploy with yarn run deploy.

Tags

HTML5 SASS JavaScript React Vite Redux NodeJS Express.js MongoDB JWT Docker Google Cloud