All case studies

Moroccan automotive parts marketplace

Garajcom

An Arabic-first marketplace connecting Moroccan car owners with automotive-parts sellers through product discovery, store management, inventory, and transactional ordering.

Garajcom platform interface

The challenge

The automotive-parts market is fragmented, making it difficult for customers to identify suitable parts and for independent sellers to manage a digital catalog, stock, and store-specific orders in one place.

The solution

Garajcom combines an RTL Angular storefront with seller and admin workspaces, an Express REST API, transactional inventory control, PostgreSQL data, Cloudinary media, and role-aware access.

Key outcomes

  • Arabic-first shopping experience priced in Moroccan dirhams
  • Connected seller stores, product catalogs, stock, and orders
  • Serializable order transactions that verify and deduct available inventory

Platform capabilities

01

Public marketplace, categories, product details, cart, shipping data, and order creation

02

Customer accounts, profiles, password recovery, and order history

03

Seller registration, store creation, product publishing, image upload, and store-order visibility

04

Admin management for account types, dynamic registration forms, product forms, users, stores, and orders

05

Dynamic registration and product forms assembled from configurable groups and fields

06

Cloudinary product-image upload and removal

07

Arabic and English translation resources with an RTL-first interface

08

Docker Compose deployment with PostgreSQL, Express, Angular/Nginx, and Certbot

Connected business workflow

  1. STEP 1Customer discovers a part
  2. STEP 2Product is added to the local cart
  3. STEP 3Shipping and payment method are submitted
  4. STEP 4Server validates current product and stock
  5. STEP 5Serializable transaction creates order and deducts inventory
  6. STEP 6Customer and relevant seller view their order records

System architecture

  • Angular 17 SPA with standalone components, lazy loading, TypeScript, and RxJS
  • Express 5 REST API with controllers, middleware, Zod validation, and role-aware routes
  • Prisma 7 and PostgreSQL 17 for users, stores, products, orders, and configurable forms
  • Cloudinary for product media, Nodemailer for password recovery, and Nginx/Docker for deployment

Security & integrity

  • bcrypt password hashing and time-limited JWT authentication
  • Store-ownership and user/admin authorization checks
  • Zod validation and bounded numeric and text fields
  • Serializable order transaction protects inventory consistency
  • Helmet, explicit CORS origins, hidden powered-by header, and authentication rate limits
  • Image size and MIME restrictions, with documented ownership hardening still required for Cloudinary deletion

Technology

Angular 17TypeScriptRxJSExpress 5Node.jsPrisma 7PostgreSQL 17CloudinaryTailwind CSS 3DockerNginx