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.

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
Public marketplace, categories, product details, cart, shipping data, and order creation
Customer accounts, profiles, password recovery, and order history
Seller registration, store creation, product publishing, image upload, and store-order visibility
Admin management for account types, dynamic registration forms, product forms, users, stores, and orders
Dynamic registration and product forms assembled from configurable groups and fields
Cloudinary product-image upload and removal
Arabic and English translation resources with an RTL-first interface
Docker Compose deployment with PostgreSQL, Express, Angular/Nginx, and Certbot
Connected business workflow
- STEP 1Customer discovers a part
- STEP 2Product is added to the local cart
- STEP 3Shipping and payment method are submitted
- STEP 4Server validates current product and stock
- STEP 5Serializable transaction creates order and deducts inventory
- 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