Skip to content

About

πŸ“ A standalone, offline Python notes + to-do app β€” and the 12-chapter course that builds it. Every chapter is a Git tag.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Forkable-ToDoNotes: a standalone, offline Python notes app, built in 12 chapters you can check out as Git tags

Python 3.10 to 3.13 Flask 3.1 SQLite with FTS5 Playwright end-to-end tests 100% offline macOS, Windows and Linux 5 sections, 12 chapters MIT licence CI status

πŸ“ A standalone notes + to-do app in Python β€” and the step-by-step course that builds it.

Read a chapter Β· run the code Β· git switch --detach chNN to see exactly what that chapter built.

⭐ If a Forkable* repo saves you an afternoon, a star helps someone else find it.


πŸ‘‹ At a glance

Info Details
🎯 What A notes app with checklists, instant search and a purple light/dark theme β€” running in your browser, served from your own computer
πŸ“š How you learn 5 sections Β· 12 chapters, each ending in a Git tag (ch00 … ch11) you can check out
🧰 Stack Python Flask Jinja2 Waitress SQLite FTS5 HTML CSS JS pytest Playwright GitHub Actions PyInstaller
πŸ’» Runs on 🍎 macOS Β· πŸͺŸ Windows Β· 🐧 Linux β€” Python 3.10 or newer
πŸ”’ Privacy Listens on 127.0.0.1 only. No account, no cloud, no analytics β€” and a test proves nothing leaves your machine
πŸ—ΊοΈ Part of The Forkable* index β€” clone it, run it, keep it or throw it away

⚑ Quick start

🍎 macOS Β· Terminal (zsh)πŸͺŸ Windows Β· PowerShell
git clone https://github.com/suryakulshreshtha/Forkable-ToDoNotes.git
cd Forkable-ToDoNotes
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python -m todonotes          # opens http://127.0.0.1:8765/
git clone https://github.com/suryakulshreshtha/Forkable-ToDoNotes.git
cd Forkable-ToDoNotes
py -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
python -m todonotes          # opens http://127.0.0.1:8765/

Stop it with Ctrl+C. Your notes are kept in one SQLite file in your user data folder (details in Chapter 03).

πŸ“¦ Prefer a double-click app?

Every version tag builds ready-to-run apps for macOS (Apple Silicon and Intel), Windows and Linux on the Releases page. They are not code-signed yet β€” see Chapter 10 for the one-time "Open Anyway" step.

πŸ–ΌοΈ Screenshots

πŸŒ™ Dark β˜€οΈ Light
Notes list, dark theme Notes list, light theme
Editor with checklist Search results with highlights

Captured automatically by Playwright β€” scripts/capture_screenshots.py.

πŸ—ΊοΈ How it fits together

%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#f3d7f7", "primaryTextColor": "#46104c", "primaryBorderColor": "#5316a6", "lineColor": "#672891", "secondaryColor": "#e7c1ee", "tertiaryColor": "#f8f2fa", "fontFamily": "Helvetica, Arial, sans-serif"}}}%%
flowchart TB
    subgraph APP["πŸ“ The app β€” runs on 127.0.0.1 only"]
        direction LR
        B["🌐 Browser<br/>HTML Β· CSS Β· JS<br/><i>ch05–06</i>"] -- "HTTP request" --> W["🧭 web.py<br/>Flask routes<br/><i>ch05</i>"]
        W -- "render" --> T["🎨 Templates<br/>Jinja2 + theme.css<br/><i>ch05–06</i>"]
        T -- "HTML page" --> B
        W -- "calls" --> S["🧠 service.py<br/>rules · validation<br/><i>ch04</i>"]
        S -- "calls" --> R["πŸ—„οΈ storage.py<br/>SQL only<br/><i>ch03</i>"]
        R -- "sqlite3" --> D[("πŸ’Ύ notes.db<br/>SQLite + FTS5<br/><i>ch03 Β· ch07</i>")]
    end
    subgraph AUTO["🎭 Automation β€” proves it works"]
        direction LR
        PW["Playwright<br/><i>ch08–09</i>"] -- "drives" --> B
        PY["pytest<br/><i>ch01–09</i>"] -- "tests" --> S
    end
    subgraph SHIP["πŸš€ Ship β€” from commit to download"]
        direction LR
        G["git<br/>chapter tags"] --> GH["GitHub"] --> A["Actions<br/>CI gate Β· <i>ch10</i>"] --> PI["PyInstaller"] --> REL["πŸ“¦ Releases<br/>macOS Β· Windows Β· Linux"]
    end
    APP ~~~ SHIP
    classDef app fill:#f3d7f7,stroke:#5316a6,color:#46104c
    classDef auto fill:#e7c1ee,stroke:#672891,color:#46104c
    classDef ship fill:#f1e4f4,stroke:#46104c,color:#46104c
    class B,W,T,S,R,D app
    class PW,PY auto
    class G,GH,A,PI,REL ship
Loading

πŸ–ΌοΈ Offline copy: tech-map.svg Β· source: tech-map.mmd

πŸ“š Learning path β€” sections and chapters

🧭 Section 1 · Orientation

Chapter What you'll build Stack Tag
00 Β· How to read this repo The map, the conventions, following along with tags Git Markdown ch00
01 Β· Setup: Python, Git, venv A working toolchain on 🍎 and πŸͺŸ, an installable package, the first test Python pip venv pytest ruff ch01
02 Β· Architecture & data flow Layers, Mermaid diagrams, documentation that is tested Mermaid pytest ch02

πŸ—„οΈ Section 2 Β· Data & logic

Chapter What you'll build Stack Tag
03 Β· SQLite storage Schema, migrations, parameters, per-OS data folder SQLite sqlite3 ch03
04 Β· Service layer & unit tests Business rules, fixtures, parametrize, markers Python pytest ch04

🎨 Section 3 · Web UI

Chapter What you'll build Stack Tag
05 Β· Flask routes & templates Pages, forms, JSON API, local-only safety checks Flask Jinja2 Waitress ch05
06 Β· Design system: CSS & JS Purple palette tokens, light/dark, contrast tests, autosave CSS JavaScript WCAG ch06
07 Β· Full-text search (FTS5) Prefix search, ranking, safe <mark> highlights SQLite FTS5 MarkupSafe ch07

🎭 Section 4 · Automation

Chapter What you'll build Stack Tag
08 Β· Playwright foundations Live server fixture, page objects, first browser tests Playwright pytest ch08
09 Β· Playwright showcase API+UI hybrids, offline proof, emulation, screenshots Playwright ch09

πŸš€ Section 5 Β· Ship & share

Chapter What you'll build Stack Tag
10 Β· CI & releases A CI gate on 3 OSes, one-file apps on GitHub Releases GitHub Actions PyInstaller ch10
11 Β· Fork, extend & audit Make it yours, audit the supply chain, pick a next feature Git Dependabot ch11

πŸ“Œ Suggested reading order

Section 1  🧭  00 β†’ 01 β†’ 02     read the map, set up, see the whole design
Section 2  πŸ—„οΈ  03 β†’ 04          data first, rules second (no web yet!)
Section 3  🎨  05 β†’ 06 β†’ 07     pages, then looks, then search
Section 4  🎭  08 β†’ 09          prove it works in a real browser
Section 5  πŸš€  10 β†’ 11          ship it, then make it yours

Full index with time estimates: πŸ“š docs/README.md.

πŸ—‚οΈ Repository map

Files arrive chapter by chapter β€” the right-hand column says when.

Forkable-ToDoNotes/
β”œβ”€β”€ src/todonotes/          the app
β”‚   β”œβ”€β”€ __main__.py         launcher: picks a port, starts Waitress, opens the browser   (ch01, ch05)
β”‚   β”œβ”€β”€ config.py           where notes.db lives on each OS                             (ch03)
β”‚   β”œβ”€β”€ models.py           Note Β· ChecklistItem Β· SearchHit                             (ch03, ch07)
β”‚   β”œβ”€β”€ storage.py          all SQL: migrations, CRUD, FTS5 search                       (ch03, ch07)
β”‚   β”œβ”€β”€ service.py          rules: validation, defaults, export                          (ch04)
β”‚   β”œβ”€β”€ web.py              Flask routes, JSON API, safety checks                        (ch05)
β”‚   β”œβ”€β”€ templates/          Jinja HTML                                                   (ch05)
β”‚   └── static/             theme.css Β· app.css Β· app.js                                 (ch06)
β”œβ”€β”€ tests/unit/             fast tests β€” no browser                                      (ch01 β†’ ch07)
β”œβ”€β”€ tests/e2e/              Playwright tests + page objects                              (ch08, ch09)
β”œβ”€β”€ scripts/                contrast check Β· screenshots Β· build Β· dependency audit
β”œβ”€β”€ packaging/launch.py     PyInstaller entry point                                      (ch10)
β”œβ”€β”€ .github/                CI, release workflow, issue/PR templates, Dependabot         (ch10, ch11)
└── docs/                   πŸ“š the course: sections β†’ chapters, diagrams, assets

🀝 Community

πŸ”— More Forkable* repos

Repo What it is
ForkablePythonLearningShowcase Test automation fundamentals, built up step by step
Forkable04EyePythonPlaywrightLearning E2E testing workflows wired to GitHub Actions CI
ForkablePythonProjectShowcase A full UI + API test automation framework
πŸ—ΊοΈ The full index Every Forkable* repo and the order to read them in

πŸ“„ MIT licence Β· 🌐 @suryakulshreshtha

About

πŸ“ A standalone, offline Python notes + to-do app β€” and the 12-chapter course that builds it. Every chapter is a Git tag.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages