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.
Suivi de budget : budgets par catégorie, charges fixes, objectifs d'épargne.
Translation pending
FinanceJavaScript · CSSGitHub @benjbepoix-stackOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
Application personnelle de suivi de budget, installable sur l'écran d'accueil de l'iPhone. HTML / CSS / JavaScript purs (modules ES), sans étape de build ni dépendance payante. Synchronisation multi-appareils via Firebase Realtime Database (offre gratuite).Read the full README ↗
Application personnelle de suivi de quelques budgets choisis, des charges fixes et de l'évolution du salaire, installable sur l'écran d'accueil de l'iPhone. HTML / CSS / JavaScript purs (modules ES), sans étape de build ni dépendance payante. Synchronisation multi-appareils via Firebase Realtime Database (offre gratuite), avec le même compte que Mon Garage, Ma Maison, Carnet et Allure.
Trois pages, peu de chiffres : on ne note pas tout, on suit ce qui compte.
rec-<id>-<AAAA-MM> que la génération automatique : pas de doublon) ; total par mois et par an ; évolution sur 12 mois (comparaison avec un an avant) ou par année (moyenne mensuelle, mois en cours incomplet non compté).users/<uid>/budget/plans/<id>, et dans l'export JSON.users/<uid>/budget/hidden pour ne plus la compter. Publiées par ces apps, avec le même compte, sous users/<uid>/budget/linked/garage et …/linked/maison ; Mon budget les lit dans son propre nœud et ne les réécrit jamais. Ne pas les ressaisir à la main.budget_theme_auto_v1) ; « clair » est conservé.index.html Squelette HTML
manifest.webmanifest Manifeste PWA (icônes icon-*.png, apple-touch-icon.png)
database.rules.json Règles fermées à publier sur l'ANCIENNE base publique (voir « Sécurité »)
css/ tokens, theme, base, composants, mise en page, views/budget.css, ardoise (couleurs gris bleu et cobalt, chargé en dernier)
js/
main.js Point d'entrée
config/firebase-config.js Configuration Firebase (projet commun test-e27e9) + adresse de l'ancienne base
core/ store (synchro fine), schema, money (centimes), selectors, validation, dates
services/ firebase (compte + synchro), storage
features/ auth (connexion, Réglages › Compte), pin (verrou facultatif), recurring (génération automatique)
ui/ icônes, modales, toasts, thème, graphiques, motion (ressorts, compteur à rouleaux)
views/ note (Noter), plan (Prévoir), track (Suivre), quickadd (édition d'une opération), settings
Les montants sont stockés en centimes entiers (aucune erreur d'arrondi).
sw.js pré-met en cache l'app-shell à l'installation : l'app s'ouvre même sans réseau, y compris dès le tout premier lancement hors ligne. Il vérifie aussi à chaque ouverture si les fichiers ont changé sur le serveur, pour afficher la dernière version publiée. La synchronisation Firebase reste en ligne (les écritures hors ligne sont conservées et renvoyées au retour du réseau, voir « Robustesse de la synchronisation »).
test-e27e9, même firebase-config.js). Les données sont sous users/<uid>/budget : theme, categories/<id>, transactions/<id>, recurring/<id>, goals/<id>, plans/<id>. Le même nœud reçoit linked/garage (écrit par Mon Garage), linked/maison (Ma Maison) et migrated (marque du transfert) : Mon budget les lit et ne les réécrit jamais.benjbepoix-stack.github.io) ; dans un même navigateur, être connecté dans Mon Garage suffit. Sur iPhone, chaque app installée sur l'écran d'accueil a son propre stockage : une connexion par app, une seule fois.budget_last_uid) : les données locales sont vidées avant la synchro (le thème est conservé). À la première connexion après la mise à jour, rien n'est vidé.budget_unsynced) : à la connexion, elles sont ajoutées au compte élément par élément (rien d'autre n'est écrasé ; les données non modifiées de l'appareil sont remplacées par celles du compte). Connexion à un autre compte que le dernier connecté : elles sont vidées avec le reste.Configuration : js/config/firebase-config.js (valeurs identiques à celles de Mon Garage). Si FIREBASE_CONFIG vaut null, l'app fonctionne uniquement sur l'appareil. La connexion e-mail / mot de passe doit être activée dans le projet (Authentication → Sign-in method), ce qui est déjà le cas pour Mon Garage.
Au premier instantané de users/<uid>/budget après connexion, si migrated est absent, Mon budget lit l'ancienne base publique en REST (mon-budget-ade0b…/budget.json, 8 s max) :
theme, categories, transactions, recurring, goals et linked sont écrits dans le nouveau nœud (sans écraser une collection ou un linked/<app> déjà présent, publié entre-temps par Mon Garage ou Ma Maison), avec migrated: { from: '<hôte>', at, by: 'budget' }, puis affichés ; un thème « sombre » transféré devient « Auto » ;migrated: { from: 'local', … }, en une seule écriture élément par élément (deux appareils qui démarrent en même temps fusionnent leurs opérations) ;migrated et ses données priment, rien n'est réécrit.Un nœud sans aucune collection (seulement linked, migrated et / ou theme) est considéré comme vide : les données de l'appareil n'en sont jamais effacées (un thème déjà enregistré dans le compte est gardé). Les opérations récurrentes du mois sont générées après ce premier chargement.
apiKey et le reste de firebase-config.js ne sont pas des secrets : Firebase les destine au navigateur. Les données sont protégées par le compte : les règles du projet test-e27e9 (gérées dans le dépôt Mon Garage) n'autorisent users/<uid> qu'au compte connecté. Aucune règle à publier pour les nouveaux chemins.mon-budget-ade0b (lisible et modifiable par n'importe qui jusque-là) une fois les données transférées : ouvrez Mon budget connecté sur un appareil à jour, vérifiez que vos opérations s'affichent (et, dans la console Firebase du projet test-e27e9, que users/<uid>/budget/migrated existe), puis console Firebase du projet mon-budget-ade0b → Realtime Database → Règles → coller le contenu de database.rules.json (".read": false, ".write": false) → Publier. Après cela, l'ancienne base n'est plus lisible ni modifiable : un appareil resté sur l'ancienne version passe en « Local » (ses saisies restent sur l'appareil, puis partent dans le compte après sa mise à jour et sa connexion).users/<uid>/budget/transactions/<id>) : deux appareils qui ajoutent chacun une dépense hors ligne ne s'écrasent pas.budget_unsynced) et renvoyées au lancement suivant ou à la connexion.python3 -m http.server 8080 # puis http://localhost:8080
GitHub Pages : Settings → Pages → Deploy from a branch → main / root.
Style minimaliste commun aux apps (cartes pleines), couleurs Ardoise (gris bleu et cobalt, police IBM Plex Sans).
Mouvement (js/ui/motion.js) : animations à ressort (courbes CSS linear() calculées par une petite simulation), interruptibles. Le bouton « Ajouter » s'agrandit en cercle jusqu'à devenir le fil et s'y referme ; les questions glissent comme des cartes ; le montant défile en rouleaux et une jauge « il restera » avance pendant la frappe (ambre et petit tremblement au-delà du plafond) ; « C'est noté » s'ouvre depuis « Valider », la coche se dessine et le montant part en pièce dans la jauge du budget ; les nouvelles saisies se glissent en tête de liste. Sur Suivre, les courbes se tracent à l'ouverture (plafond allumé si la projection le dépasse, point du jour qui respire), les barres montent, le mois glisse dans le sens du geste (flèches ou balayage du nom du mois) et les montants roulent vers leur nouvelle valeur. Avec « Réduire les animations » (iPhone), il ne reste que des fondus courts.
Logo : ligne continue, une courbe qui monte d'un seul trait jusqu'à un point d'arrivée, en dégradé indigo → rose sur fond blanc (icon.svg, décliné en icon-192.png, icon-512.png, apple-touch-icon.png). Même famille que les logos de Mon Garage et Ma Maison.