Skip to content

wunderg/eventify

 
 

Repository files navigation

Eventify

Crowdfund an event with friends or strangers!

Team

  • Product Owner: Delphine Foo-Matkin
  • Scrum Master: Kristen Haydel
  • Development Team Members: Vincent Jo, Oleg Umarov

Table of Contents

  1. Team
  2. Usage
  3. Development
  4. Installing Dependencies
  5. Contributing
  6. Internal APIs
  7. Test Data
  8. DB Schema
  9. Server API

Usage

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.

Development

Installing Dependencies

From within the root directory:

npm install

Contributing

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.

Contributing

See CONTRIBUTING.md for contribution guidelines.

Internal APIs

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.

Test

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

DB Schema

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
}

Server API

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.

The Routes

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 83.9%
  • Shell 13.3%
  • CSS 2.0%
  • HTML 0.8%