LP Agency

A marketplace for finding specialists in Turkey

PWAs, chats, payments, and integrations

About the project

Sphere:
services and marketplace
Project type:
PWA is a specialist search platform
Market:
Turkey
Technologies:
Next.js, NestJS, PostgreSQL, Prisma
Integrations:
Stripe, Resend, Infobip, Google, Facebook, Apple, OpenStreetMap, Web Push
Website:

spec1

We have developed a PWA platform for finding specialists and obtaining various services in Turkey. The project is aimed, among other things, at Russian-speaking emigrants who need to find a trusted specialist or contractor on the spot.

According to its model, this is a full-fledged marketplace: the user selects the right category, searches for a specialist in language, location and other parameters, studies the profile and can start communicating directly through the platform.

Specialists have their own business model: the first requests are available for free, and the further opening of chats is paid from the internal balance.

Task

It was necessary to create a full-fledged platform that combines a catalog of specialists, search, personal accounts, communication, payments and moderation tools in one product.

At the same time, the project was originally planned as a PWA, so it was important to ensure full-fledged operation from mobile devices without having to develop separate native applications.

The finished design was provided by the customer. Our task was to implement it, develop frontend and backend, integrate external services, configure the server infrastructure, and launch the project.

Architecture and development

Frontend was developed for Next.js, backend — on NestJS. PostgreSQL is used as the database, and work with the data is organized through Prisma.

The architecture separates the client and server parts of the application, which allows for independent development of the interface and business logic of the platform.

The provided design was implemented on frontend, and during the development process, if necessary, individual interface solutions were finalized directly on the application side when it was necessary to adapt the layouts to the real functionality.

spec4

Two roles and personal accounts

The platform has two main roles:

  • the client is looking for specialists and turns to them;
  • specialist — creates a profile, specifies his services and receives requests.

After registration, the user can select the appropriate role and fill out the profile.

The specialist has access to information about languages, location, categories of services, information about himself, rating and other parameters necessary for the search.

Search for specialists

The platform is based on a catalog of specialists with filtering.

The user can search for performers based on:

  • Service categories;
  • language;
  • locations;
  • rating.

After selecting a specialist, his profile opens with detailed information and reviews.

The categories cover a wide range of services. Among them are real estate and consumer services, legal aid and residence permit, beauty and health, transport and logistics, education and services for children, work and IT, tourism and recreation, food and goods.

In other words, the platform is not limited to one professional niche and can be used to search for a wide variety of specialists in Turkey.

Chats with paid opening

One of the key features of the project was the model of communication through paid chats.

The client can start contacting a specialist, after which he receives a notification of a new message. The message content itself is hidden until the chat opens.

A free limit of first calls is provided for new specialists. After using it, the specialist replenishes the internal balance and pays for the opening of the following chats.

Thus, communication is directly related to the monetization of the platform.:

client’s request → specialist’s notification → opening a chat → debiting funds from the balance.

WebSocket/Socket.IO was used to implement chats, which allows you to exchange messages directly within the platform.

Balance and Stripe

An internal settlement balance has been implemented for specialists.

Deposits are made via Stripe, after which the funds can be used to pay for opening chats.

The system also provides a history of transactions so that a specialist can track the movement of funds.

Thus, the payment part is directly related to the main mechanics of the marketplace, rather than being a separate module for paying for services.

spec3

Authorization and external services

Several external services have been integrated into the platform.

Infobip is used for SMS confirmation of phone numbers and OTP codes.

Resend is responsible for transactional email communication.

For authorization, we implemented login via Google, and also prepared integrations with Facebook and Apple. The latter are temporarily hidden in the current version, but technically implemented.

Browser-based Web Push notifications have been connected separately so that users can receive notifications about platform events directly through the browser.

Geolocation and maps

OpenStreetMap was used to work with the location.

Implemented on its basis:

  • location identification and selection;
  • geocoding;
  • working with addresses;
  • linking specialists to a location;
  • search for specialists based on the region.

This is especially important for a service where the physical location of a specialist is often one of the main selection criteria.

PWA

The platform was implemented as a Progressive Web App.

The user can work with the service directly from the browser, and the PWA mechanics allow using it in a more familiar way for mobile applications.

The project also implements push notifications via service workers.

At the same time, the interface was adapted taking into account mobile use — the main scenario of the platform is to search for specialists directly from a smartphone.

Ratings, reviews, and Complaints

After the interaction, users can rate specialists and leave feedback.

The rating is displayed in the profile and is used as one of the parameters when selecting a performer.

A mechanism for complaints against specialists has also been implemented. This allows users to report problems, and the administration to handle such requests.

spec6

The administrative part

An administrative part has been developed to manage the platform.

It allows you to work with the main entities of the service.:

  • by users;
  • by specialists;
  • by categories;
  • complaints;
  • moderation;
  • operations and other data platforms.

We have developed a separate service category management page. Through it, you can create and edit the structure of categories and directions.

Server and startup

In addition to developing the application itself, we have fully prepared the project’s server infrastructure.

We set up the server environment, deployed the frontend and backend, connected the database and necessary services, configured the domain and SSL certificate.

We have also enabled external integrations necessary for authorization, SMS, mail, payments, cards, and push notifications.

Result

As a result, we have developed a full-fledged marketplace for finding specialists in Turkey with its own communication and monetization system.

The platform implements:

  • registration and authorization;
  • roles of the client and specialist;
  • personal accounts;
  • specialist profiles;
  • categories and directions of services;
  • search and filtering;
  • ratings and reviews;
  • real-time chats;
  • paid opening of chats;
  • free limit of first requests;
  • the internal balance of the specialist;
  • payments via Stripe;
  • history of operations;
  • SMS confirmation via Infobip;
  • transactional mail via Resend;
  • OAuth via Google, Facebook and Apple;
  • geolocation and maps based on OpenStreetMap;
  • Web Push;
  • PWA;
  • complaints and moderation;
  • the administrative part;
  • category management;
  • multilingual interface in Russian and English.

The project is fully deployed on a server, connected to a domain, and available to users at onliners.app.