Skip to content

Instantly share code, notes, and snippets.

@yoshuawuyts
Last active January 3, 2016 09:59
Show Gist options
  • Save yoshuawuyts/8446529 to your computer and use it in GitHub Desktop.
Save yoshuawuyts/8446529 to your computer and use it in GitHub Desktop.
Zookeeper design doc

Zookeeper design doc

This document is split into the following sections:

Goals

The primary goal of building Zookeeper is to explore the client side MVC structure of Backbone, amplified with Facebook's React. Secondly we're going to attempt to handle Koa (node generators/yield framework) and wrap the Dropbox API to consume it as a service. Zookeeper will be built according to the RAPHT module pattern.

Definition of Done

Zookeeper is a small task manager. It will have the following features:

  • When visiting the app a user sees al his projects.
  • While in the overview mode, a user can create, update and delete projects.
  • When viewing a project a user the user is presented with an overview of his progress.
  • When interacting with a task a user can modify or delete it without leaving the screen.
  • While viewing a project, a user can create new tasks.

User interface

ui

Implementation

Application structure

chart

Data models

// Tasks model
{
  "task": {
    "id": int,
    "name": string,
    "content", string
  }
}

// Projects model
{
  "project": {
    "id": int,
    "name": string,
    "tasks", array
  }
}

// Projects collection
{
  "projects": array
}

Directory structure

.
├── api     // works with RAPHT modules
├── build
├── client  // works with RAPHT modules
│   ├── fonts
│   ├── images
│   ├── modules
│   ├── styles
│   └── vendor
├── tasks
└── tests
@yoshuawuyts
Copy link
Author

The data models are prone to change, I'm still working on my backbone + database translation knowledge, so this revision is not yet definitive.

@yoshuawuyts
Copy link
Author

Oh, and the backend architecture isn't displayed, but is basically the following:

  • Projects module (home view)
  • Tasks module (tasks view)
  • Dropbox wrapper as a consumed package by the above modules

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