احترافيمتقدم

أباميا

منصّة لتتبّع الثروات تشمل الأسهم والعملات الرقمية والعقارات، تُحسَب فيها كل التقييمات والعوائد وتأثير سعر الصرف على الخادم وتُعرض باليورو.

— نظرة عامة

Architecture Overview

graph TB
    subgraph Web["apps/web — React 19 + Vite"]
        A[TanStack Router] --> B[TanStack Query]
        B --> C[Recharts panels]
        A --> D[Zustand stores]
    end
    subgraph Contracts["packages/core"]
        E[Zod schemas + response types]
    end
    subgraph Server["apps/server — NestJS on Fastify"]
        F[Controller] --> G[Service]
        G --> H[Loader]
        G --> I[Calculator]
        G --> J[Presenter]
    end
    subgraph Data
        K[(PostgreSQL via Drizzle)]
        L[Market data port]
        M[(Redis cache)]
    end
    B <-->|REST| F
    E --> A
    E --> F
    H --> K
    I --> L
    L --> N[Twelve Data / EODHD]
    G --> M

تطبيق لتتبّع الثروات طُوِّر في Poyesis. يتابع محفظة واحدة عبر ثلاثة أنواع من الأصول — الأسهم المُدرجة والعملات الرقمية والعقارات — فوق نموذج واحد: المحفظة تحتوي مراكز وأصولًا، وكلٌّ منها يتكوّن من دفعات شراء تحمل كلفة التملّك.

كل الحسابات المالية وحسابات العرض تجري على الخادم. فمتوسط الكلفة والقيمة السوقية والأرباح المحققة وغير المحققة والعائد المرجَّح زمنيًا ونِسَب التوزيع وتأثير سعر الصرف تصل إلى الواجهة أرقامًا نهائية، فالمتصفّح يعرض ولا يعيد الحساب أبدًا. اليورو هو عملة التقرير: كل مبلغ يُجمع عبر عدة أصول يُحوَّل أولًا من عملة تداول الأصل نفسه.

نطاقات الخادم مقسَّمة حسب الدور لا حسب السهولة: الخدمة تنسّق بين مُحمِّل وحاسب وعارض، والمُحمِّل يملك كل استعلام على جدوله، والحاسب يكتب معادلته في السطر الذي يعلو العملية الحسابية. وتتشارك الواجهة والخادم عقودهما بصيغة مخطّطات Zod في حزمة واحدة، فيُعرَّف كل مسار مرة واحدة للجهتين.

أهم الميزات:

  • محفظة واحدة تضم مراكز الأسهم وأصول العملات الرقمية والمشاريع العقارية
  • كلفة التملّك لكل دفعة، مع متوسط السعر المرجَّح والعمولة والضريبة ورسوم الصرف
  • العائد المرجَّح زمنيًا (XIRR) ومضاعف رأس المال المستثمر لكل أصل
  • منحنيات القيمة مقابل مؤشر مرجعي، مع عزل تأثير سعر الصرف
  • جداول تطوّر السعر على مدد مقارنة قابلة للتخصيص
  • تتبّع الأرباح الموزّعة، يدويًا أو من إغلاق المراكز
  • مشاريع عقارية مع خطط عمل ومسار للفرص واستيراد المعاملات من CSV بمبدأ الكل أو لا شيء
  • تحديد مواقع العقارات جغرافيًا وعرضها على خريطة تفاعلية
  • مصادقة تدعم مفاتيح المرور ومرفقات S3 موقَّعة مسبقًا
  • واجهة بالفرنسية بالكامل

التقنيات المستخدمة:

  • الواجهة: React 19، Vite 7، TanStack Router/Query/Table، Zustand، Recharts، Tailwind v4
  • الخادم: NestJS 11 على Fastify، Drizzle ORM، PostgreSQL، Redis
  • العقود: TypeScript ومخطّطات Zod 4 مشتركة في المستودع الموحّد
  • التكاملات: بيانات السوق من Twelve Data و EODHD، وBetter Auth، وAWS S3، وResend، وSlack
  • الأدوات: pnpm workspaces، Turborepo، Node 24

عمل احتكاري لصالح جهة عمل، لذلك يبقى المستودع خاصًا.

— التقنيات
TypeScriptNestJSReactViteDrizzle ORMPostgreSQLRedisTurborepoTailwind CSSREST API