EventUp
Tags: octograd2020
Published: 2020-05-20 21:11:44

## Table of Contents

- [ Overview ](#overview)
- [ Functionality ](#functionality)
- [ Demo ](#demo)
- [ Getting Started ](#getting-started)
    - [ Installation ](#installation)
    - [ Build ](#build)
- [ Details ](#details)
- [ API Routes ](#api-routes)

## Overview

Event Up is an event posting social media app which is accessible for both platforms; iOS and Android. The product could be used by any university student to plan, post, browse, and RSVP for events around campus.

## Functionality

- Users **sign up or login** using their university email.
- Users can **create** and **organize** events on EventsUp.
- Users can **share** an event with their buddies and classmates.
- Users can **RSVP** for multiple events to notify the host.
- Users can **add** event to their **calendars** to get **notification**.
- Users can get **travel directions** from their geo-location to the venue on google/apple maps.
- Users can start a conversation by posting **comments/queries** on any events for the host to respond.

## Demo

[Try it on Expo](https://exp.host/@mitulsavani/Front-end)
<br/>

View Demo: `https://mitulsavani.com/EventUp/`
Source Code: `https://github.com/mitulsavani/EventUp`

We used [React Native Elements](https://github.com/react-native-training/react-native-elements) library to build a Screen and Components, [React Navigation](https://reactnavigation.org/) library to handle navigation and various packages including [React-Native-Maps](https://github.com/react-native-community/react-native-maps) to integrate Map View and redirect users to native maps for directions to the event.


## Getting Started

### Installation

```
git clone https://github.com/mitulsavani/EventUp.git

cd Front-end

yarn install

yarn run start (ios)

yarn run android (android)
```

> On Expo
* Download Expo Client app from the IOS or Android store
[Android App](https://play.google.com/store/apps/details?id=host.exp.exponent "Link to App"),
[IOS App](https://itunes.apple.com/us/app/expo-client/id982107779?mt=8 "Link to App")


### Build

- Through the console: `expo start iOS`<br/>
If you have an iOS simulator installed on XCode, it will automatically launch.<br/>
Otherwise, you can scan the generated QR code on an iOS device.
- Scan the QR code for the built project on Expo with an iOS device:
[Expo Build](https://exp.host/@mitulsavani/Front-end "Link to Expo build")

## Details

- **Login**
<br/>Login with an e-mail and password, or through Google and Facebook. The user is then redirected to the Events Screen.

- **Registration**
<br/>Create an account with a name, e-mail, and password. The user is then automatically logged in and redirected to the Events Screen.

- **Events**
<br/>Displays a feed of all of the soonest events. Users can choose to filter the feed with options such as category, date, time, and location. Tapping an event will redirect the user to the Event Details screen.

- **Event Details**
<br/>Provides all of the information about an event. This includes an image, description, category, date, time, and location on a map. On this screen, the user can also: RSVP for the event, add the event to their calendar, or open the location of the event in apple maps, or message the poster.

- **Create Event**
<br/>Users can provide all of the details for an event and post it. The category and location are selected from a drop-down menu.

- **RSVP**
<br/>Displays all of the events that the user RSVP'd for. Tapping an event will redirect the user to the Event Details screen. Any messages from other users will be displayed in addition to the regular details.

- **Profile**
<br/>Contains a Sign Out button that will redirect the user to the Login screen.

![alt text](https://i.imgur.com/yGpDYka.png "Screen Flow")

## API Routes

- **POST /users/login**
<br/>Request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e-mail and password<br/>
Response:&nbsp;&nbsp; user id, login status, response message, and access token

- **PUT /users/register**
<br/>Request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; First name, last name, e-mail, and password<br/>
Response:&nbsp;&nbsp; user id, login status, response message, and access token

- **GET /users/getUsers**
<br/>Response:&nbsp;&nbsp; login status, response message, number of users, and an array of user objects

- **POST /users/RSVP**
<br/>Request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User ID, event ID<br/>
Response:&nbsp;&nbsp; login status and response message

- **DELETE /users/RSVP**
<br/>Request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User ID, event ID<br/>
Response:&nbsp;&nbsp; login status and response message

- **GET /users/RSVP/:UserID**
<br/>Response:&nbsp;&nbsp; login status, response message, and a list of events the user RSVP'd for

- **POST /users/posts**
<br/>Request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User ID<br/>
Response:&nbsp;&nbsp; login status, response message, and a an array of event objects that the user posted

- **GET /events**
<br/>Response:&nbsp;&nbsp; An array of event objects

- **POST /events**
<br/>Request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Event name, description, age restriction, user ID, Category ID, location ID, image, date, start time, and end time<br/>
Response:&nbsp;&nbsp; login status, response message, and event ID of the created event

- **DELETE /events/:EventID**
<br/>Response:&nbsp;&nbsp; login status and response message

- **GET /events/:EventID**
<br/>Response:&nbsp;&nbsp; login status, response message, and the event object tied to the ID


> I congratulate the class of 2020 and a huge appreciation to GitHub Education for organizing this. <br/>
> Thank you for reading, mitulsavani