Files
2026-06-09 18:40:21 +02:00

6.9 KiB


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é)

# 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 (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 :
    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

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

Pages Liées