An iOS chat app made for easy sharing of news, videos and images with your friends.
- Product Owner: Daniel O'Leary
- Scrum Master: Brian Leung
- Development Team Members: Daniel O'Leary, Brian Leung, Brandon Borders
Node 0.10.x
NPM
Xcode 7
Cocoapods
Docker
MySQL
Go
This is all done in the mobile/ios/Marshmallow
directory:
- Installing Dependencies
pod install
-
Open
Marshmallow.xcworkspace
in Xcode -
In Xcode open the file
keys.example.plist
, where it saysKEY_HERE
replace it with your Youtube API Key -
Now you can click build in Xcode and start using the app in the simulator
Before attempting to start the server, make sure you have the trends package in your Go workspace. Find the repo here.
- Go to the the server directory
- Fill out environment variables in
docker-compose.yml.example
- Rename file
docker-compose.yml.example
todocker-compose.yml
- Activate docker machine
- Run
docker-compose up
Description: Creates a new user
Authentication Required: No
/* Request Body */
{
“email”: STRING,
“oauthToken”: STRING,
“facebookId”: STRING
}
/* Response Body */
{
"email": STRING,
"facebookId": STRING
}
Description: Authenticates a client by generating a token
Authentication Required: No
/* Request Body */
{
“email”: STRING,
“oauthToken”: STRING,
“facebookId”: STRING
}
Description: Given a list of facebook users, filter out the ones that are not signed up with marshamallow and return the list
Authentication Required: Yes
/* Request Body */
{
“users”: [
facebookIds (STRING) ...
]
}
/* Response Body */
{
“users: [
facebookIds (STRING) ...
]
}
Description: Creates a new chatroom for the given users. Needs at least two users in the users array
Authentication Required: Yes
/* Request Body */
{
“users”: [
facebookIds (STRING)
]
}
/* Response Body */
{
“chatId”: STRING
}
Description: Retrieves list of chats the user is in
Authentication Required: Yes
/* Response Body */
{
“chats”:[
{
chatId: STRING,
users: [facebookIds, ..]
},
...
]
}
Description: Post a message to a chat
Authentication Required: Yes
/* Request Body */
{
“text”: STRING,
“youtubeVideoId”: STRING,
“googleImageId”: STRING
}
Description: Retrieve messages in a chat
Authentication Required: Yes
/* Response Body */
{
“messages”: [
{
userFacebookId: STRING,
chatId: STRING,
text: STRING,
createdAt: ISO8601 STRING,
youtubeVideoId: STRING,
googleImageId: STRING,
redditAttachment: {
title: STRING,
url: STRING,
thumbnail: STRING
}
}, ...
]
}
Description: Retrieve messages in all chats since time x (the timestamp
param)
Authentication Required: Yes
/* Response Body */
{
“messages”: [
{
userFacebookId: STRING,
chatId: STRING,
text: STRING,
createdAt: ISO8601 STRING,
youtubeVideoId: STRING,
googleImageId: STRING,
redditAttachment: {
title: STRING,
url: STRING,
thumbnail: STRING
}
}, ...
]
}
Description: Retrieve trending links (from reddit)
Authentication Required: Yes
/* Response Body */
{
“links”: [
{
“url”: STRING,
“thumbnail”: STRING,
“title”: STRING
}, ...
]
}
From within the server
directory:
$ npm install
Before running any tests:
- Start the
mysql
server on your local machine - Fill out the environment variables in
env.json.example
.JWT_SECRET
can be any string. - Rename the file
.env.json.example
to.env.json
To run unit tests, from within the server
directory:
$ gulp test
To run server integration tests, from within server
directory:
$ gulp server-integration-test
See CONTRIBUTING.md for contribution guidelines.