A beautifully designed, self-hosted envelope budgeting application tailored for simplicity, dynamic financial planning, and seamless local AI integration. Designed specifically to run on minimal hardware like the Raspberry Pi 4B (arm64 architecture) as well as any standard Docker-capable system.
- Envelope Budgeting Made Easy: Track your expenses effortlessly by categorizing funds into dedicated "envelopes" (buckets).
- Personalized AI Financial Guidance:
- Integrated local AI features connecting to powerful local LLMs via Ollama and LM Studio.
- Export capabilities purposefully formatted to be LLM-understandable for tailored financial advice.
- Beautiful & Dynamic UI:
- A responsive, premium dark-mode-first React interface built with Tailwind CSS, Shadcn UI / Radix UI, and Framer Motion for buttery-smooth micro-animations.
- Interactive, insight-rich data visualizations using Recharts.
- Secure Authentication: Built-in JWT-based user registration and login to keep your financial data private.
- Self-Hosted & Lightweight:
- Effortless deployment via Docker & Docker Compose.
- Multi-architecture Docker image support natively built for
linux/amd64andlinux/arm64.
- React 19 & Vite
- Tailwind CSS & Tailwind Merge/Animate
- Radix UI Primitives & Lucide Icons
- Framer Motion (Animations)
- Recharts (Data Visualization)
- Zod & React Hook Form (Validation)
- Node.js & Fastify (Extremely fast web framework)
- SQLite3 (Local, lightweight database)
- Knex.js (Query builder)
- Flyway (Database migrations via
node-flywaydb) - JWT & bcryptjs (Security & Auth)
- Prometheus (
prom-client) for observability
The easiest way to get Oasis running is by using Docker Compose.
- Docker and Docker Compose installed on your machine.
- Create a
docker-compose.ymlfile:
services:
oasis:
image: ghcr.io/oasis-budgeting/oasis:latest
container_name: oasis
environment:
- JWT_SECRET=${JWT_SECRET:?set in .env or shell environment}
ports:
- "3000:3000"
volumes:
- ./data:/app/data
restart: unless-stopped
healthcheck:
test: [ "CMD", "wget", "--spider", "-q", "http://localhost:3000/api/accounts" ]
interval: 30s
timeout: 10s
retries: 3- Create a
.envfile in the same directory asdocker-compose.yml:
JWT_SECRET=replace-with-a-long-random-secret- Start the container:
docker-compose up -d- Access the application in your browser at
http://localhost:3000.
If you prefer to run the application locally without Docker, or if you want to contribute:
- Node.js (v20+ recommended)
- Java (Required by Flyway for local database migrations)
cd api
npm install
npm run migrate # Run Flyway schema migrations
npm run dev # Start the Fastify server with watch modeOpen a new terminal session:
cd ui
npm install
npm run dev # Start the Vite development serverThe frontend will be available at http://localhost:5173 (or the port specified by Vite) and will proxy requests to the backend.
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
[ISC / MIT] (Please update according to your specific license requirements).
