Enes Bala
Merre.al - Enes Bala

Merre.al

E-Commerce Marketplace for the Balkans

Published: April 2024 - August 2024 Updated: Never
Image from enesbala.com Personal Portfolio

Introduction

Merre.al is an online marketplace platform designed for the Albanian market.

It aims to provide an optimal experience tailored to the Albanian market facilitating buying and selling of various items - with a focus on User Experience - primarily optimized for performance and ease of use.

36 Pages & 200 Components


Extensive Interfaces & Functionality

40 REST API Endpoints


Built with SvelteKit and ElysiaJS - Bun

Over 150,000 Lines of Code


The Scale of the Project Codebase
Marina Bay Resort

Project Objectives

I wanted to provide users with the best possible experience, allowing them to find the products they need and sell the ones they don't - all in one place.

These were the main objectives of the project:

  • 1. Create a fast, simple and user-friendly online marketplace for Albanian users
  • 2. Facilitate easy listing and searching of items across multiple categories
  • 3. Allow users to communicate with each other directly through the platform
  • 4. Implement features to enhance user experience and trust in the platform

Image from enesbala.com Personal Portfolio

The Search Interface

In a platform such as Merre, it's crucial to allow the user to search for products with ease - whether on mobile or desktop - and provide the results fast.

Through a careful implementation of caching practices and by following best practices in SSR and incremental data loading with SvelteKit - it feels like the page knows what you want ahead of time.

Image from enesbala.com Personal Portfolio

Card Post Preview - Single Item

Image from enesbala.com Personal Portfolio

List Post Preview - Multiple Items

Price Filter for Search

Price Filter Interface - Dynamically Generated for every query

Currency Switcher - Built to allow users to select their preferred currency

Currency Switcher - Built to allow users to select their preferred currency

Image from enesbala.com Personal Portfolio

Posts

Posts are at the heart of the Merre Platform. We wanted to make it as easy as possible for users to create and manage their products.

This is why we focused on creating user-friendly interfaces that allow users to do just that.

Post Interface - Desktop View
Post Information

Post Information - Desktop View

Image from enesbala.com Personal Portfolio

Price Preview - Post Page

Image from enesbala.com Personal Portfolio

Location Section & Price History - Post Page

Post Management

Interfaces designed to allow users to update all details of their posts.

Image from enesbala.com Personal Portfolio
Image from enesbala.com Personal Portfolio

Manage Posts Interface - Desktop View

Image from enesbala.com Personal Portfolio

Drag and Drop - Image Manager for Posts

Categories & Tags (Post Attributes)

In order to differentiate between products and allow users to easily filter and find what they're looking for - categories were implemented.

When the User creates a Post, they can select it's category, and a list of Tags will be displayed, so the user can insert the necessary information

Section Highlight - Homepage of Marina Casino Website

Users - Merre

In order to facilitate a good experience for the users of the platform, the following had to be designed and developed:

    Dashboard and Settings Pages with 30+ Input Fields

    Recently Viewed & Liked Posts

    Authentication System Built from Scratch w/ Cookies

    Link Actions - Change Password (Forgot Password), Confirm Email & Phone Number

Image from enesbala.com Personal Portfolio

Messages & Notifications

Real-Time communication between users w/ Multiple Content Types (Post, Text, Image, etc.)

It was important to develop a powerful messaging solution, allowing users to communicate with each other - without having to rely on external solutions.

I opted for a custom, from-scratch solution, instead of opting for an existing plug-and-play service provider - in order to deliver to users full integration with other features of the platform, and to be better prepared for build systems similar to it, in the future.

Image from enesbala.com Personal Portfolio

Database Design

    Created Complex (Many-To-Many) Relations and ACID transactions to handle updates of platform posts (products)

    Utilized Prisma ORM to query the DB in a type-safe manner & for generating complex queries involving multiple entities, often interlinked

Image from enesbala.com Personal Portfolio

Technical Details:

Key Functionalities

Some of the crucial functionalities of the website:

Custom Authentication Solution & Middleware

    User Registration & Recovery

    Protected Routes and Redirects

    User Roles & Permission Management

Post Creation & Management

    Create and Manage Your Products

    For Individual Users and Businesses

    Edit, Update, and Delete Posts

Image Upload & Storage

    Upload Images for Product Listings

    Optimized for Storage and Performance

    Supports Multiple Formats

Search & Filtering Capabilities

    Efficient Search for Products

    Filter by Categories, Price, and More

    Supports Advanced Queries

Persistant Data w/ Local Storage

    Save User Preferences Locally

    Enable Quick Access to Saved Listings

    Supports Persistence Across Sessions

Dynamic Form Inputs w/ Validation

    Automatically Generated Form Inputs

    Handle changes and update Form State

    Supports Debounced Data Fetching

DevOps & Linux

    Dockerized the Platform and implemented Rolling Updates (Zero Downtime) with Coolify with Git Commit web-hooks

    Database Backups & Service Status Monitoring

    Server Redundancies through Docker Swarm Setup

    Connected Hetzner VPS to Local Home Server for optimal performance
    -> View Blog Article

Tech Stack:

Some of the primary technologies used in the development of the platform:

Sveltekit
HTML5 + CSS3
JavaScript / Typescript
Prisma ORM
TailwindCSS
Figma
Adobe Illustrator
Docker

Iconography by

Sean Maldjian

on

Noun Project
2025™