subs-free.openapps.xyz

Source

This app’s code and revision history are public. Download a copy or explore the files below.

Public
The app’s code and revision history are public.
Owned app · rev 1ae4feb2bebf
Run it yourself
Take the whole tree and run it on your own machine. The download needs no account. Cloning needs a sign-in.
Download .zip
bounded clone 5af1a249bbbef1db1b4c5ec8
A copy you download is not bounded. The guarantees this app runs under - declared egress, proven invariants, writes that fail closed - live in the runtime serving this page, not in the files. What you get is auditable source you can read and run, with no runtime guarantees attached.
← All files
policy.json
{
  "auth": {
    "anonymous": true
  },
  "people/$userId": {
    "description": "A person's Subs settings (currency, how many days before a renewal calendar reminders go off) as a JSON string. Only that person can read or write it.",
    "fields": {
      "data": "String"
    },
    "rules": {
      "read": "@user.id != null && @user.id == $userId",
      "create": "@user.id != null && @user.id == $userId && @StringUtils.length(@newData.data) <= 1000",
      "update": "@user.id != null && @user.id == $userId && @StringUtils.length(@newData.data) <= 1000",
      "delete": "false"
    }
  },
  "people/$userId/subs/$subId": {
    "description": "One subscription (name, price in minor units, billing cycle, next renewal, category, payment label, notes, free trial, barely used, cancelled) as a JSON string. Only that person can read or write it. The device keeps the same data, so Subs works offline. A deleted subscription stays as a small marker with no name or details, so another device does not bring it back.",
    "fields": {
      "data": "String"
    },
    "rules": {
      "read": "@user.id != null && @user.id == $userId",
      "create": "@user.id != null && @user.id == $userId && @StringUtils.length($subId) >= 8 && @StringUtils.length($subId) <= 32 && @StringUtils.length(@newData.data) <= 6000",
      "update": "@user.id != null && @user.id == $userId && @StringUtils.length(@newData.data) <= 6000",
      "delete": "false"
    }
  },
  "constants": {
    "AGENT_ADDRESS": "Eyu9XWr7ASBW97DLwLxNTaiEPc4BNhqr6RGirWnMAVXK",
    "AGENT_ADDRESS_BOUND": true
  }
}

Change history

Point store links to openapps.free
1ae4feb2be · 18 hours ago
Bind agent address in policy
99bbab3f0c · 19 hours ago
Use OpenApps service URLs and add contribution strip
781c3c23e5 · 19 hours ago
Bounded source sync
048e3257a5 · 1 day ago
Bounded source sync
7a358a3be6 · 1 day ago
Bounded source sync
0c833fcb0e · 1 day ago