feat: add TodoMVC example with editorial design

Full TodoMVC implementation using Pocketbook's synced atom:
- Add, toggle, edit (double-click), destroy todos
- Filter: All / Active / Completed
- Toggle all, clear completed
- Live sync status indicator (online/offline/pending)
- Data persists in IndexedDB, syncs to server via Transit

Design: Ink & Paper aesthetic — cream paper background with grain
texture, Instrument Serif italic header, Newsreader body text,
DM Mono UI chrome, terracotta accent with green completion marks,
deckled left border on card.

Also:
- Server now serves static files from resources/public (/ → todomvc.html)
- Fix CLJS compilation: resolve close!/put! naming conflicts with
  core.async, use qualified async/close!, add clojure.string require
- Fix unbalanced parens in do-pull!
- Remove old placeholder example
This commit is contained in:
Florian Schroedl
2026-04-04 16:45:14 +02:00
parent 55cddf751b
commit ab68a21dd6
10 changed files with 770 additions and 156 deletions

View File

@@ -61,14 +61,14 @@
;; Tests
;; ---------------------------------------------------------------------------
(deftest health-check
(deftest serves-static-root
(let [req (-> (HttpRequest/newBuilder)
(.uri (URI. (url "/")))
(.GET)
(.build))
resp (.send client req (HttpResponse$BodyHandlers/ofString))]
(is (= 200 (.statusCode resp)))
(is (= "pocketbook ok" (.body resp)))))
(is (.contains (.body resp) "TodoMVC"))))
(deftest push-and-pull
(testing "Push new documents"