Built with Civility
The user brings the server. You bring the app.
Why use Civility?
Users connect their own Civility accounts for data access, so there's no database for you to deploy, no auth to manage, and no S3 instance to connect!
You wanted to build a photo app, not a sync engine! We'll handle the syncing, sharing, and user access, so you can focus on the fun parts!
Your features deserve to live forever; not die when some VC serverless company changes direction. See the code →
See it in action
One system, very different apps.
An audio player + media server with support for synced libraries, podcasts, and voice memos. listen.bpev.me →
Offline-capable maps bookmarking — in the browser. maps.bpev.me →
A notes app with end-to-end encryption support. inro.bpev.me →
A recipes app with AI-supported imports. cook.bpev.me →
How it works
-
Manage state with
@civility/store. Civility includes code to help you with schema declaration, versioning, and migration. -
Add
@civility/syncand/or@civility/shareExtend your store with cloud capability; your app keeps working fully offine, and uses `@civility/store` to handle conflicts when you reconnect. - Users login to an instance. Your app opens the Civility popup; the user signs in to their own account and grants the access your app requests.