An open API service indexing awesome lists of open source software.

https://github.com/codepath/me102_group_project_example


https://github.com/codepath/me102_group_project_example

Last synced: 4 months ago
JSON representation

Awesome Lists containing this project

README

        

# EXAMPLE GROUP PROJECT README

# TUNIN

## Table of Contents
1. [Overview](#Overview)
1. [Product Spec](#Product-Spec)
1. [Wireframes](#Wireframes)
1. [Schema](#Schema)

## Overview
### Description
Tracks what music an individual listens to, and pairs them with others based on that music. Could be potentially used as a dating app, or just meeting new friends with similar music tastes.

### App Evaluation
- **Category:** Social Networking / Music
- **Mobile:** This app would be primarily developed for mobile but would perhaps be just as viable on a computer, such as tinder or other similar apps. Functionality wouldn't be limited to mobile devices, however mobile version could potentially have more features.
- **Story:** Analyzes users music choices, and connects them to other users with similar choices. The user can then decide to message this person and befriend them if wanted.
- **Market:** Any individual could choose to use this app, and to keep it a safe environment, people would be organized into age groups.
- **Habit:** This app could be used as often or unoften as the user wanted depending on how deep their social life is, and what exactly they're looking for.
- **Scope:** First we would start with pairing people based on music taste, then perhaps this could evolve into a music sharing application as well to broaden its usage. Large potential for use with spotify, apple music, or other music streaming applications.

## Product Spec
### 1. User Stories (Required and Optional)

**Required Must-have Stories**

* User logs in to access previous chats and preference settings
* User picks what their favorite artist/genre/etc. (Think Spotify interface)
* Matches have a chat window to get to know each other, with the ability to skip music and unmatch (Tinder Style).
* Profile pages for each user
* Settings (Accesibility, Notification, General, etc.)

**Optional Nice-to-have Stories**

* Log of past songs/people with album art covers matching
* Page of most played songs (i.e. songs that most users are connecting through)
* Profile Add-On: Top music choices, etc.
* Optional Shuffle Button (i.e. random encounter/random song)
* Listening/Encounter Queue

### 2. Screen Archetypes

* Login
* Register - User signs up or logs into their account
* Upon Download/Reopening of the application, the user is prompted to log in to gain access to their profile information to be properly matched with another person.
* ...
* Messaging Screen - Chat for users to communicate (direct 1-on-1)
* Upon selecting music choice users matched and message screen opens
* Profile Screen
* Allows user to upload a photo and fill in information that is interesting to them and others
* Song Selection Screen.
* Allows user to be able to choose their desired song, artist, genre of preference and begin listening and interacting with others.
* Settings Screen
* Lets people change language, and app notification settings.

### 3. Navigation

**Tab Navigation** (Tab to Screen)

* Music selection
* Profile
* Settings

Optional:
* Music/Encounter Queue
* Discover (Top Choices)

**Flow Navigation** (Screen to Screen)
* Forced Log-in -> Account creation if no log in is available
* Music Selection (Or Queue if Optional) -> Jumps to Chat
* Profile -> Text field to be modified.
* Settings -> Toggle settings

## Wireframes

### [BONUS] Digital Wireframes & Mockups

### [BONUS] Interactive Prototype

## Schema
### Models
#### Post

| Property | Type | Description |
| ------------- | -------- | ------------|
| objectId | String | unique id for the user post (default field) |
| author | Pointer to User| image author |
| image | File | image that user posts |
| caption | String | image caption by author |
| commentsCount | Number | number of comments that has been posted to an image |
| likesCount | Number | number of likes for the post |
| createdAt | DateTime | date when post is created (default field) |
| updatedAt | DateTime | date when post is last updated (default field) |
### Networking
#### List of network requests by screen
- Home Feed Screen
- (Read/GET) Query all posts where user is author
```swift
let query = PFQuery(className:"Post")
query.whereKey("author", equalTo: currentUser)
query.order(byDescending: "createdAt")
query.findObjectsInBackground { (posts: [PFObject]?, error: Error?) in
if let error = error {
print(error.localizedDescription)
} else if let posts = posts {
print("Successfully retrieved \(posts.count) posts.")
// TODO: Do something with posts...
}
}
```
- (Create/POST) Create a new like on a post
- (Delete) Delete existing like
- (Create/POST) Create a new comment on a post
- (Delete) Delete existing comment
- Create Post Screen
- (Create/POST) Create a new post object
- Profile Screen
- (Read/GET) Query logged in user object
- (Update/PUT) Update user profile image
#### [OPTIONAL:] Existing API Endpoints
##### An API Of Ice And Fire
- Base URL - [http://www.anapioficeandfire.com/api](http://www.anapioficeandfire.com/api)

HTTP Verb | Endpoint | Description
----------|----------|------------
`GET` | /characters | get all characters
`GET` | /characters/?name=name | return specific character by name
`GET` | /houses | get all houses
`GET` | /houses/?name=name | return specific house by name

##### Game of Thrones API
- Base URL - [https://api.got.show/api](https://api.got.show/api)

HTTP Verb | Endpoint | Description
----------|----------|------------
`GET` | /cities | gets all cities
`GET` | /cities/byId/:id | gets specific city by :id
`GET` | /continents | gets all continents
`GET` | /continents/byId/:id | gets specific continent by :id
`GET` | /regions | gets all regions
`GET` | /regions/byId/:id | gets specific region by :id
`GET` | /characters/paths/:name | gets a character's path with a given name