DominaresTools

Move a Python app that keeps its state in files onto Postgres without rewriting its file code.

statepath replaces the path object your app already uses, so its read_text, write_text, glob and open calls go to Postgres. You move in steps you can undo, and a verifier tells you when the next step is safe.

Buy statepath for $99

One payment of $99, plus sales tax where it applies, and every future update. Delivered as a private GitHub repository you're invited to.

What it does

A Path that lives in Postgres
statepath.root() returns a plain Path, a dual-write path or a Postgres path depending on one environment variable. The file operations your app uses keep working.
Dual-write that can't take a request down
Reads come from disk and writes are mirrored to Postgres. If Postgres is slow or down, the disk write still succeeds and a circuit breaker backs off.
No lost updates
JsonStore.mutate() reads, changes and writes under a lock, a file lock on disk and a Postgres advisory lock in the database, across threads, processes and servers.
Logs and binary files
Append-only logs are stored one row per line, so appending never rewrites them. Images and PDFs come back byte for byte.
seed, verify, repair, drain
Copy files in and check each one, compare the two stores by content, re-copy what differs, or copy everything back to disk.
Refuses the dangerous mistakes
drain won't delete when the database holds nothing in scope, and the test suite refuses to empty any database not named for tests.

Try it

pip install ./statepath
export STATEPATH_DATABASE_URL=postgresql://user:pass@localhost:5432/myapp
statepath init
statepath seed && statepath verify

What you get

statepath 1.0.0: the Python library and the statepath command, with 322 automated tests. Python 3.10 or newer.

A commercial license. Use it and change it in your own projects and your clients' projects. Don't share or resell the source. Read the license.

Every update. New versions land in the same repository; git pull to get them.

How buying works

  1. Enter your GitHub username. You'll see the account before you pay, so you can check it's yours.
  2. Pay $99, plus any sales tax shown at checkout, on Stripe's checkout page.
  3. Accept the invitation GitHub emails you. Signed in as that account, you'll also find it at github.com/dominares-tools/statepath/invitations. Invitations expire after 7 days; you can get a new one any time.
  4. Clone and install:
    git clone https://github.com/dominares-tools/statepath.git
    pip install ./statepath

Questions

Do I need GitHub?
Yes. Access is a read-only invitation to a private repository, sent to the GitHub account you choose.
Can I get a refund?
Yes, within 14 days, no questions asked. Access ends when the refund goes through. Refund policy.
Who takes the payment?
Stripe. Your purchase is sold through Link, Stripe's checkout service, which also works out sales tax and sends your receipt.
Something wrong?
Email josephlinares02@gmail.com. Every buyer of a tool shares its repository, so support happens by email rather than in GitHub issues.