Skip to content

Latest commit

 

History

History
86 lines (60 loc) · 2.92 KB

File metadata and controls

86 lines (60 loc) · 2.92 KB

Peek for YNAB

CI status Website deployment status Web Store submission status Chrome Web Store rating

A browser extension for YNAB that lets users see their category and account balances at a glance, quickly add transactions, setup customizable notifications, and more. See full feature list and installation links on the extension website.

Project layout

  • extension/ Browser extension using WXT, React, and TypeScript
    • src/
      • components/ React components
      • entrypoints/ Extension popup page, options page, and background script
      • lib/ Library and utility functions
      • styles/ Extension CSS / Sass styles
    • test/ Unit tests with Vitest
  • server/ Backend server using Rust and Axum
  • web/ Static website using Astro
    • src/
      • pages/ All website pages (Astro)

Building and running locally

You must have Rust (>= 1.96), Node.js (>= 22), and pnpm installed before proceeding.

Environment variables

Set up an OAuth application in your YNAB Developer Settings. Then, in both the extension/ and server/ directories, copy the .env.example file to .env and fill in the values.

Web

The static website is built with Astro.

cd web
pnpm install
pnpm build

Server

The backend server uses Rust and axum.

cd server
cargo run

Extension

This extension is developed using the WXT framework. To run the extension's development server, make sure the server (see above) is running and then run:

cd extension
pnpm install
pnpm dev

A development browser should open automatically and load the extension.

Building for production

Extension

cd extension
pnpm build

The extension will be built to the extension/build/chrome-mv3 folder. This can be loaded into Chrome by navigating to chrome://extensions/ and clicking "Load unpacked".

Server / Web

cd web
pnpm build

The Astro website will be built into a static site in the web/dist/ folder. You can then build the backend server via:

cd server
cargo build --release