Track weekly goals through a simple web interface. Keep your goals top of mind via a cool e-ink display which you never (ish) need to charge. Goal tracking automatically resets each week.
Screen.Recording.2025-01-03.at.1.32.01.AM.mov
This was specifically developed to back a private plugin created for my trmnl device. I'd love to make a public version of this plugin, but I don't currently foresee a low friction path to making it free + easy for other people to tap into this without me incurring compute costs over time.
You'll need git and a recent version of Node.js installed on your system.
- Clone this repository
- Run
npm installfrom the root to install dependencies - Run
npm run devfrom the root to run the web app locally
You'll need an .env file in the root of the repository that looks like this:
# connection string for a Postgres database
POSTGRES_URL=postgres://{user}:{password}@{host}
# token which can be used for reading and writing to/from Vercel blob storage -- image uploads won't
# work without this
BLOB_READ_WRITE_TOKEN="vercel_blob_rw_xxxxxxxxxxxx"
# optional: if specified, the web app will only load with `?ip={INSTANCE_PASSWORD}`, and the API
# will only respond to requests with a header like `x-instance-password={INSTANCE_PASSWORD}
INSTANCE_PASSWORD=xxxx-xxxx-xxxx-xxxxI'm happy to write up a detailed guide for this upon request, but for now, I've written up some fairly high level instructions. It should be tenable for anyone to deploy their own instance, but be ready for quite a few steps.
I built this with Next.js so that I could easily take advantage of the hosted infra you can get through Vercel's fairly generous free tier. Unfortunately, that means that some of this code (probably) suffers from vendor lock-in, and you'll (probably) also have to deploy to Vercel unless you fork the code.
- Clone this repo
- Install the Vercel CLI and authenticate
- Create a new Vercel project (CLI can be used for this)
- Create a hosted Postgres database. I used Neon since it has a decent free tier, but you could use something else to your preference.
- Create a Vercel Blob instance in your project
- Generate a random string which will be used to password-protect your instance (e.g. use a password manager)
- Appropriately configure the environment variables shown in the
.envfile above for your Vercel project
- Create a new private plugin
- Set Strategy to "Polling"
- Set Polling URL to "{VERCEL_BASE_URL}/api/trmnl"
- In Polling Headers, add "x-instance-password=xxxx-xxxx-xxxx-xxxx"
- Set Remove Bleed Margin? to "No"
- Copy and paste the contents of template.html in your private plugin's template
- Navigate to the URL of your app with
?ip={INSTANCE_PASSWORD}as the query string -- the page should load - Create up to 6 weekly habits; ensure you click "Save Changes" for each once configuration is done
- On the page of your private plugin, follow instructions for forcing a refresh
Would love a monthly or yearly view with charts which show overall goal progress on a longer time horizon, aggregating weekly info.