Skip to content

Instantly share code, notes, and snippets.

Last active August 21, 2020 23:12
Show Gist options
  • Save victoriahuynh/f0798d440f3c11ae746122568abc8de1 to your computer and use it in GitHub Desktop.
Save victoriahuynh/f0798d440f3c11ae746122568abc8de1 to your computer and use it in GitHub Desktop.
Our group project overview for INFO 441. Actual source code is hidden behind GitHub Classroom.

Team Members: Victoria Huynh, Jerry Lin, Jeffrey Wang

Project Description

Our project is a collaborative online project that allows users to contribute to a piece of community artwork. Users will be able to place pixels of varying colors on a large, blank canvas. A user will only be able to place pixels in gated quantity and time intervals, so the goal is to see what people create when they work together.

The target audience for our application is a general population of Internet users who may stumble across the site or be shown it by their friends. In particular, our audience will likely be anyone who is bored, creative-minded, and interested in working as part of a whole toward a shared, open-ended goal. We anticipate people will want to use our application, especially during this isolated time, because they miss a wider sense of community. People who are stuck at home lately have also been looking for outlets of creative expression and our site can help with that.

Our project is inspired by r/place, a social experiment launched by Reddit on April Fools’ Day 2017 that lasted 72 hours. The experiment was commended for how it managed to ultimately reflect the communities that made up Reddit, as well as Internet culture as a whole. We are building our application in the hopes of capturing this collaborative spirit again in a society that has changed a lot from 3 years ago. Our project will also continue running instead of having a finite lifespan, in the hopes that it will continue to be a living document of Internet culture. Additionally, since ours is targeted toward a more general audience than Reddit, those involved may interact with the canvas and form communities in a different way that will be sociologically intriguing.

As the project creators, we ourselves used r/place in 2017 and found it engaging to follow over its brief lifespan. The blank canvas facilitated an incredible amount of communal creativity and gave the people the opportunity to interact across very different communities and demographics, which we feel is something definitely worth replicating in our current time.

Technical Description

Architectural Diagram

User Story Summary Table

Priority User Description Technical Implementation
P0 As a user I want to be able to create an account to participate Use database to store credentials and Redis to authenticate users and store sessions
P0 As a user I want to be able to lay down a pixel in the color I want Use Redis to store locations (coordinates) and colors
P0 As a user who made a mistake I want to be able to change the color of preexisting pixels Use Redis to store locations (coordinates) and colors. When a new entry has the same coordinates as a preexisting entry, overwrite the old color data with the new color data
P0 As a user who is missing out on social interactions because of COVID-19 I want to collaborate with and meet new people Create user account and join channels to talk to like-minded people
P1 As a user looking for a challenge I want to play a minigame that challenges me to place pixels based on a reference image Randomly select photo from a photo database
P1 As a user who wants to organize an activity with friends I want to be able to create a new, private canvas Create a new Redis table for each canvas
P2 As a careless user I want to be able to undo my actions Use database to store user actions


  • api/canvas/stats/{canvas/user/channel}:

  • GET: retrieves canvas/user/channel statistics

  • api/canvas/state:

  • GET: retrieves the current state of the canvas (the color of each pixel)

  • api/canvas/draw:

  • POST: draw a pixel

  • Will have to communicate with the database that stores the canvas state as well as the database that stores canvas details/history

  • api/canvas/users:

  • POST: create user

  • GET: authenticate user

  • PATCH: update user

  • DELETE: delete user

  • api/canvas/channels:

  • POST: create channel

  • GET: get list of channels

  • DELETE: delete user

  • PATCH: update channel

  • api/canvas/channels/{channel}:

  • POST: create message

  • PATCH: update message

  • GET: get messages

  • DELETE: delete message

  • api/canvas/history:

  • GET: retrieves a historical snapshot that was taken of the canvas

  • api/canvas/newimage:

  • GET: retrieves a random image from a database of images for the users to imitate

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment