Testing whether pgs's auto-forms record timestamps for submissions - it does!

· Tactical Typos


Table of Contents

This was to pave the way for me to build special web forms that I can use to enter and collect data for some personal projects of mine,1 have that data stored on the pgs server (that I'm already paying for (!) and am already sorta familiar with interacting with2), then later on pull that data from the server for analysis.3

I saw pico's recent announcement of the new pgs features and got quite excited about the auto-forms feature. There's a few different projects I have going on that need simple GUIs for data entry and collection and some way to store that data across devices until analysis time, and this fits the bill quite well. I'd just need to keep the document URL secret and/or use the other new pgs feature called "http-pass" to password-protect that page (haven't tested this yet).

Testing for Timestamps in Data Collected --- Yup, they're added to records! #

The big thing that I needed to figure out for the simple data entry forms thing is whether the json entries end up being timestamped on the server (it isn't documented so far, but tl;dr: yes, they're timestamped!). If it didn't, I'd need to somehow add a special timestamp feature.

It turns out that submissions do end up getting timestamped on the server! Each record seems to be given both a unique ID (id) and a timestamp (created_at property (?)).

This is the data that the pgs server returned when I prompted it as directed in the instructions for pgs's auto-forms:

From the first submission (once passed through a formatter):

 1[
 2  {
 3    "id": "2134e898-35c6-4c11-8b59-74b6e4655c61",
 4    "data": {
 5      "feedback": "Very impressive.",
 6      "name": "Diego Maradona",
 7      "ranking": "excellent"
 8    },
 9    "created_at": "2026-03-15T16:52:10.434402Z"
10  }
11]

After the second submission:

 1[
 2  {
 3    "id": "bad34d03-3861-4f2a-9966-205d56ca36fa",
 4    "data": {
 5      "feedback": "Muy bien?",
 6      "name": "Boom Shaka Laka",
 7      "ranking": "excellent"
 8    },
 9    "created_at": "2026-03-15T16:53:49.255145Z"
10  },
11  {
12    "id": "2134e898-35c6-4c11-8b59-74b6e4655c61",
13    "data": {
14      "feedback": "Very impressive.",
15      "name": "Diego Maradona",
16      "ranking": "excellent"
17    },
18    "created_at": "2026-03-15T16:52:10.434402Z"
19  }
20]

So they aren't formatted in a particularly pretty way by default, but I can work with that!

What I used for the form #

I just used the last example from AlpacaJS's examples and plugged in the route that pgs provided (with a unique form ID). I'm not familiar with AlpacaJS, but it seems to be a decently approachable system for building out forms and it provides a way to submit the data with AJAX and dynamically format the forms as needed. I'll tinker with it more.

I found and used AlpacaJS just because I'm not familiar enough with HTML to setup my own form and this seemed like a decent option and the examples seemed quite ready to go for this quick testing.

I'd originally been looking for a GUI to build HTML forms with, but Alpaca isn't that, it's a tool for building forms GUIs. 🤷


  1. I'd been procrastinating on setting up data entry/collection UIs like this via Python and BeeWare (for native mobile interfaces on Android). ↩︎

  2. I've been feeling really strapped for bandwidth lately, in terms of time, mental/physical/emotional energy, so not needing to learn yet another thing too much to tick this box is a godsend. ↩︎

  3. I'll also purge the data once I've archived it, to avoid occupying room on their servers unnecessarily. ↩︎

last updated: