### درباره NEXOP
NEXOP یک محصول تخصصی و دادهمحور در حوزه بازار سرمایه و ابزارهای مشتقه است. این محصول امکاناتی مانند مشاهده لحظهای اطلاعات بازار، تحلیل زنجیره اختیار معامله، ساخت و ارزیابی استراتژیهای معاملاتی، مدیریت موقعیتها و ارائه گزارشهای تحلیلی را در اختیار کاربران قرار میدهد.
فرانتاند NEXOP با React، TypeScript و Vite توسعه داده شده و با مجموعهای از REST APIها، سرویسهای احراز هویت و جریانهای داده Real-time در ارتباط است.
به دلیل ماهیت مالی محصول، صحت نمایش اطلاعات، پایداری ارتباطات لحظهای، سرعت رابط کاربری و قابلیت نگهداری کد برای ما اهمیت بالایی دارد.
## درباره این موقعیت شغلی
ما بهدنبال یک Senior Frontend Developer هستیم که علاوه بر توسعه قابلیتهای جدید، بتواند در ارتقای معماری و کیفیت فنی NEXOP نقش موثری داشته باشد.
فرد موردنظر باید توانایی کار روی یک محصول موجود و در حال توسعه را داشته باشد؛ محصولی که همزمان نیازمند توسعه Featureهای جدید، مدیریت بدهی فنی، افزایش پوشش تست، بهینهسازی Performance و استانداردسازی فرآیندهای توسعه است.
در این موقعیت، صرفاً بهدنبال فردی برای پیادهسازی UI نیستیم. انتظار داریم این فرد بتواند مسئله را از سطح نیاز محصول تا طراحی راهکار فنی، پیادهسازی، تست، انتشار و مانیتورینگ دنبال کند.
## مسئولیتهای اصلی
### توسعه محصول
- توسعه قابلیتهای جدید NEXOP با React و TypeScript
- پیادهسازی صفحات و کامپوننتهای دادهمحور، تعاملی و Responsive
- توسعه جداول، فیلترها، فرمهای پویا و نمودارهای مالی
- پیادهسازی صحیح رابطهای فارسی، RTL و تاریخ شمسی
- همکاری نزدیک با تیمهای محصول، طراحی، بکاند و داده
- تبدیل نیازهای پیچیده مالی و تحلیلی به تجربه کاربری قابلفهم
### بهبود معماری فرانتاند
- ارزیابی و بهبود معماری فعلی پروژه
- شکستن کامپوننتهای بزرگ و کاهش پیچیدگی کد
- جداسازی مناسب UI، Business Logic، State Management و Data Access
- طراحی کامپوننتها و Hookهای قابل استفاده مجدد
- تعریف مرز مشخص میان Featureها و Shared Componentها
- کاهش Coupling و مدیریت هدفمند Technical Debt
- مشارکت در تدوین Architecture Decision Recordها و استانداردهای فنی
### مدیریت داده و ارتباط با بکاند
- طراحی و توسعه یک API Layer استاندارد و Type-safe
- مدیریت Server State با TanStack Query
- مدیریت Client State با Zustand یا ابزارهای مشابه
- تعریف استاندارد برای Query Key، Cache، Mutation و Query Invalidation
- مدیریت Loading، Empty، Error، Retry و Offline Stateها
- همکاری با تیم بکاند برای طراحی و تثبیت API Contractها
- مشارکت در استفاده از OpenAPI یا روشهای مشابه برای تولید Type و API Client
### دادههای Real-time
- مدیریت دادههای لحظهای بازار از طریق WebSocket یا Centrifugo
- طراحی صحیح Subscription و Unsubscription
- مدیریت Reconnect، Resubscribe و Connection Recovery
- کنترل Eventهای تکراری، Out-of-order یا ازدسترفته
- جلوگیری از Memory Leak و Subscriptionهای باقیمانده
- کنترل نرخ بهروزرسانی UI در جریانهای پرتعداد داده
- جلوگیری از Re-renderهای غیرضروری
- طراحی Fallback مناسب در زمان قطع یا ناپایداری ارتباط
### Performance و مقیاسپذیری
- شناسایی Bottleneckهای رابط کاربری با React Profiler و Browser DevTools
- پیادهسازی Route-based Code Splitting و Lazy Loading
- بهینهسازی Bundle Size و زمان بارگذاری اولیه
- استفاده صحیح از Memoization، Deferred Rendering و Transitionها
- پیادهسازی Virtualization برای جداول و فهرستهای حجیم
- بهینهسازی نمودارهایی که بهصورت لحظهای بهروزرسانی میشوند
- تعریف و پایش Core Web Vitals و Performance Budget
- استفاده از Web Worker در مواردی که پردازش سمت کلاینت واقعاً سنگین است
### تست و تضمین کیفیت
- طراحی Testing Strategy برای پروژه
- نوشتن Unit Test برای توابع و منطقهای مالی حساس
- توسعه Integration Test برای فرمها، جداول و جریانهای اصلی کاربر
- توسعه E2E Test برای مسیرهای حیاتی محصول
- استفاده از Vitest یا Jest، React Testing Library و Playwright
- پیادهسازی Mock مناسب برای REST API و WebSocket
- جلوگیری از Regression در قابلیتهای مالی و معاملاتی
- مشارکت در تعریف Quality Gateهای فرآیند CI/CD
### Design System و تجربه کاربری
- توسعه و یکپارچهسازی Design System محصول
- استانداردسازی کامپوننتهای مشترک، Tokenها و الگوهای تعاملی
- کاهش Inline Styleها و Styleهای پراکنده
- همکاری با تیم طراحی برای پیادهسازی دقیق طرحها
- مستندسازی کامپوننتها با Storybook یا ابزارهای مشابه
- رعایت Accessibility، Semantic HTML و Keyboard Navigation
- توجه به تجربه کاربری در Loading، Error و Empty Stateها
### امنیت و پایداری
- پیادهسازی امن جریانهای Authentication و Authorization در فرانتاند
- درک صحیح معماری BFF، Cookie-based Authentication، OIDC و CSRF
- جلوگیری از قرارگرفتن Secret، Token یا اطلاعات حساس در Client Bundle
- توجه به ریسکهای XSS، Token Leakage و مدیریت ناامن Storage
- طراحی Error Boundary و Recovery Mechanism در سطح برنامه و Feature
- همکاری در راهاندازی Error Tracking و Frontend Observability
### رهبری فنی
- مشارکت فعال و موثر در Code Review
- تعریف و ترویج استانداردهای کدنویسی
- کمک به اولویتبندی Technical Debt
- منتورینگ توسعهدهندگان دیگر تیم
- ارائه راهکارهای فنی همراه با تحلیل Trade-off
- مشارکت در تخمین، برنامهریزی و تصمیمگیریهای فنی
- کمک به ایجاد فرهنگ تست، مستندسازی و مالکیتپذیری
## مهارتهای فنی ضروری
- تسلط عمیق بر JavaScript مدرن و TypeScript
- تجربه حرفهای توسعه محصولات Production با React
- درک عمیق React Rendering Model، Hooks و Component Lifecycle
- تجربه طراحی و نگهداری SPAهای متوسط یا بزرگ
- تسلط بر TanStack Query یا ابزارهای مشابه مدیریت Server State
- تجربه کار با Zustand، Redux Toolkit یا ابزارهای مشابه
- تجربه عملی کار با REST API
- تجربه جدی در کار با WebSocket و دادههای Real-time
- توانایی توسعه جداول، فرمها و فیلترهای پیچیده
- تجربه کار با کتابخانههای Data Visualization
- تسلط بر HTML، CSS، Responsive Design و RTL
- تجربه نوشتن Unit و Integration Test
- تسلط بر Git و فرآیند Code Review
- توانایی تحلیل و بهینهسازی Performance
- درک مناسب از Authentication، Browser Security و Network Fundamentals
## تجربههای ارزشمند
موارد زیر الزام قطعی نیستند، اما امتیاز محسوب میشوند:
- تجربه کار با محصولات FinTech یا بازار سرمایه
- آشنایی با اختیار معامله و استراتژیهای آپشن
- تجربه کار با Centrifugo
- تجربه کار با Ant Design
- تجربه کار با Recharts، D3.js یا کتابخانههای مشابه
- تجربه استفاده از Playwright
- تجربه راهاندازی Storybook
- تجربه کار با OpenAPI و تولید خودکار Type یا API Client
- تجربه پیادهسازی Frontend Observability و Web Vitals
- تجربه بهینهسازی جداول و نمودارهای دارای داده پرتعداد
- آشنایی با Docker، Nginx و CI/CD
- آشنایی با Azure DevOps Pipeline
- تجربه مهاجرت تدریجی یا Refactor یک پروژه Production
- تجربه کار با Feature Flag و Progressive Delivery
تجربه Next.js برای این موقعیت مزیت محسوب میشود، اما الزام اصلی نیست؛ زیرا معماری فعلی NEXOP مبتنی بر React و Vite است.
## ویژگیهای فردی
- توانایی مالکیت یک مسئله از تحلیل تا انتشار
- قدرت تحلیل و حل مسئلههای پیچیده
- حساسیت نسبت به صحت داده و جزئیات محصول مالی
- توانایی ایجاد تعادل میان توسعه Feature و مدیریت بدهی فنی
- توانایی تصمیمگیری در شرایطی که راهحل کاملاً مشخص نیست
- مهارت ارتباطی مناسب با افراد فنی و غیرفنی
- روحیه همکاری، انتقال دانش و دریافت بازخورد
- توانایی توضیح Trade-offهای فنی به زبان قابلفهم
- مسئولیتپذیری نسبت به کیفیت و پایداری Production
- ذهنیت یادگیرنده و علاقهمند به بهبود مستمر
## انتظارات ما در ماههای ابتدایی
انتظار داریم فردی که به تیم اضافه میشود بتواند:
- معماری و جریانهای اصلی NEXOP را شناسایی و مستند کند
- ریسکها و بدهیهای فنی فرانتاند را اولویتبندی کند
- Testing Foundation پروژه را ایجاد یا تقویت کند
- کامپوننتهای پیچیده و بزرگ را بهصورت تدریجی Refactor کند
- معماری WebSocket و مدیریت Subscriptionها را پایدارتر کند
- Type Safety پروژه را افزایش دهد
- Error Handling و Observability فرانتاند را بهبود دهد
- در کنار این اقدامات، توسعه قابلیتهای جدید محصول را ادامه دهد
مزایای همکاری با ما
- صبحانه و ناهار
- بیمه تکمیلی رایگان
- تسهیلات و وام با شرایط سازمانی
- کمکهزینه رفتوآمد
- بودجه اختصاصی تیمبیلدینگ
- محیطی پویا، صمیمی و تعاملی با فرهنگ همکاری و اشتراک دانش
- فرصت کار روی محصولات و سیستمهای واقعی و مقیاسپذیر با چالشهای فنی جدی