Group number: 7
Team members: Pravat Bhusal, Taehyoung Kim, Andrew Le, Jinho Yoon
Name of project: MatchUs
Dependencies: Xcode 12.2, Swift 5
PLEASE OPEN THIS README.md file IN A MARKDOWN RENDERER.
You must first run the Django web server and web socket.
- Go inside of the server folder and run
pip install -r requirements.txt
for Python v3.8.6. - cd into the server/server directory, then run the migrations using
python manage.py makemigrations
. - Then migrate using
python manage.py migrate
. - Lastly, run the server using
python manage.py runserver
.
Next, you need to run the Xcode simulator and register an account .
- Inside the client folder, run
pod install
to install the podfile dependencies. - Now open the Matchus.xcworkspace file with Xcode.
- Run the app on an IPhone 11 Pro Max simulator on Xcode.
- Note: If the build fails, you may want to use the Xcode Legacy Build system under Workspace Settings > Build System.
- The app will load the landing page, click the "Register" button and fill out the form to register your account.
- Note: If you get issues with "Strong Password" then use the Software keyboard on the simulator to type into the text field instead because this is an issue with how the simulator handles the secure text field
Once you are finished registering your account, you will be directed to the dashboard page. The dashboard page will be empty if there's no users near your location. Therefore, to test the dashboard out we need to register more users.
Log out of the current user by clicking Profile Icon in the bottom tab bar. Then click the "Go to Settings" button, click "Account settings" button, then click the "Logout" button. You'll now be redirected to the home page, so create another account at a nearby location of the first user. Once this new user is created, if the account is close enough to the other user in terms of latitude/longitude, then it will show the other user on the dashboard.
To test chatting with another user, you need two simulators open. One simulator is the first user, and the other simulator is the other user. The chat system works in real-time because it uses web sockets.
The contributions table will not look pretty if this README.md file isn't rendered on a Markdown viewer.
Table generated using https://www.tablesgenerator.com/markdown_tables.
Feature | Description | Release planned | Release actual | Deviations (if any) | Who/Percentage worked on |
---|---|---|---|---|---|
Login/Register with Google | Login/Register the user using their Google OAuth credentials. | Alpha | Beta | Originally planned to use Apple, but we instead used Google because Apple required us to pay a $99 developer license fee. The Alpha release did have the Apple credentials working originally, but we switched to Google due to issues with an Apple developer account. |
Taehyoung 75% Pravat 25% |
Login/Register | Login/Register the user using their email and store the password in the Django backend. Django handles hashing and salting the passwords for us. |
Alpha | Alpha | None | Pravat 75% Jinho 25% |
Onboarding | The "Tell us where you are", "Tell us your interests", and "Tell us about you" view controllers. Including the backend to store the user's information from these forms and store the user's profile photo. |
Alpha | Alpha | We finished the onboarding pages in our original design doc for Alpha, but we wanted to enhance the app further to allow the user to add their biography and profile photo in the onboarding as well. This was done in the Beta release. |
Jinho 75% Pravat 25% |
Auto-login | Logs the user into their account if there already exists a token in the device's UserDefaults. |
Final | Final | None | Andy 100% |
Dashboard | Displays the nearby users to the logged-in user sorted in order by the matching interests. Uses a deep learning algorithm from the backend called "Word2Vec" to determine how users' interests are matched to each other. |
Beta | Beta | None | Andy 100% |
Profile View | View the user's match percent, interests, biography, profile photo, and featured photos. | Beta | Beta | Originally the design document did not have a biography section, but we decided to add it into the final release. Also, added a scroll view with photos showing vertically instead of horizontally to make viewing images easier. |
Taehyoung 100% |
Accumulate Interests from Others | If the logged-in user swipes right on an interest from another user, then it adds it into the list of interests that they have. This is done to help increase matches with users that have interests similar to the user to the traits that the user just liked. |
Beta | Beta | None | Taehyoung 100% |
Chat List | View the list of chats the user has had with other users. | Beta | Beta | None | Pravat 50% Jinho 25% Taehyoung 25% |
Chat Room | A chat room connected to a web socket to chat between two users. The users are anonymous at first, but if a user taps the other user's profile photo on the top right then it initiates a request to reveal both profiles. If the other user types "ACCEPT", then both profiles are no longer anonymous. |
Beta | Beta | None | Pravat 50% Jinho 25% Taehyoung 25% |
Edit Profile View | Allows the user to edit their profile photos and navigate to settings. | Final | Final | Decided to show the biography text on the final release. Also, added a scroll view with photos showing vertically instead of horizontally to make editing images easier. |
Taehyoung 100% |
Settings | Edit the personal information (such as profile photo, name, location, biography), edit interests, edit password, and edit email. |
Final | Final | Decided to allow for the user to edit their profile photo in the personal information section. |
Andy 75% Jinho 25% |
UI | Colors, buttons, navigations, segues, text, tab bar, tables. | Final | Final | None | Jinho 85% Pravat 5% Taehyoung 5% Andy 5% |
Django Web Server and Socket | Programs the endpoints to create, read, update, and delete user data. Also, the real-time socket connection between users to allow for chatting. |
Final | Final | None | Pravat 85% Taehyoung 5% Andy 5% Jinho 5% |