SRS Analysis Models - SSD2015/TeamGG GitHub Wiki

Domain model

PlantUML

(The source is in this page's commit history)

Relational model

Group table

Name Type Note
id int PRIMARY KEY AUTO_INCREMENT
name varchar(255)
number tinyint NULL Group number (like 1, 2, 3). It might be changed so we doesn't store it in the primary key

Project table

Name Type Note
id int PRIMARY KEY AUTO_INCREMENT
name varchar(255)
group_id int Foreign key to group table
description text DEFAULT "" I think the application should set like 250 maximum length but text type is used to support possible requirement changes
logo varchar(255) DEFAULT "" Path to the image file

User table

Name Type Note
id int PRIMARY_KEY AUTO_INCREMENT
username varchar(255) For KU login use [email protected], otherwise it is username without @...
password varchar(255) For KU login the password is NOT stored. Otherwise it MUST be hashed (scrypt?).
type tinyint 0=voter, 1=instructor, 2=organizer. (2 can do everything 1 can, 1 can do everything 0 can but not vice-versa)
name varchar(255) NULL DEFAULT NULL Human name (eg. Manatsawin instead of b5610545757)
organization varchar(255) NULL Their organization. Not parsed by application
group_id int NULL DEFAULT NULL Foreign key to group. Can be null if user does not belongs to any group. Having a group make user type 0 able to access group backoffice

Organizer can allow students access beforehand by adding their usernames into this table.

Token table

Note: If Play framework has good session system it can be used instead of this

Name Type Note
id varchar(255) PRIMARY_KEY Generated randomly
user_id int Foreign key to user table

VoteCategory table

Name Type Note
id int PRIMARY_KEY AUTO_INCREMENT
name varchar(255)
type tinyint 0=best of, 1=star

Configuration table

Name Type Note
key varchar(255) PRIMARY_KEY
value text NULL

Example of configuration keys: allow_voting, announcement, allow_group_edit

Vote table

Name Type Note
id int PRIMARY_KEY AUTO_INCREMENT
category_id int Foreign key to vote_category table
user_id int Foreign key to user table
project_id int Foreign key to project table
score int DEFAULT 1 For best of vote it is always 1

Additional tables

These additional tables may or may not be used:

  • Screenshots
  • AppBuild

If you need it, please design it or ask @whs to make one.

Swagger API

The API is documented as Swagger API at Swagger UI (source)