It is hard to find a suitable mentor; and as a mentor, it is hard to find a student that you can exploit fully his/her potential. I want to build something encourage students to help each other because:
1) There is no good-enough karma tracking system 2) Hiring private tutors for just a "cram" session is not economically effective
How people will use it?
Register an account; choose your weaknesses and strengths. The server will try to match you with people whose strengths are your weaknesses. By browsing a list of people, you can ask them an academic favor. People who received it can accept to do the favor by double-tap on that message. All are anonymous until they accept to do the favor. The app encourages face-face interaction for better engagement.
How I built it
I use Kotlin (KTor) to build the server and PostgreSQL to store information and relationship. All queries are written in a type-safe and efficient manner with Exposed. User passwords are encrypted with argon2, and authentication is built based on JWT. There are some backend feature but users cannot use it yet because the frontend takes me a lot of effort to build;
The mobile app (native) is built with Flutter. Trying to make the UI unique, I created custom components instead of using default material design one.
Challenges I ran into
Building the product when fighting against loneliness :(. I cannot complete the searchable conversations feature: when students matched with a tutor, the app will record their conversation and make it searchable so that others can find useful information through that conversation. It also helps build a more transparent karma tracking system. While I could setup ElasticSearch and DeepSpeech instance on my local system, I don't have enough time to deploy and finish the frontend.
Accomplishments that I'm proud of
A Fancy Frontend; Maintainable/Extendable code; Secure system.
What I learned
I should get teammates sooner.
What's next for Tutder = Tinder + Uber for learning
The system can be extended to a universal karma system by integrating blockchain-like technologies.
Better matching algorithm.