diff --git a/AGENTS.md b/AGENTS.md
index 5e4b1a4..0acb38f 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -1,4 +1,4 @@
-# Pocketbook
+# Atomsync
Clojure/ClojureScript offline-first synced atom library backed by IndexedDB (CLJS) or SQLite (CLJ).
@@ -24,7 +24,7 @@ This project uses **promesa** (`funcool/promesa`) for all async operations. Do n
## Project structure
```
-src/pocketbook/
+src/atomsync/
store.cljc โ PStore protocol (promises)
store/memory.cljc โ in-memory store (testing/JVM)
store/idb.cljs โ IndexedDB store (browser)
diff --git a/README.md b/README.md
index f2b30b2..4861b05 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
-# Pocketbook
+# Atomsync
A Clojure-native synced atom. Offline-first key-value store with an `atom` interface that syncs to a SQLite-backed server over Transit.
```clojure
-(def conn ( {"todo:1" {:text "Buy milk" :tags #{:groceries}}}
@@ -26,13 +26,13 @@ clj -M:server
# or: clj -M:server 8090 my-data.db
```
-Starts on `http://localhost:8090` with a SQLite file at `pocketbook.db`.
+Starts on `http://localhost:8090` with a SQLite file at `atomsync.db`.
### Client (CLJS)
```clojure
(ns my-app.core
- (:require [pocketbook.core :as pb]
+ (:require [atomsync.core :as pb]
[cljs.core.async :refer [go
-
Pocketbook ยท TodoMVC
+ Atomsync ยท TodoMVC
@@ -399,14 +399,14 @@
- Pocketbook ยท TodoMVC
+ Atomsync ยท TodoMVC
Double-click to edit a todo
-
Built with Pocketbook โ offline-first synced atoms for Clojure
+
Built with Atomsync โ offline-first synced atoms for Clojure
Data persists in IndexedDB ยท syncs via Transit to SQLite
diff --git a/src/pocketbook/core.cljc b/src/atomsync/core.cljc
similarity index 99%
rename from src/pocketbook/core.cljc
rename to src/atomsync/core.cljc
index ae6fd10..8240747 100644
--- a/src/pocketbook/core.cljc
+++ b/src/atomsync/core.cljc
@@ -1,5 +1,5 @@
-(ns pocketbook.core
- "Pocketbook: a Clojure-native synced atom.
+(ns atomsync.core
+ "Atomsync: a Clojure-native synced atom.
Usage:
(def store @(idb/open \"my-app\")) ;; or (memory/create)
@@ -9,8 +9,8 @@
(fn [_] (swap! todos assoc \"todo:1\" {:text \"Buy milk\"})))
@todos ;=> {\"todo:1\" {:text \"Buy milk\"}}
"
- (:require [pocketbook.store :as store]
- [pocketbook.sync :as sync]
+ (:require [atomsync.store :as store]
+ [atomsync.sync :as sync]
[clojure.string :as str]
[promesa.core :as p])
#?(:clj (:import [java.util.concurrent Executors ScheduledExecutorService TimeUnit])))
diff --git a/src/pocketbook/db.clj b/src/atomsync/db.clj
similarity index 99%
rename from src/pocketbook/db.clj
rename to src/atomsync/db.clj
index 9971729..e276702 100644
--- a/src/pocketbook/db.clj
+++ b/src/atomsync/db.clj
@@ -1,4 +1,4 @@
-(ns pocketbook.db
+(ns atomsync.db
"SQLite storage layer with Nippy serialization.
Stores documents as binary blobs preserving all Clojure types."
(:require [next.jdbc :as jdbc]
diff --git a/src/pocketbook/server.clj b/src/atomsync/server.clj
similarity index 95%
rename from src/pocketbook/server.clj
rename to src/atomsync/server.clj
index 040d7a6..c4d39ca 100644
--- a/src/pocketbook/server.clj
+++ b/src/atomsync/server.clj
@@ -1,5 +1,5 @@
-(ns pocketbook.server
- "Pocketbook sync server. Single-file HTTP server backed by SQLite.
+(ns atomsync.server
+ "Atomsync sync server. Single-file HTTP server backed by SQLite.
Endpoints:
GET /sync?since=T&group=G โ pull changes since timestamp
@@ -7,10 +7,10 @@
Start:
clj -M:server
- bb -m pocketbook.server"
+ bb -m atomsync.server"
(:require [org.httpkit.server :as http]
- [pocketbook.db :as db]
- [pocketbook.transit :as t]
+ [atomsync.db :as db]
+ [atomsync.transit :as t]
[clojure.string :as str]
[clojure.java.io :as io])
(:gen-class))
@@ -21,7 +21,7 @@
(def default-config
{:port 8090
- :db-path "pocketbook.db"
+ :db-path "atomsync.db"
:static-dir nil ;; nil = no static serving, or path like "example/todomvc"
:cors true})
@@ -205,7 +205,7 @@
;; ---------------------------------------------------------------------------
(defn start!
- "Start the Pocketbook server. Returns a stop function."
+ "Start the Atomsync server. Returns a stop function."
([]
(start! {}))
([config]
@@ -213,7 +213,7 @@
ds (db/open (:db-path config))
handler (make-handler ds config)
server (http/run-server handler {:port (:port config)})]
- (println (str "๐ถ Pocketbook server running on http://localhost:" (:port config)))
+ (println (str "๐ถ Atomsync server running on http://localhost:" (:port config)))
(println (str " Database: " (:db-path config)))
(when (:static-dir config)
(println (str " Static: " (:static-dir config)))
diff --git a/src/pocketbook/store.cljc b/src/atomsync/store.cljc
similarity index 92%
rename from src/pocketbook/store.cljc
rename to src/atomsync/store.cljc
index aa60002..b633049 100644
--- a/src/pocketbook/store.cljc
+++ b/src/atomsync/store.cljc
@@ -1,5 +1,5 @@
-(ns pocketbook.store
- "Storage protocol for Pocketbook.
+(ns atomsync.store
+ "Storage protocol for Atomsync.
All methods return promesa promises.")
(defprotocol PStore
diff --git a/src/pocketbook/store/idb.cljs b/src/atomsync/store/idb.cljs
similarity index 97%
rename from src/pocketbook/store/idb.cljs
rename to src/atomsync/store/idb.cljs
index ef0a9bf..2051ba2 100644
--- a/src/pocketbook/store/idb.cljs
+++ b/src/atomsync/store/idb.cljs
@@ -1,7 +1,7 @@
-(ns pocketbook.store.idb
+(ns atomsync.store.idb
"IndexedDB store implementing the PStore protocol."
- (:require [pocketbook.store :as store]
- [pocketbook.transit :as transit]
+ (:require [atomsync.store :as store]
+ [atomsync.transit :as transit]
[promesa.core :as p]))
;; ---------------------------------------------------------------------------
diff --git a/src/pocketbook/store/memory.cljc b/src/atomsync/store/memory.cljc
similarity index 91%
rename from src/pocketbook/store/memory.cljc
rename to src/atomsync/store/memory.cljc
index 9e54919..8634991 100644
--- a/src/pocketbook/store/memory.cljc
+++ b/src/atomsync/store/memory.cljc
@@ -1,6 +1,6 @@
-(ns pocketbook.store.memory
+(ns atomsync.store.memory
"In-memory store backed by atoms. Useful for testing and JVM clients."
- (:require [pocketbook.store :as store]
+ (:require [atomsync.store :as store]
[promesa.core :as p]
[clojure.string :as str]))
diff --git a/src/pocketbook/sync.cljc b/src/atomsync/sync.cljc
similarity index 97%
rename from src/pocketbook/sync.cljc
rename to src/atomsync/sync.cljc
index 71b98e8..5778085 100644
--- a/src/pocketbook/sync.cljc
+++ b/src/atomsync/sync.cljc
@@ -1,6 +1,6 @@
-(ns pocketbook.sync
- "HTTP sync client โ pull and push documents to/from the Pocketbook server."
- (:require [pocketbook.transit :as transit]
+(ns atomsync.sync
+ "HTTP sync client โ pull and push documents to/from the Atomsync server."
+ (:require [atomsync.transit :as transit]
[clojure.string :as str]
[promesa.core :as p])
#?(:clj (:import [java.net URI]
diff --git a/src/pocketbook/transit.cljc b/src/atomsync/transit.cljc
similarity index 98%
rename from src/pocketbook/transit.cljc
rename to src/atomsync/transit.cljc
index 1968051..4ae7309 100644
--- a/src/pocketbook/transit.cljc
+++ b/src/atomsync/transit.cljc
@@ -1,4 +1,4 @@
-(ns pocketbook.transit
+(ns atomsync.transit
"Transit encoding/decoding helpers for the HTTP wire format."
(:require [cognitect.transit :as t])
#?(:clj (:import [java.io ByteArrayInputStream ByteArrayOutputStream])))
diff --git a/test/pocketbook/core_test.clj b/test/atomsync/core_test.clj
similarity index 95%
rename from test/pocketbook/core_test.clj
rename to test/atomsync/core_test.clj
index 7b7d064..9b44b62 100644
--- a/test/pocketbook/core_test.clj
+++ b/test/atomsync/core_test.clj
@@ -1,10 +1,10 @@
-(ns pocketbook.core-test
+(ns atomsync.core-test
(:require [clojure.test :refer [deftest is testing use-fixtures]]
[promesa.core :as p]
- [pocketbook.core :as pb]
- [pocketbook.store :as store]
- [pocketbook.store.memory :as memory]
- [pocketbook.server :as server])
+ [atomsync.core :as pb]
+ [atomsync.store :as store]
+ [atomsync.store.memory :as memory]
+ [atomsync.server :as server])
(:import [java.io File]))
;; ---------------------------------------------------------------------------
@@ -21,7 +21,7 @@
(use-fixtures :each
(fn [f]
(let [port (free-port)
- db-path (str (File/createTempFile "pocketbook-core-test" ".db"))
+ db-path (str (File/createTempFile "atomsync-core-test" ".db"))
srv (server/start! {:port port :db-path db-path})]
(Thread/sleep 200)
(try
diff --git a/test/pocketbook/db_test.clj b/test/atomsync/db_test.clj
similarity index 97%
rename from test/pocketbook/db_test.clj
rename to test/atomsync/db_test.clj
index e340ac3..4c7f12b 100644
--- a/test/pocketbook/db_test.clj
+++ b/test/atomsync/db_test.clj
@@ -1,12 +1,12 @@
-(ns pocketbook.db-test
+(ns atomsync.db-test
(:require [clojure.test :refer [deftest is testing use-fixtures]]
- [pocketbook.db :as db])
+ [atomsync.db :as db])
(:import [java.io File]))
(def ^:dynamic *ds* nil)
(defn- temp-db-path []
- (str (File/createTempFile "pocketbook-test" ".db")))
+ (str (File/createTempFile "atomsync-test" ".db")))
(use-fixtures :each
(fn [f]
diff --git a/test/pocketbook/server_test.clj b/test/atomsync/server_test.clj
similarity index 97%
rename from test/pocketbook/server_test.clj
rename to test/atomsync/server_test.clj
index fe12215..f2653a0 100644
--- a/test/pocketbook/server_test.clj
+++ b/test/atomsync/server_test.clj
@@ -1,7 +1,7 @@
-(ns pocketbook.server-test
+(ns atomsync.server-test
(:require [clojure.test :refer [deftest is testing use-fixtures]]
- [pocketbook.server :as server]
- [pocketbook.transit :as t])
+ [atomsync.server :as server]
+ [atomsync.transit :as t])
(:import [java.io File]
[java.net URI]
[java.net.http HttpClient HttpRequest HttpResponse$BodyHandlers HttpRequest$BodyPublishers]))
@@ -16,7 +16,7 @@
(use-fixtures :each
(fn [f]
(let [port (free-port)
- db-path (str (File/createTempFile "pocketbook-server-test" ".db"))
+ db-path (str (File/createTempFile "atomsync-server-test" ".db"))
srv (server/start! {:port port :db-path db-path})]
(Thread/sleep 200) ;; let server start
(try
diff --git a/test/pocketbook/transit_test.clj b/test/atomsync/transit_test.clj
similarity index 93%
rename from test/pocketbook/transit_test.clj
rename to test/atomsync/transit_test.clj
index 59e62f4..3ca9735 100644
--- a/test/pocketbook/transit_test.clj
+++ b/test/atomsync/transit_test.clj
@@ -1,6 +1,6 @@
-(ns pocketbook.transit-test
+(ns atomsync.transit-test
(:require [clojure.test :refer [deftest is testing]]
- [pocketbook.transit :as t]))
+ [atomsync.transit :as t]))
(deftest roundtrip-basic-types
(doseq [v [42