ProfessionnelAvancé

Apamea

Plateforme de suivi de patrimoine — actions, crypto et immobilier — dont chaque valorisation, rendement et effet de change est calculé côté serveur et publié en euros.

— Vue d'ensemble

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

Une application de suivi de patrimoine développée chez Poyesis. Elle suit un portefeuille unique sur trois univers d'actifs — actions cotées, crypto et immobilier — au-dessus d'un seul modèle : un portefeuille contient des positions et des actifs, chacun composé de lots, les achats individuels qui portent le prix de revient.

Tous les calculs métier et d'affichage tournent côté serveur. Prix de revient unitaire, valorisation, plus-values réalisées et latentes, taux de rendement interne, répartition et effet de change arrivent au frontend sous forme de nombres finis : le navigateur affiche, il ne recalcule jamais. L'euro est la devise de référence — toute somme agrégée est d'abord convertie depuis la devise de cotation de la ligne concernée.

Les domaines serveur sont découpés par rôle plutôt que par commodité. Un service orchestre un loader, un calculator et un presenter ; le loader détient tous les accès à sa table ; le calculator porte sa formule sur la ligne au-dessus du calcul. Frontend et backend partagent leurs contrats sous forme de schémas Zod dans un seul package : chaque route est typée une fois pour les deux côtés.

Fonctionnalités clés :

  • Un portefeuille couvrant positions boursières, actifs crypto et projets immobiliers
  • Prix de revient par lot, avec cours moyen pondéré, commission, TVA et frais de change
  • Taux de rendement interne (TRI) et multiple sur capital investi par ligne
  • Courbes de valorisation comparées à un indice de référence, effet de change isolé
  • Tableaux d'évolution du cours sur des horizons de comparaison configurables
  • Suivi des dividendes, saisis manuellement ou issus des clôtures
  • Projets immobiliers avec business plans, pipeline et import CSV tout-ou-rien des transactions
  • Géocodage des biens et affichage sur carte interactive
  • Authentification compatible passkey et pièces jointes S3 présignées
  • Interface entièrement en français

Stack technique :

  • Frontend : React 19, Vite 7, TanStack Router/Query/Table, Zustand, Recharts, Tailwind v4
  • Backend : NestJS 11 sur Fastify, Drizzle ORM, PostgreSQL, Redis
  • Contrats : TypeScript, schémas Zod 4 partagés dans le monorepo
  • Intégrations : données de marché Twelve Data et EODHD, Better Auth, AWS S3, Resend, Slack
  • Outillage : pnpm workspaces, Turborepo, Node 24

Travail propriétaire réalisé pour un employeur : le dépôt reste privé.

— Stack
TypeScriptNestJSReactViteDrizzle ORMPostgreSQLRedisTurborepoTailwind CSSREST API