Monday, May 20, 2019

Project Start to Finish - Collaborative Pixel Canvas: Staring Up - Initial Requirements

Hello, my name is Justin Baker and this series of posts will follow the development of a personal project to develop a full stack application from start to finish. The idea for this project is to implement something akin to Reddit's /r/place.

This is a continuation of my previous where I detailed what tools I would using. This post will continue where I left off and detail some initial requirements for this project.

Requirements 

There will be two major components for this project. The first that I will focus on will be the front end that is responsible for displaying the current state of the canvas. The second is the backend that will be responsible for maintaining the history of changes to the canvas, validating input, synchronizing users, etc.

I will focus on higher level requirements and detail more specific requirements when I move onto more specific implementation.

Front-End Requirements

  •  Display a grid of colored squares, representing an arbitrary x by x pixel canvas.
  • Support user system
    • Register
    • Login
    • Guest
  • Allow user to select cell and change the color.
    • May be restricted by timer and color choice to have reasonable bandwith usage.
  • Display cell info.
    • Last modified: [Timestamp]
    • Modified by: [User]
    • Activity level [color] (use mean and deviation to determine color?)
  • Zoom in and out.
    • Panning when zoomed in.
  • Support Desktop browsers & be at least viewable on mobile.
  • Update in real time or regularly with authoritative server state.

Back-End Requirements

  •  Maintain database for the following
    • Users
      • Login & Authentication
      • Input history
    • Tiles
      • Tiles will make up canvas
      • History of edits
  • Server side validation 
    • Ensure changes are propagated to all clients
    • Enforce timers on tile changes
    • Only accept valid changes
These requirements can be flushed out more as the project progresses and I decide to add or remove features. However, as a solo project I want to prioritize getting something working and will leave it at this for now.

On my next post I'll go over setting up a development environment and to start working with Phaser.

No comments:

Post a Comment

Project Start to Finish - Collaborative Pixel Canvas: Staring Up - Development Environment

Hello, my name is Justin Baker and this series of posts will follow the development of a personal project to develop a full stack applicatio...