amin norollah.
Loading portfolio
مارکت‌پلیس عمده‌فروشی B2B برای فروشگاه‌های مواد غذایی در کشورهای نوردیک، با موتوری که به هر فروشگاه می‌گوید چه چیزی را دوباره سفارش بدهد

فول‌استکوبFocalPay

FocalPay Marketplace

مارکت‌پلیس عمده‌فروشی B2B برای فروشگاه‌های مواد غذایی در کشورهای نوردیک، با موتوری که به هر فروشگاه می‌گوید چه چیزی را دوباره سفارش بدهد

سال
آوریل 2026
نوع
فول‌استک
فناوری‌ها
17
مسیر
وب

جزئیات

FocalPay Marketplace جایی است که فروشگاه‌ها از عمده‌فروش‌ها و تولیدکننده‌ها خرید می‌کنند، در بازارهای نوردیک و به زبان‌های سوئدی، دانمارکی، نروژی، ایسلندی و انگلیسی. مهم‌ترین بخشش موتور پیشنهاد خرید است: موجودی فعلی و سرعت فروش هر کالا را نگاه می‌کند، کالاهایی را که دارند تمام می‌شوند نشان می‌دهد، مقدار مناسب را با در نظر گرفتن حداقل سفارش پیشنهاد می‌دهد و ارزان‌ترین تأمین‌کننده را انتخاب می‌کند. فروشگاه با یک کلیک این پیشنهادها را به سبد خرید می‌برد. کاتالوگ، سبد و سفارش، پیام‌رسانی، لجستیک، مدیریت طرف‌های معامله و پنل مدیریت کل هم بخش‌های دیگر سیستم هستند.

در این مدل FocalPay فقط نقش معرف را دارد و پول معامله از دستش رد نمی‌شود. برای هر سفارش یک سابقه‌ی کامل ثبت می‌شود که بعداً نمی‌شود دست‌کاری‌اش کرد، و درآمد FocalPay کمیسیونی است که ماهی یک بار فاکتور می‌شود.

مهندس اصلی پروژه من هستم و از ۱۵۵ کامیت اول، حدود ۱۱۰ تا را خودم زده‌ام؛ هم در فرانت‌اند و هم در بک‌اند. فرانت‌اند با Angular 22 و به سبک جدیدش نوشته شده: بدون zone.js، با signals، کامپوننت‌های standalone و OnPush. برای جدول‌ها از TanStack Table با virtual scroll و برای ظاهر از Tailwind v4 روی design tokenها استفاده کردم. بک‌اند یک ماژولار مونولیت با Java 25 و Spring Boot 4.1 است که به هفت bounded context تقسیم شده و ساختار hexagonal دارد، و ArchUnit مراقب است مرز بین ماژول‌ها رعایت شود. دیتابیس PostgreSQL است با ۳۹ migration در Flyway، سیستم حدود ۱۵۰ endpoint دارد و چرخه‌ی سفارش با یک state machine مدل شده است. ورود کاربران روی Spring Authorization Server است و هر کاربر فقط داده‌های سازمان خودش را می‌بیند.

برای پول و زبان حوصله‌ی زیادی به خرج دادم. مبلغ‌ها به کوچک‌ترین واحد پول ذخیره می‌شوند و هر ارز قواعد خودش را دارد (مثلاً کرون ایسلند اعشار ندارد)، مالیات بر ارزش افزوده برای هر کشور جدا حساب می‌شود، مرتب‌سازی و جستجو قواعد الفبای هر زبان را رعایت می‌کنند و متن‌های ترجمه‌شده حتی حالت‌های جمع زبان ایسلندی را درست نشان می‌دهند. بیش از ۳۰ ADR نوشتم و چند بررسی خودکار هم به بیلد اضافه کردم که جلوی کلید ترجمه‌ی جاافتاده، کار نادرست با پول و راه‌حل‌های موقتیِ ازمهلت‌گذشته را می‌گیرند. پلتفرم مرحله‌به‌مرحله آماده می‌شود تا در اولین فروشگاه پایلوت راه بیفتد.

فناوری‌ها

  • Angular
  • TypeScript
  • Signals
  • Tailwind CSS
  • TanStack Table
  • Java
  • Spring Boot
  • PostgreSQL
  • Flyway
  • MongoDB
  • Hexagonal Architecture
  • DDD
  • OAuth 2.1
  • ArchUnit
  • Testcontainers
  • Playwright
  • i18n

تجربه

پروژه‌ها

لینک عمومی ندارد؛ پروژه‌ی تجاری یا داخلی است