Project
About project
About project
About project
Lingoline is an Arab startup aimed to enter the online education market with a platform for learning foreign languages, which includes a website and mobile apps for iOS and Android. Teachers sign up on the platform, verify their qualifications, and offer their services. Lessons take place via audio or video calls — students can choose between individual or group formats and participate in discussion rooms. They select a language, price, and lesson format. Payments are made per session, and it's possible to switch teachers at any time.
The client turned to Doubletapp for help developing the platform.
WHAT PROBLEMS THE SERVICE SOLVES
WHAT PROBLEMS THE SERVICE SOLVES
WHAT PROBLEMS THE SERVICE SOLVES
The platform offers both teachers and students a convenient tool to quickly achieve their goals:
- Teachers don’t need to search for students through local platforms in every country, handle currency conversion, ensure timely payments without debt, organize a learning environment, or find reliable online tools for each student.
- Students don’t have to navigate a maze of teaching offers, adjust to varying payment systems and communication tools — they can simply choose from verified teachers, find a price that fits their budget, and change instructors if needed.
The overall approach — conversation-based practice with native speakers and certified teachers — helps solidify theoretical knowledge, boost confidence, improve spoken language and intonation, and develop listening comprehension.
For written communication, chat rooms are provided. All users can create chats for learning or informal discussions. Platform admins monitor compliance with ethical standards, handle complaints, and restrict access for disruptive users.

THE SOLUTION
THE SOLUTION
THE SOLUTION
Doubletapp developed from scratch:
- A user-facing website
- An admin panel for the platform owners
- Mobile apps for both iOS and Android
The website and apps offer identical functionality with synced user settings.
Given the client’s focus on a global audience — including the US, Europe, and the Middle East — the platform offers courses in English, Arabic, French, German, Italian, and Spanish, with full localization and interface adaptation.
There are two user roles: teachers and students. Teachers sign up, upload educational credentials, and await admin approval before they can start teaching.
Online lessons are held in:
- Chat Room – group lessons with a prearranged schedule
- Exchange Room – individual meetings
Teachers and students can also chat, exchange media files, and share PDFs.
Admins interact with users through the admin panel: monitoring behavior, posting/editing news and articles.

THE OUTCOME
THE OUTCOME
THE OUTCOME
This was the client’s first major project. They came with an idea and early design sketches. Together, we translated the idea into a specification, worked through how it should function, and adjusted the design accordingly.
As a result, the startup received a fully functioning product, launched it successfully, gained active users, and secured a new round of funding.
Frontend
Backend
Mobile

Our super team










IMPLEMENTATION DETAILS
IMPLEMENTATION DETAILS
IMPLEMENTATION DETAILS
We developed two web apps: the main website and the admin panel. The website is built with React, using Next.js for SEO and TypeScript for the frontend.
Video Calls
Initially, the client proposed Zoom integration, but licensing and partnership hurdles made it unfeasible. Instead, we chose Jitsi — an open-source VoIP system — as it supported both React (web) and Flutter (mobile), and we adapted it to the platform’s needs.
Since Jitsi doesn’t limit session duration by default, we implemented the Time Restricted plugin, which pings our backend for each meeting ID and enforces session duration.
We had to ensure users couldn’t join multiple meetings simultaneously or re-enter the same meeting twice. Jitsi lacked this functionality, so we used the Event Sync plugin to send webhooks for all relevant events (user joined/left, meeting started/ended). However, as HTTP is not an ordered protocol, we faced out-of-sequence event issues. To resolve this, we polished the Event Sync plugin and added a RabbitMQ queue to ensure event order and data integrity.
Moderator roles are handled via JWT tokens through the Token Moderation plugin. The backend generates tokens containing role info, and the frontend (React or Flutter) passes them to Jitsi SDK, enabling actions like adding/removing users during meetings.
Chats
All users can create and participate in chats. We used WebSocket, enabling real-time bi-directional communication: messages sent by one user appear instantly for others via push from the server, while media and attachments can also be shared.
Payments
Originally, the client wanted to use PayPal, but due to limitations in certain countries, we opted for Stripe, which supports multiple payment methods and is easier to manage. Events from Stripe (e.g. subscriptions, payments) are handled via webhooks and passed to RabbitMQ for processing.
Teacher payouts occur monthly, on the 1st of each month. The system calculates teacher earnings minus the platform fee. Teachers can view their transaction history, and platform owners manage all payments via the Stripe dashboard, with Excel exports available.
Students signed up on the platform and paid for lessons through a subscription model. To test Stripe, we created test environments with real card transactions to simulate full workflows. Stripe's tools allowed us to “fast forward” subscription timelines to test features like renewals and auto-cancellations.
Admin Panel
The platform owner manages operations via the admin panel.
Admins can upload, format, and edit articles with images using a rich-text editor. Since the default editor didn't meet all the platform requirements, we developed a custom plugin system and selected a library that supports additional custom plugins.
Platform moderation includes both managing user bans and reviewing teacher applications. When a user signs up as a teacher, they complete an application form and upload their credentials. Admins review each submission and either approve or reject it. Upon approval, teachers are granted additional access rights.
Mobile Apps — Flutter
For mobile development, we chose a fast and cost-effective solution — Flutter. Developers’ time is expensive, and faster development means lower costs. We had limited time to build identical apps for both iOS and Android, so this technology was a perfect fit.
When developing a mobile app, it's essential to consider Google Play and App Store requirements early on — for example, a chat feature must include a blocking function. By planning ahead, we minimized delays during the review process for this feature-rich application.
Project Management
Overall, the work followed a flexible development process, with teams often working in parallel. For example, as soon as the backend team completed the authorization feature, the frontend and mobile developers immediately picked it up for implementation.
The project had a fixed budget, and we managed to stay within it while remaining agile and efficient — ultimately releasing a fully functional product ready for real users.