Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
Éditeur SaaS d'IA souveraine, Tunis et Dakar. Suivi-évaluation institutionnel, reporting réglementaire bancaire, comptabilité augmentée : chaque chiffre rattaché à sa source, chaque décision reconstru
Translation pending
FinanceTypeScript · PLpgSQLGitHub @ALGORIA-FACTORYOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Malica Office · Comptabilité augmentée pour PME et cabinets · un vertical ALGORIA Factory
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Suite comptable augmentée pour les PME et leurs experts-comptables. La PME photographie une pièce ; le Socle en tire l'écriture, la TVA et l'échéance ; le cabinet supervise et tranche. Vertical de Factory Tower (Algoria Factory).
Marché initial : Tunisie — Système Comptable Tunisien, code TVA tunisien. Extension prévue à l'UEMOA et à l'OHADA par packs de juridiction versionnés.
Un chiffre qui lie relève du Socle ; un texte qui explique relève de Malica.
Le Socle est un ensemble de moteurs déterministes en TypeScript — lecture, écriture, TVA, P&L, échéances, rapprochement, change. Mêmes entrées, même sortie, toujours. Aucun modèle de langage n'y intervient.
Malica est la couche agentique. Elle perçoit, organise, rappelle et explique — mais ne calcule jamais. Pour tout chiffre, elle appelle un moteur du Socle et restitue le résultat avec sa citation.
Cette séparation n'est pas une préférence de style : c'est ce qui permet d'être conversationnel et proactif à l'endroit précis — la comptabilité et le fisc — où inventer un chiffre est interdit.
La lecture se fait en deux passes, et la garantie tient à ce que la seconde ne voit jamais la pièce.
Passe 1 — le relevé. Ce qui est écrit, mot par mot, avec sa boîte. Trois chemins, un seul contrat de sortie :
| Pièce | Relevé par | Coût |
|---|---|---|
| PDF natif | sa propre couche de texte (pdf.js) | aucun — ni modèle ni réseau |
| PDF scanné | image extraite sans canvas, puis l'œil | un appel |
| Image | l'œil (Qwen-VL-OCR) | un appel |
Passe 2 — la désignation. Le raisonneur reçoit le plan de tokens, jamais
l'image. Il ne renvoie que des couples page/ordinal. Aucun montant ne
traverse sa réponse : les valeurs sont relues dans le plan. Une désignation
qui ne correspond à aucun token devient un drapeau, jamais une valeur.
Halluciner un montant est donc structurellement impossible — ce n'est pas un filtrage après coup.
apps/
web/ l'application — PME et cabinet, React + Vite
api/ Express + pg — remplace PostgREST et GoTrue
packages/
socle/ les contrats, les moteurs, les ports et le dictionnaire — partagés
db/
migrations/ le schéma : la source de vérité, rejouée telle quelle
local/ la couche d'authentification et de rôles, rejouable
corpus/ le chargement du corpus juridique, qui s'alimente à part
dev/ le jeu d'essai : un cabinet, deux dossiers, de quoi voir
docs/ maquettes et marque
Un espace de travail npm, une seule règle de style à la racine. packages/socle
est né le jour où l'API est devenue le second consommateur des moteurs : la
lecture citée et Malica y tournent désormais, à côté de l'application. Le
paquet ne se compile pas — Node en décape les types, Vite les résout — et il ne
déclare que decimal.js et zod.
Prérequis : Node.js 22 et PostgreSQL 17 (ou 16).
npm ci
npm run dev # l'application, sur le port 8080
npm run dev:api # l'API, sur le port 3000
La coque Android — le bundle embarqué, puis le projet android/ synchronisé :
npm run coque:staging # build:coque:staging, puis cap sync android
npm run coque:ouvrir # Android Studio sur android/
cd android && ./gradlew assemblePiloteDebug -PversionName=0.1.0 # un APK de débogage, sans Android Studio
Voir docs/coque-native.md pour l'outillage (JDK 21, SDK), et docs/exploitation.md pour les serveurs.
Copiez .env.example en apps/web/.env et apps/api/.env, puis renseignez
les valeurs. Aucun .env n'est suivi par git.
Les trois portes que la CI exécute à chaque poussée :
npm run lint # tout le dépôt
npm run typecheck # les deux applications
npm test # les deux applications
Les tests de l'API ont leur propre base, malica_test, montée depuis les
migrations seules : lancez npm run base-de-test une fois avant npm test,
et chaque fois que vous voulez repartir d'une base vierge. Ils refusent de
s'exécuter contre malica_local, la base de travail.
Les épreuves (outils/epreuves/*.mjs, npm run verifier,
npm run epreuve:bout-en-bout), elles, parcourent l'application en marche et
écrivent donc dans malica_local. Depuis la remise à zéro du métier du
11 septembre 2026, elles sont attendues en échec jusqu'à ce que le parcours
d'onboarding ait recréé un cabinet et sa PME : ne les lancez pas entre les deux,
elles recréeraient les organisations d'essai que la remise à zéro a vidées.
Copiez .env.example en .env et renseignez les valeurs. Le fichier .env
n'est jamais suivi par git.
Le schéma se rejoue depuis les migrations du dépôt — aucune donnée client n'est copiée depuis un environnement distant. Le référentiel fiscal, lui, est semé par les migrations : la base locale est fonctionnelle telle quelle.
$env:PGPASSWORD = '<mot de passe local>'
powershell -File db/local/charger.ps1 -Recreate
Un PostgreSQL nu ne connaît ni auth.uid(), ni les rôles authenticated et
service_role dont dépendent les politiques RLS : db/local/ les recrée
avec la même sémantique.
Les règles d'architecture sont dans AGENTS.md. Elles ne sont pas des conventions : chacune est exécutable, et la CI échoue si elle est violée.