
فولاستکوب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