Starup is an iOS app that connects startups, investors and collaborators
Original App Design Project
- Clone this github repository on your local machine
git clone [email protected]:marriagav/starup.git
- Go to the
starup
directory with the commandcd starup
- Open the project in xcode by running the command
open starup.xcworkspace/
- Add the Keys.plist file to the project, with the following keys of the API's (their values are also needed):
- parseAppID
- parseClientKey
- paypalClientID
- linkedinAppID
- linkedinSecret
- Add the GoogleService-Info.plist file to the project
- Run the project from xcode
NOTE: installing the pods through the podfile is not necessary, as they're already included in the repository.
Starup is an application that allows startups to connect with investors and independent workers. There are three user roles in this app:
- Ideators: can post information about their startups and network for "sharks" or "hackers".
- Sharks: can scroll and search for different startups, connecting with "ideators" and potentially investing in their startups.
- Hackers: similarly to sharks, they can search for startups, but rather than investing in them, they can apply to join the project as independent workers.
- Category: buissness and employment.
- Mobile: it will be a mobile experience, from their phones, users will have access to all the funcitonality of the app.
- Story: allows startups to grow, as well as offering users opportunities to invest.
- Market: anyone that falls into either of these three categories: has any startup ideas, has any skills and interest to participate in a startup, has interest and means to invest in a startup.
- Habit: ideators can post as many startup ideas as they want, hackers and sharks can explore endless startups in any category or buissness that exists.
- Scope: it is planned to start as a simple app where networking happens around startups, just posting and connecting people.
SDK/Database integration
- Integrated Parse as the main database for my project, designing the database and storing users, posts, connections and starups.
- Integrated Firebase as a secondary database for messaging, using the ChatsSDK (https://chatsdk.co/).
- Linkedin Integration (#28)
- Implemented sign in with Linkedin functionality, were the user can authenticate themselves, with the use of the Linkedin API, in order to create their Starup account.
- This feature also allows users to use their Linkedin names and profile pictures when they log in with Linkedin.
- Implemented sign in with Linkedin functionality, were the user can authenticate themselves, with the use of the Linkedin API, in order to create their Starup account.
- Paypal integration (#29)
- Added PayPal integration so that users can make investments through the Paypal API, using the sandbox environment and a sandbox account.
Difficult/ Ambiguous Technical Problems:
- If a user has Linkedin authentication, they will be able to post both on Starup and on Linkedin if they wish to do so.
- Messages (#39)
- Users can manage their conversations: add users, remove users, delete messages, delete conversations, etc.
- After a new starup is created, a groupchat will be automatically created with all the members of that starup.
- Search (#31)
- Built a graph data structure in the server to measure "closeness" between users.
- User search is reusable (everything goes through the same graph) and It has been added on two view controllers: the profile view controller and the add collaborator view controller.
- When the user makes a search, a local graph will be traversed looking for users that match the search.
- Sectioning: in which "recommended" means people that are really close to you, "you may know" is people somewhat close to you and "discover" is people you don't have any type of connection with.
Visuals and interactions
- Added a gesture recognizer (#38) so that users can add collaborators to their starups more easily
- Created my own icons and logo (https://github.com/marriagav/starup/pull/42/files) for the app.
- Starups investment bar is animated.
- Added a MBProgressHUD (https://github.com/jdg/MBProgressHUD) for when the user is performing network requests.
Find the demo video here: demo video
Find the presentation here: demo presentation
Screenshots
Required Must-have Stories
- Profile creation / authentification
- Being able to post and navigate startups
- Login and signup
- Being able to click on a startup to see its details and interact with it
- Persistent storage of users session
- Profile view: clicking on a user to see their profile
- Being able to see what other people are posting and make posts yourself
- Invest in a starup with Paypal
- Connecting the app to the Linkedin API.
- Search bar to filter users when adding them to a Starup
Optional Nice-to-have Stories
- Search bar to filter startups
- Search bar to filter posts
- Edit starups to add new collaborators to them
- Messaging functionality
- Login screen
- Profile creation / authentification
- Login and signup
- Linkedin authentication
- Persistent storage of users session
- Home feed
- Being able to see what other people are posting (statuses)
- Compose post
- Being able to make a status post
- Being able to post to Linkedin
- Starups tab
- Being able to navigate starups
- Details tab
- Being able to see more information about a startup
- See the current investment of the starup
- See starup collaborators
- Invest tab
- Select amount to invest and invest
- Invest on a specific starup
- Compose starup
- Post a new startup
- Edit an existing starup
- Add collaborators to your starup
- Profile tab
- See and edit your profile
- See other profiles
- Search for profiles
- See a users posts and starups
- Search tab
- Search users
- See users sectioned in different categories deppending on closeness
- Chats tab
- Send messages to other users
- Create new conversations
- Remove conversations
- Create groupchats
Tab Navigation (Tab to Screen)
- Home feed
- Starups tab
- Chats tab
- Profile tab
Flow Navigation (Screen to Screen)
- Login screen
- Home feed
- Home feed
- Compose post (tap on new post button)
- Profile tab (tap on profile pictures)
- Compose post
- Home feed
- Starups tab
- Details tab (tap on post)
- Compose starup tab (tap on new starup button)
- Compose starup tab
- Starups tab
- Search tab
- User tab
- Details tab
- Profile tab (tap on profile pictures)
- Invest tab (tap on invest button)
- Edit starup tab
- Chats tab
- Profile tab
- Details tab (tap on starup)
- Chats tab
- Search tab
- Chats tab
- Profile tab
Property | Type | Description |
---|---|---|
objectId | string | unique id for the user |
createdAt | DateTime | date when user was created |
updatedAt | DateTime | date when user was updated |
username | string | unique username of the user |
firstName | string | first name of the person that owns that profile |
lastName | string | last name of the person that owns that profile |
normalizedUsername | string | normalized username |
normalizedFullName | string | normalized fullname |
profilePicture | string | name of the person that owns that profile |
userBio | string | user biography |
userRole | string | short user role to show beneath their profile (For example: iOS software engineer) |
password | string | password for login |
string | user email | |
linkedinAuthentication | BOOL | if the user is authenticated with Linkedin |
chatsId | string | the user chats id |
Property | Type | Description |
---|---|---|
objectId | string | unique id for the collaborator |
createdAt | DateTime | date when collaborator was created |
updatedAt | DateTime | date when collaborator was updated |
user | pointer to user | the user that participates in the starup |
starup | pointer to starup | starup in which the user participates |
typeOfUser | string | role that the user has in that starup (shark, ideator, hacker) |
ownership | numbert | % of starup owned by the collaborator |
Property | Type | Description |
---|---|---|
objectId | string | unique id for the starup |
createdAt | DateTime | date when starup was created |
updatedAt | DateTime | date when starup was updated |
starupName | string | the name of the starup |
starupDescription | string | description of the starup |
starupCategory | string | category of the starup (for example: software, design, etc.) |
operatingSince | DateTime | Date when the starup started operating |
sales | number | amount of money that the starup has generated in USD |
goalInvestment | number | goal investment amount in usd |
currentInvestment | number | current investment amount in usd |
ownershipPercentForInvestment | number | percentage of the company to give in exchange for the goal investment amount |
imageOfStarup | file | image of the starup |
Property | Type | Description |
---|---|---|
objectId | string | unique id for the post |
createdAt | DateTime | date when post was created |
updatedAt | DateTime | date when post was updated |
updateStatus | string | update status of the post (for example: "looking for starups", "posted a new starup", "invested in a starup" |
contentOfPost | string | text content of the post |
statusImage | file | image of the status |
Property | Type | Description |
---|---|---|
objectId | string | unique id for the UserConnection |
createdAt | DateTime | date when UserConnection was created |
updatedAt | DateTime | date when UserConnection was updated |
closeness | number | closeness value between the two users |
userTwo | pointer to user | pointer to one of the users |
userOne | pointer to user | pointer to the other of the users |
CRUD | HTTP Verb | Description |
---|---|---|
Create | POST | create a new user/registration |
Read | GET | login the user |
CRUD | HTTP Verb | Description |
---|---|---|
Read | GET | get the latest posts |
CRUD | HTTP Verb | Description |
---|---|---|
Read | GET | get the latest starups |
CRUD | HTTP Verb | Description |
---|---|---|
Read | GET | get the user information |
Update | PUT | edit the user information |
CRUD | HTTP Verb | Description |
---|---|---|
Create | POST | post the post |
CRUD | HTTP Verb | Description |
---|---|---|
Create | POST | post the starup |
CRUD | HTTP Verb | Description |
---|---|---|
Read | GET | get the starup information |
CRUD | HTTP Verb | Description |
---|---|---|
Read | GET | get the starup information |
Update | PUT | make an investment |