/VLC-Board

🎨 An r/place recreation for VLC.

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

VLC r/Place

Reddit's r/Place inspired canvas allowing real-time pixel placements at a one-minute interval. Hosted in collaboration with the school student council for Spirit Week featuring 120 students all creating art simultaneously.

Features

  • Scrollable and pannable camera
  • Pixel placement live in real time across clients using Socket.io
  • Pixels and cooldown stored server side in MongoDB database
  • Pixel owner fetched and displayed on hover
  • Google sign in restricted to school domain
  • Google OAuth token verified on each request
  • expand.js expands the canvas in real time

Screenshots

Default view:


Hovering pixel, displaying user that placed it:


Signed in to non school domain:


Signed in:


Orange colour selected:


Placed orange pixel, on placement cooldown:

Installation

Clone the repo

git clone https://github.com/TheRedstoneRadiant/VLC-Board
cd VLC-Board

Install dependencies

npm install

Copy .env.example to .env

cp .env.example .env
nano .env
Edit environment variables
  • MONGO_URI: Primary MongoDB database URI where pixels and users are stored
  • MONGO_URI2: Secondary MongoDB database URI, stores pixel ownership
  • GOOGLE_SECRET: Google OAuth Secret (see Create Authorization Credentials)
  • GOOGLE_CLIENT_ID: Google OAuth Client ID
  • DATABASE: MongoDB database name, can be anything

Run database schema

npm run schema

Start server

npm run dev

VLC Board 2022

(50x50 -> 100x50 -> 100x100 -> 128x128)

VLC Board 2021

(100x100)