--- title: Ocular created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, budgeting, typescript, react, svelte, suivi, budget, simple] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=budgeting, https://github.com/dkanr/ocular, https://ocular.dkanr.dev/] --- # Ocular đŸ‘ïž > Application de **suivi de budget** lĂ©gĂšre Ă©crite en **TypeScript/SvelteKit**. Conçue pour ĂȘtre **simple Ă  dĂ©ployer** et **agrĂ©able Ă  utiliser**, avec une UI moderne et un focus sur l'essentiel. | MĂ©tadonnĂ©e | Valeur | | :--- | :--- | | **Site web** | https://ocular.dkanr.dev/ | | **GitHub** | https://github.com/dkanr/ocular | | **License** | AGPL-3.0 | | **Langage** | TypeScript (SvelteKit) | | **Étoiles** | ⭐41 | | **DerniĂšre MAJ** | 2026-04-05 | | **CatĂ©gorie** | [[cat-budgeting]] | ## Description Ocular est une application de **suivi de budget personnel** relativement jeune mais prometteuse, Ă©crite en **SvelteKit** (le meta-framework de Svelte) avec TypeScript. Le projet se positionne sur la **simplicitĂ© d'usage** et la **modernitĂ© de l'UI** — un juste milieu entre la complexitĂ© de Firefly III et le minimalisme d'ExpenseOwl. Les fonctionnalitĂ©s principales : **comptes** multiples (chĂšque, Ă©pargne, cartes, crĂ©dit), **transactions** avec date, montant, description, catĂ©gorie, **catĂ©gories** personnalisables, **budgets** par catĂ©gorie et par mois avec **barre de progression**, **tableau de bord** avec vue d'ensemble (solde total, revenus/dĂ©penses du mois), **graphiques** simples (revenus vs dĂ©penses, rĂ©partition par catĂ©gorie), **revenus/dĂ©penses rĂ©currentes** (abonnements, salaires), **multi-devises** basique, **mode sombre** natif, **export CSV**. L'**architecture SvelteKit** est un excellent choix : code TypeScript cohĂ©rent, **bundle final trĂšs lĂ©ger** (~50-100 Ko pour le frontend), **SSR** (Server-Side Rendering) natif, **API routes** intĂ©grĂ©es, **adapter Node** ou **adapter static** pour le dĂ©ploiement. Parfait pour un **VPS modeste** ou un **Raspberry Pi 4/5**. L'**avantage** d'Ocular sur ses concurrents : **UI moderne et fluide** (Svelte = transitions animĂ©es par dĂ©faut), **build lĂ©ger** (consomme peu de RAM et CPU), **stack TypeScript moderne** apprĂ©ciĂ©e des dĂ©veloppeurs. L'**inconvĂ©nient** : projet trĂšs jeune (~41⭐), peu de retours utilisateurs — Ă  tester avant production critique, et la **roadmap** est moins claire que celle d'Actual ou Firefly. Ocular est adaptĂ© aux utilisateurs qui veulent un **outil moderne, lĂ©ger, et simple** pour suivre leur budget, sans les complications d'import bancaire ou de rĂšgles avancĂ©es. Parfait comme **premier outil de budgeting self-hosted** ou comme alternative Ă  une feuille de calcul. ## Installation ### Via Docker (recommandĂ©) ```yaml # docker-compose.yml services: ocular: image: ghcr.io/dkanr/ocular:latest container_name: ocular restart: unless-stopped ports: - "3000:3000" environment: - NODE_ENV=production - DATABASE_URL=file:/data/ocular.db - ORIGIN=https://budget.example.com - SESSION_SECRET=*** volumes: - ocular-data:/data healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/"] interval: 30s timeout: 10s retries: 3 volumes: ocular-data: ``` > ⚠ VĂ©rifier l'image exacte sur le [GHCR](https://github.com/dkanr/ocular/pkgs/container/ocular) (le tag `latest` peut Ă©voluer, la nomenclature des env vars aussi). ### Installation manuelle (Node.js / SvelteKit) 1. **PrĂ©-requis** : Node.js 20+, npm ou pnpm, SQLite (inclus). 2. `git clone https://github.com/dkanr/ocular.git && cd ocular` 3. `npm install` (ou `pnpm install`) 4. Configurer `.env` : ```env DATABASE_URL=file:./data/ocular.db ORIGIN=http://localhost:3000 SESSION_SECRET=*** ``` 5. Migrations : `npx prisma migrate deploy` (ou Ă©quivalent selon l'ORM). 6. Build : `npm run build` 7. `npm start` (production) ou `node build/index.js`. 8. Reverse proxy Nginx/Caddy/Traefik en front (HTTPS obligatoire). ## Configuration - **Premier lancement** : crĂ©er le compte owner via l'UI d'inscription. - **SESSION_SECRET** : clĂ© de session SvelteKit — gĂ©nĂ©rer alĂ©atoirement (32+ caractĂšres), ne jamais commit. - **ORIGIN** : URL externe utilisĂ©e pour les cookies/CSRF (doit correspondre Ă  l'URL d'accĂšs). - **Comptes** : crĂ©er un compte par produit bancaire, saisir le solde initial. - **CatĂ©gories** : crĂ©er l'arborescence, personnaliser icĂŽnes/couleurs. - **Budgets** : par mois, par catĂ©gorie, avec barre de progression. - **RĂ©currences** : configurer salaires, abonnements. - **HTTPS** : obligatoire via reverse proxy (Traefik/Caddy). - **Backups** : copier le fichier SQLite `ocular.db` rĂ©guliĂšrement (cron + rclone). ## Alternatives ### Open Source - [[app-actual-budget]] — rĂ©fĂ©rence local-first (TypeScript aussi) - [[app-firefly-iii]] — gestion finances complĂšte (PHP) - [[app-sure]] — plateforme Elixir moderne - [[app-expenseowl]] — minimaliste Python - [[app-budget-board]] — dashboard TypeScript - [[app-monetr]] — alternative Go - [[app-myfin]] — alternative Python/Django - **Buckwheat** / **Cashcog** — envelope budgeting Python - **Cashfolio** / **Squirrel** — autres alternatives ### PropriĂ©taires - **YNAB** — rĂ©fĂ©rence du zero-based (~14$/mois) - **Monarch Money** — UX premium (~99$/an) - **Mint** (ex-Intuit) — abandonnĂ© - **PocketGuard** — mobile-first - **Wallet** by BudgetBakers — app mobile tchĂšque ## SĂ©curitĂ© - **HTTPS obligatoire** via reverse proxy. - **SESSION_SECRET** : clĂ© de session SvelteKit critique — gĂ©nĂ©rer alĂ©atoirement (32+ caractĂšres), ne pas commit. - **ORIGIN** : bien configurer pour Ă©viter les attaques CSRF. - **SQLite** : sĂ©curiser les permissions (chmod 600) sur le volume. - **2FA** : non natif, Ă  compenser via reverse proxy (Authelia/Authentik). - **Backups 3-2-1** : copier rĂ©guliĂšrement le fichier DB vers stockage chiffrĂ©. - **Updates SvelteKit** : suivre les releases (SvelteKit Ă©volue vite), projet jeune → vĂ©rifier les breaking changes. - **CSP et headers** : configurer via reverse proxy (Caddy/Traefik middleware). - **Logs** : logs SvelteKit standards, monitorer via Grafana Loki ou Ă©quivalent. - **DĂ©pendance npm** : SvelteKit + Svelte + Vite → mettre Ă  jour rĂ©guliĂšrement (npm audit). ## Ressources - Site officiel : https://ocular.dkanr.dev/ - GitHub : https://github.com/dkanr/ocular - Documentation : https://github.com/dkanr/ocular/wiki - selfh.st : https://selfh.st/apps/?tag=budgeting ## Pages LiĂ©es - [[cat-budgeting]] — catĂ©gorie parente - [[app-actual-budget]] — concurrent direct (TypeScript aussi) - [[app-firefly-iii]] — rĂ©fĂ©rence du marchĂ© (PHP) - [[app-expenseowl]] — alternative minimaliste (Python) - [[app-budget-board]] — autre option TypeScript - [[app-sure]] — alternative Elixir - [[recettes-docker-compose]] — templates de dĂ©ploiement - [[securisation-home-lab]] — bonnes pratiques