Outlayr is an open source mobile expense tracker, budget app, and subscription tracker. Log a purchase by typing one sentence, saying it, or scanning the receipt. The ledger lives on the phone; sign-in, sync and server features are optional. On the App Store and Google Play.
- One-sentence entry, voice entry and receipt scanning
- Category or overall budgets with carry-over and a projection of where the month ends
- Savings goals, accounts, transfers and 165 currencies, converted at the rate from the day of each purchase
- Subscriptions and paychecks that log themselves, with a reminder before each charge
- Insights, Home and Lock Screen widgets, Face ID lock, CSV import and export
- Works offline, in English, Spanish, Portuguese, and French
apps/
native/ Expo + React Native app, iOS and Android
web/ tryoutlayr.com, TanStack Start
screenshots/ App Store screenshot editor
clips/ Remotion videos for the site, socials and in-app loops
packages/
backend/ Convex: auth, sync, exchange rates
money/ Money math shared by app and backend
env/ Typed env for each app
config/ Shared tsconfig and lint presets
Requires Node 24 and Vite+ (vp), which manages pnpm and runs tasks, lint and format:
curl -fsSL https://vite.plus | bashThe app icons come from Hugeicons Pro, a paid private registry. With a license, put the token in your user-level config, never in the repo .npmrc:
vp pm config set --global "//npm.hugeicons.com/:_authToken" "<token>"
vp installRun the app on the iOS simulator or an Android emulator:
vp run --filter @outlayr/native ios
vp run --filter @outlayr/native androidThe app runs without a backend. To work on sync, sign-in or exchange rates, start a local Convex deployment and copy its URLs into apps/native/.env (apps/native/.env.schema lists every variable):
vp run dev:setup
vp run dev:serverSkip the token. The Pro packages are optional, so pnpm skips them once the flag below keeps its release-age check off their registry. OUTLAYR_FREE_ICONS=1 then draws every icon from the free Hugeicons set, with a dashed circle for any name the free set lacks:
vp install -- '--config.minimum-release-age-exclude=@hugeicons-pro/*'
OUTLAYR_FREE_ICONS=1 vp run --filter @outlayr/native ios
OUTLAYR_FREE_ICONS=1 vp run --filter @outlayr/native androidType-checking, a few test suites and gen:icons still need the Pro packages.
vp check: lint and format check (vp check --fixapplies fixes)vp run check-types: type-check every packagevp run test: run every package's tests
Architecture notes and runbooks are in docs.
GPL-3.0, see LICENSE. apps/native began as a modified version of Dime by Rafael Soh and contributors, also GPL-3.0. Thanks for such a solid foundation.
packages/backend is AGPL-3.0, see packages/backend/LICENSE. apps/native/modules/glow vendors an MIT Expo module, see its LICENSE.
The NumberFlow Swift package from the SwiftUI era now lives at danestves/numberflow.
