Get Started

Where did my money go? Explore your spending in a Python notebook that turns into an app

Six months of card payments, one slider: drag it and every total, chart and table updates at once. marimo is the free Python notebook that does it. Explore your own bank export with a dropdown, a chart and SQL, then turn the same file into an app and a web page you can send.

30 minBeginnerTools: FreeStep 1 free
Tested 9 Oct 2026 · marimo 0.25.1 with DuckDB 1.5.6, pandas 3.0.6 and Altair 6.3.0, Python 3.12 via uv 0.11.9, Edge, Windows 11
marimo installed in its own project folder, with SQL built in
A spending notebook where one dropdown and one slider drive a sentence, a chart, a table and a SQL query, all updating by themselves
The same notebook running as a click-through app with the code hidden, and saved as a single web page you can send
  • Your own bank's CSV in the same notebook, and a one-file summary you can email
  • How marimo differs from Jupyter, and the one setting to change before you load real bank data
Before you start
  • Windows, Mac or Linux, with about 600MB of free disk space (the project folder is about 585MB)
  • uv installed. Step 1 shows how. If you've done Turn a Python script into a web app, you already have it
  • The two sample files: spending.py (the notebook) and spending.csv (257 sample card payments, April to September 2026)
  • No Python experience. You'll run a finished notebook and change it, not write one from scratch
01/06Install marimo0 done
STEP 01 of 06~5 min

Install marimo

marimo lives in its own project folder, so it can't clash with anything else on your PC.

  1. marimo ↗ is a free, open-source notebook for Python. Like Jupyter, you write code in boxes called cells and see the results underneath. Unlike Jupyter, marimo knows which cells depend on which, so when you change one thing, everything that uses it updates by itself.

  2. Install it with uv. If you don't have uv yet, install it first, then close PowerShell and open a new window:

    Windows (only if you don't have uv)
    winget install --id astral-sh.uv -e
    Mac or Linux (only if you don't have uv)
    curl -LsSf https://astral.sh/uv/install.sh | sh
  3. Now make a project folder called my-notebooks with marimo inside it. Run these one at a time:

    Terminal
    uv init --python 3.12 my-notebooks
    cd my-notebooks
    uv add "marimo[sql]" altair pandas
    Output
    Initialized project `my-notebooks` at `...\my-notebooks`
    Using CPython 3.12.13
    Creating virtual environment at: .venv
    Resolved 47 packages in 873ms
    ...
    Downloading marimo (48.5MiB)
    Downloading duckdb (12.6MiB)
    ...
    Installed 44 packages in 12.40s
     + altair==6.3.0
    ...
     + duckdb==1.5.6
    ...
     + marimo==0.25.1
    ...
     + pandas==3.0.6
    ...
  4. That takes about 30 seconds, and the project folder comes to 585MB. That's big, because [sql] brings DuckDB (a small database engine that runs SQL on your own PC) and Polars (a fast table library). Altair draws the charts and pandas reads the CSV.

    Terminal
    uv run marimo --version
    Output
    0.25.1
    TipEvery command in this mission starts with uv run, which uses the marimo inside this folder. So always cd my-notebooks first when you open a new terminal. uv also made a main.py file. You can ignore it.
✓
Checkpointuv run marimo --version prints 0.25.1 (or newer).
If it breakserror: Failed to spawn: marimo and Caused by: program not found
error: Failed to spawn: marimo and Caused by: program not found
You're not in the project folder. Run cd my-notebooks (from the folder you made it in) and try again.
Still stuck? Ask the community
Next mission · Build things with codeBuild a live space-station tracker (and more) from free APIs
→