README.md 5.88 KB
Newer Older
Michaela DeForest's avatar
Michaela DeForest committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# **Team 3 Project Area**

## Table of Contents
- [Team members](#team-members)
- [Product Owner](#product-owner)
- [Faculty](#faculty)
- [Technologies](#technologies)
- [Project Overview](#Project Overview)
- [Project Plan](#Project Plan)
- [Fund Module](#Fund Module)
- [Resource Module](#Resource Module)


## Team Members

* [Erik Subatis](ers739@g.harvard.edu)
* [Gregory Retter](grr486@g.harvard.edu)
* [Joshua Markovic](jom5985@g.harvard.edu)
* [Shantha Kumari Rajendran](rajendran@g.harvard.edu)
* [Sharjil Khan](shk305@g.harvard.edu)
* [Zane Hernandez](zah693@g.harvard.edu)

## Product Owner

* Nitya Timalsina

## Faculty

* Annie Kamlang
* Eric Gieseke
* Hannah Riggs

## Technologies

* Programming Languages
    * Java
    * Javascript
* Data Persistence
    * Dynamo DB
    * S3
* Misc.
    * React
    * DropWizard
    * IntelliJ
    * Node.js
    * Shards

## Project Overview

This repository is set for the development of one quarter of the OneStep Relief
Platform. Specifically the code and assets stored here are for the 
organization, definition, and implementation of the platform's Fund and
Resource Modules. Each of these modules will be further elaborated on in their
own sections as seen below.

## Project Plan

1. Sprint 1
    1. Fund Module
2. Sprint 2
3. Sprint 3
4. Sprint 4

## Fund Module

### Introduction
The Fund Module facilitates all the crowdfunding and general funding functions 
within the OneStep Relief Platform. Such function include creating a relief 
project fund and the reception and distribution of funds. The module allows for 
the creation, update and management of Crowdfunds, which represent a 
fundraising goal for a designated purpose; concrete examples could include 
building a new school or purchasing food/beds for disaster stricken areas.

### Requirements

The requirements of the OneStep Relief Platform's Fund Module are:
* Create and Manage Crowfunds of for OneStep Relief Projects
* Transfer funds to/from Crowdfunds via blockchain utility service

### Organization

The following outlines the layout of the fund module portion of Team 3's 
OneStep Relief Repository.

#### Back-End

This is where the fund module's back-end code and tests are stored. These subsections are 
further divided into three main folders: API, Model, and Service. 
All three use the following path: org.onestep.relief.crowfund

##### API

This subsection contains the REST API for the Fund Module. 
Utilizing DropWizard, the code contained here collects requests and sends 
responses between the UI of the front-end and the Dynamo DB database of the
back-end.

###### Files:
* App.java - Application class to run the fund module's back-end

* CrowdFundConfiguration.java - Configuration class to define the config of the 
fund module

* DefaultHealthCheck.java - Definition of the health check for the fund module

* FundRequest.java - Class to define fund related requests to the database

* FundResponse.java - Class to define fund related responses to the database

* Page.java - Class to define pagination for the fund module's UI

##### Model

This subsection contains the Dynamo DB service and object classes of the Fund
Module. The fund module's Dynamo Database and its tables are accessed here in 
response to requests from the REST API.

###### Files:
* Donation.java - Definition of a donation object. One of three transaction
classes employed by the module to transfer money between funds (user to fund)

* DynamoDBConfiguration.java - Configuration class to define the parameters of
the Amazon AWS Dynamo DB database employed by the fund module.

* Fund.java - Definition of a fund object. Funds are created to store money for
particular relief projects.

* FundDynamoDBService.java - Service class that contains java code that enables
direct interaction with the Fund Module's Dynamo DB database.

* FundState.java - Enumeration class used to define the current status of a 
Fund. Employed by the Fund object class.

##### Service

This subsection contains the service implementation that translates REST API
requests and responses to Dynamo DB calls.

###### Files:
* CrowdFundException.java - Exception class for the Fund Module. Triggers for 
various errors that could occur in using the Fund Module.

* CrowdFundService.java - Service implementation class. Acts as the bridge
connecting the REST API calls to the DynamoService to affect changes to
the database.

* CrowdFundServiceResource.java - Class to answer requests from the UI 
supplying relevant data from the Dynamo DB database through the 
DynamoDBService and the implementation of the Crowd Fund Service.

* ICrowdFundService.java - Java interface for the crowdfund service.
Defines the methods available to the service implementation class.

#### Front-End

This is where the fund module's front-end code is stored. It is broken into 
various subsections containing code written in javascript. 
These sections include but are not limited too:

* Assets - Contains features that add more functionality to a website
(e.g. date picker)

* Components - Contains the various elements and widgets of a view webpage.

* Data - Contains the various subelements for various pieces of the front-end
(e.g. the buttons on the side bar menu)

* Flux - Contains JS code to handle elements of the layout that can change
(e.g. the side bar)

* Images - Contains various images used by the front-end of the Fund Module.
Examples include user avatars.

* Layouts - Contains html to define the layout of special elements such as:
    * Navigation Bar
    * Side Bar
    * Footer

* Shards-Dashboard - Contains details and examples of how to use the bootstrap
tool shards dashboard for a user interface.

* Styles - Contains CSS code defining attributes used in determining the look
of views in the Fund Module.

* Utils - Contains utility elements for a web app such as JS code to create 
charts.

* Views - Contains JS code describing the design of the webpages used by the
Fund Module.

## Resource Module
To Be Added...