/shopify-backend-challenge

An image auction platform to support good causes

Primary LanguageTypeScript


🏷️ 🖼️

Biddify

A platform to auction images in support of charitable causes!

View Demo ·

Table of Contents
  1. About The Project
  2. Getting Started
  3. Contact
  4. Acknowledgements

About The Project

Inspired by charitable auction events, Biddify is a digital auction house for images where artists and photographers can specify a charitable organization that they are supporting

Features:

  • Image upload, watermarking and access control for original images
  • Create auctions and place bids for images
  • Basic authentication for users
  • Create/update/delete user profiles

Built With

  • Node/Express backend in Typescript
  • AWS S3 to store images
  • MongoDB/Mongoose for auction, bid, user information
  • Jest/Supertest for testing
  • Bcrypt/Passport for user authentication

Continued in Acknowledgements.

Getting Started

This repo holds both the frontend (in progress) and backend so that they are accessible at a single link.

/server contains the node backend

/client contains the react frontend

Prerequisites

  • Node v12.18.0
  • Typescript v3.9.5
  • An available MongoDB cluster: a cluster was created for this project on MongoDB Atlas but for local development you will need to start your own.
  • AWS S3 bucket for image storage

Installation

  1. Clone the project
git clone https://github.com/Jonathancui123/shopify-backend-challenge.git
  1. Move into the server folder
    cd server
  2. Install NPM packages and development packages
    npm install
    npm install --dev
  3. (Still within /server), rename .env.example to .env and then enter environment variables for MongoDB and AWS as described
  4. To build and start the app:
    npm run build
    npm run serve

Testing

We test with Jest, Supertest and MongoDB memory server to simulate database calls. The mock database is configured in jest-mongodb-config.js. Chai is also used for the expect function.

To run tests, simply run:

  npm run test

Coverage reports should be created as well.

Contact

Jonathan Cui - j62cui@uwaterloo.ca

Project Link: https://github.com/Jonathancui123/shopify-backend-challenge

Acknowledgements

I used Microsoft's Typescript/Node Starter to jumpstart user profile and user authentication functionalities

Multer was also used to support image uploads