twoGeeks is a mobile application to allow students to find study partners to make more friends, knowledge and experiences as well as to provide an avenue for them to ask for help in subjects they are weak at.
Download apk file here
In Singapore, many students do not have a partner to study with especially if they are freshmen. There are a lot of proven benefits of studying with someone especially if you need help clarifying concepts and doing homework. Students may also want to expand their social circle and to make more friends who study the same subjects or modules as them. Furthermore, we are also committed to help students with their schoolwork without having to spend an absurd amount of money on tuition. We want to help students seek the help they need from other students who are better in concepts. As such, we are motivated to create a mobile app that connects students, forge new relationships and make studying much easier.
As a student,
- I want to create a profile about myself so that others can find me easily and match with me.
- I want to look at profiles of other students, swipe left to view a new student and swipe right to send a friend request to the student so that I can connect with them.
- I want to be able to filter students by age, gender, education level so that I can view selections that best match my preferences.
- I want to accept or reject friend requests sent by other students.
- I want to be able to chat with my fellow students so that I can plan when to study together after accepting a friend request.
- I want to be able to see all my chats with other students so that I can resume chatting with them.
As a tutor (another student),
- I want to inform other students in the area of studies that I am proficient in.
- I want to be able to accept friend requests from other students.
- I want to show a list of chats with students I have been helping.
Using Adobe XD, we have come up we a mockup of our mobile application.
For our database, we have come up with a initial schema.

| Date | Objective |
|---|---|
| 11 May - 24 May 2019 |
|
| 25 May - 7 June 2019 |
|
| 8 June - 21 June 2019 |
|
| 22 June - 5 July 2019 |
|
| 6 July - 19 July 2019 |
|
| 19 July - 27 July 2019 |
|
| Milestone | Features |
|---|---|
| 1 |
|
| 2 |
|
| 3 |
|
-
Using Github for version control and merging of conflicts
-
Scrum meetings
- We have a scrum meeting every Sunday night to discuss what we have done for the week and what features we will be doing for the next week
- We also ensure that the merge conflicts are resolved before moving on to the next sprint
-
Ensure all test are passed before merging to master branch / (Continuous Integration/ Continuous Development)
-
Adopt DRY Principle
-
Abstraction
-
Defensive programming
-
Ensure harder to understand codes are well commented
-
Solid Principles
- Single Responsibility Principle
- Open-Closed Principle
-
Separation of Concerns Principle
-
Write test to ensure code is working
- Testing individual widgets with Flutter in-built tester
- Loaded widgets to tester to check if the required elements are present (E.g texts, pictures, buttons)
- Check if logic in functions are working
- Used Mockito package to mock authentication
- Preconfigure mock class to return a particular user
- Used cloud_firestore_mocks package to mock firestore
- Preconfigued data for the mock firestore
- Using combination of unit test to test each main pages
- Mock presses on buttons to test navigation to other pages
- Set up automatic testing using TravisCI on pull request
- Calculate test coverage score using TravisCI
- Ensure the features created is working as per expected
- Ensure there is input validation and error handling in places such as
- login
- signup
- edit profile
- chat messaging input
- Ensure inputs cannot exceed a certain length
- Ensure buttons are not obscured
- Ensure app is easy to use and understand
We have asked some of our friends to try our app and followed up with a simple survey
Here are the results:
| Name | How good is the UI design? | Are the buttons for functions obvious? | Was there any bugs that you discovered while using this app? |
|---|---|---|---|
| Shaun | 4 | Yes | Details page which have missing info have empty boxes |
| Jonathan | 5 | Yes | When I upload my own image, the image covers the entire page awkwardly. The profile picture in the chatroom are not my pictures. |
| Wei Zhi | 4 | Yes | Sometimes the page shows blank when loading. Maybe it need to have a loader? |
| Timothy | 5 | Yes |
In general, the feedback for the UI design and button functions are well received. Some of them mentioned serveral bugs that makes the app feels clunky, such as the aspect ratio of the images and the lack of a progress indicator when loading a page. We have taken that into consideration and made those bug fixes/improvements.
- Aspect ratio of images when user uploads different sized images
- Lack of progress indicators when page is still loading
- Some of the images are still showing default placeholder images
- Unable to add user as friend
- Since Android phones comes in difference sizes, we are expecting some phones to have bad UI issues.
- Since firebase and firestore are deeply intertwined in our app, it was hard to set up testing as most of the time it would break. One way we resolved this issue was to mock both dependencies
- The code was rather cluttered and not very reusable so to solve this issue, we had to spend time refactoring our code and making our code more resuable.
- When we tested the app with several people, many people find it hard to know what to do in the matching page, as such we decided to replace it with buttoned text to let users know what each button does
- Limitations
- Hard to filter and search based on preferences as reddit can only sort via latest or most popular or search via description
- Limitations
- This platform is designed for students to meet up online and share their progress on MOOC courses. It doest really support looking at finding physical interactions and studying
Here is a view of our latest design for the application. We decided to have a more consistant color palette, have images and animations to make it more appealing for users.
By Dev++
Andre Wong Zhi Hua
Peh Jun Siang











































