Crowdfund an event with friends or strangers!
- Product Owner: Delphine Foo-Matkin
- Scrum Master: Kristen Haydel
- Development Team Members: Vincent Jo, Oleg Umarov
- Team
- Usage
- Development
- Installing Dependencies
- Contributing
- Internal APIs
- Test Data
- DB Schema
- Server API
Users can view existing events without having to register. In order to join an existing events or create an event for others to join, they need to register. To join, the user just needs to click on the event they’re interested in, and click ‘join’. An IOU is then created between the participant and the organizer. The event is updated, showing current number of participants against the minimum number of people needed to run the event. The event will be added to the participant’s list of events they’ve joined.To create an event, the user clicks on ‘Create Event’, filling out details (including minimum number of participants needed to kickstart the event, and the price per person) and uploading an image. Once submitted, the event will show up on the main events page and others can join it.
From within the root directory:
npm install
See CONTRIBUTING.md for contribution guidelines. Make sure you have Node installed, and then from within the root directory:
npm install
This will handle both client and server-side dependencies as outlined in package.json.
See CONTRIBUTING.md for contribution guidelines.
On any project there are many internal APIs. For ease of reference, for both the development team and future contributers, they are exhaustively documented here.
npm test
Additionally, this repo contains a dummy-data file that will help you test feel and look. To add records to the database just run:
./dummy-data.sh
There are two types of objects stored in the database: users and event To minimize http requests on the server, when retrieved, all references to other objects will be fully populated with complete objects, not just is numbers. The schema are as follows:
####User
{
username : ... // String
password : ... // String
firstName : ... // String
lastName : ... // String
}
####Node
{
title : ... // String
description : ... // String
imageUrl : ... // String
created : ... // Date
updated : ... // Date
}
The server uses a stateless RESTful API for all database access. It supports four HTTP verbs: GET
for retrieving data, POST
for creating new objects, PUT
for updating existing objects, and DELETE
for removing objects. NOTE: All POST
, PUT
, and DELETE
routes require an authorization token, with the exception of POST /api/signup
.
Most routes follow a /api/:data_type/:data_identifier
pattern. Note that when an aspect of a route is prefaced with a colon :
it refers to a variable. Do not actually write down a colon in any api calls. Additionally, ALL of the following routes must be prefaced with /api
.
GET /login // Authenticate user
POST /signup // Create a user
GET /users // Get an array of users
GET /users/:username // Get a specific user
PUT /users/:username // Update the user's info
DELETE /users/:username // Delete the user
GET /events // Get an array of events
GET /events/:eventId // Get a specific event
POST /events // Create a new event
PUT /events/:eventId // Update a event
DELETE /events/:eventId // Delete a event