Android appJavaRESTNode.js APIAzureGoogle sign-inauthenticationGoogle Calendarsession bookingMongoDBusers, matches, eventsAgoravideo callsOpenAIgrammar help in chat
How it works. Scroll sideways to see the whole diagram.

The problem

Language learners need regular practice with people who speak the language they are learning, but finding a good partner and agreeing on times takes effort.

Key decisions

Recommendations that learn from likes
Each user keeps an "ideal match" profile: the running average of everyone they have liked. Candidates are ranked by weighted distance from it, with shared interests weighted most, and people who already liked the user are shown first to maximize matches.
Scheduling without back-and-forth
Booking a session creates a Google Calendar event and invites the partner, so both calendars stay in sync.
Calls inside the app
Video calls run on Agora, with the backend issuing short-lived access tokens for each call.
Tested from the start
Jest tests with mocked Google APIs cover the backend, and GitHub Actions runs them on every change.

Results

  • Best Project Award, CPEN 321
  • Recommendations returned in under 150 ms across 10,000 test requests

Screenshots

Screenshot of LangSync

Built with

Java, Android, Node.js, MongoDB, Jest, GitHub Actions, Azure