discover · compare · collections · requirements · contribute · feed · watching · stats · help with your tokens
danestves/outlayr · source
Snapshot 0 · 2026-11-04T12:47:28Z · TypeScript · GPL-3.0
Content fingerprint
14d797ed4c9264bc0ea89950aab08c66e867229659b81f80654e69dd2d3c869eGitHub description at capture
Open source expense tracker, budget app, and subscription tracker for iPhone and Android. Local-first, built with Expo and Convex.
README at capture
# Outlayr 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. <a href="https://apps.apple.com/app/id6801652978"><img alt="Download on the App Store" height="40" src="./apps/web/public/badges/app-store.svg"></a> <a href="https://play.google.com/store/apps/details?id=com.tryoutlayr.app"><img alt="Get it on Google Play" height="40" src="./apps/web/public/badges/google-play.png"></a> [tryoutlayr.com](https://tryoutlayr.com)  ## Features - 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 ## Layout ``` 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 ``` ## Getting started Requires Node 24 and [Vite+](https://viteplus.dev) (`vp`), which manages pnpm and runs tasks, lint and format: ```bash curl -fsSL https://vite.plus | bash ``` The 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`: ```bash vp pm config set --global "//npm.hugeicons.com/:_authToken" "<token>" vp install ``` Run the app on the iOS simulator or an Android emulator: ```bash vp run --filter @outlayr/native ios vp run --filter @outlayr/native android ``` The 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): ```bash vp run dev:setup vp run dev:server ``` ### Without a Hugeicons Pro license Skip 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: ```bash 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 android ``` Type-checking, a few test suites and `gen:icons` still need the Pro packages. ## Scripts - `vp check`: lint and format check (`vp check --fix` applies fixes) - `vp run check-types`: type-check every package - `vp run test`: run every package's tests Architecture notes and runbooks are in [docs](./docs/README.md). ## License GPL-3.0, see [LICENSE](./LICENSE). `apps/native` began as a modified version of [Dime](https://github.com/rafsoh/dimeApp) by [Rafael Soh](https://github.com/rafsoh) and contributors, also GPL-3.0. Thanks for such a solid foundation. `packages/backend` is AGPL-3.0, see [packages/backend/LICENSE](./packages/backend/LICENSE). `apps/native/modules/glow` vendors an MIT Expo module, see its [LICENSE](./apps/native/modules/glow/LICENSE). The NumberFlow Swift package from the SwiftUI era now lives at [danestves/numberflow](https://github.com/danestves/numberflow).