Skip to content

Big Beill's Greenhouse

A showcase project demonstrating web-development, networking, and cybersecurity skills.

Big Beill's Greenhouse is a personalized project created by Mackenzie Neill, a graduate of Trent University's Computer Science program. This project serves as a platform to explore and refine skill's in web-development, networking, and cybersecurity. As an experimental project, it's a continuous work in progress and isn't being actively monitored for security vulnerabilities. Consequently, data protection is limited, and users should exercise caution when using the application.

A live demo can be found at: www.big-beills-greenhouse.ca

General Overview

Author: Mackenzie Neill
Start date: December 15th, 2023

Features

  • Create, read, update, and delete recipes
  • User authentication (JWT, bcrypt password hashing)
  • Responsive design (works on desktop + mobile)
  • RESTful API design

Tech Stack

  • Frontend: React, Vite, TypeScript, SCSS
  • Backend: Node.js, Express.js, Javascript
  • Database: MongoDB, PostgreSQL
  • Authentication: JSON Web Tokens (JWT), bcrypt
  • Deployment: Vercel (frontend), Railway (backend)

Security Features

  • HTTPS connection (only on cloud deployment)
  • HTTP-only cookies
  • Sanitization of all data from clients (cookies, query, params, and body)
  • Strict CORS policy
  • Password requirements, masking and encryption

Setting Up the Project

  1. Open the run_website.txt file in the root directory.
  2. Set the URL to the path where you saved this project.
  3. Save the file with a .bat extension (or respective file type if you're not using windows).
  4. Inside the client folder, create a .env file and add:
  5. 
            VITE_SERVER_LOCATION=http://localhost:4000
        
  6. Inside the `server` folder, create a `.env` file and add:
  7. 
            SESSION_SECRET=
            LOCAL_ENVIRONMENT=true
        
  8. Fill in a value for `SESSION_SECRET` (choose a strong secret).
  9. Run the `.bat` file (assuming your on windows)

Setting up the databases

  1. Create your own MongoDB cluster online.
  2. Update the connection string in `server/config/connectMongo.js`.
  3. Add the following line to the server’s `.env` file:
  4. 
        MONGO_DB_PASSWORD=
        
  5. Fill in your MongoDB password.
  6. Go to `/canadian-nutrient-file/DB_Setup.md` for instructions and code.