Zeelow Gallery is a scalable and clean image carousel designed to handle a large user base and optimized for speed. This project is an evolution of a legacy commentary system that sought to replicate Zillow's gallery component. Zeelow Gallery builds on the legacy project by introducing a number of improvements:
- 🚀 Transition from
SQLiteto a more robust and scalableMongoDBdatabase - 👍 Server and client enhancements to handle extreme bursts in concurrent requests
- Completely revamped client-side code that behaves well when positioned behind a load balancer such as
Nginx
- Completely revamped client-side code that behaves well when positioned behind a load balancer such as
- 🎯 Database schema improvements
- Appropriate indexing based on most commonly requested endpoints
- 🚢 Dockerfile for rapid deployment
- Database server hosted on a single EC2 t2.micro
- 10 million
houserecords
- 10 million
- Node.js component server hosted on 4 EC2 t2.micros load balanced with Nginx
- Each request is a
GETrequest for a random API endpoint (a house withidbetween1and10,000,000)
- Node v10.13.0 (LTS as of May 2019) or higher
- Nodemon if using the default
npmscript - MongoDB for the database server
- Install dependencies with
npm install- After connecting to the database, from the root directory run
node database/mongoDB/seed.js- The main server file is
server/server.js-- If nodemon is already installed globally (it is not part of the dependencies), you may start the server vianpm run server-devfor development purposes ornpm startfor production -- The server uses port 3010 by default, but you may set it using an environment variableprocess.env.PORT
The client side is built using Parcel:
npm run dev: Builds the client-side files in development mode and does not do full bundling. This also activates watch mode by default so it rebuilds whenever you make and save changes
npm run build: Builds the client-side files in production mode, with full bundling. This reduces file size, but is less useful in debugging (some errors do not provide as much detail as in development mode)
PORT: Port used by the HTTP server; defaults to3010MONGO_DB: MongoDB host address; defaults to localhost

