Blob Admin

This is a lightweight Blob Admin interface to view and debug your Blob data.

Screenshot 2023-12-13 at 12.51.53.png

To use it on your own Val Town Blob Storage, fork it to your account.

It uses basic authentication with your Val Town API Token as the password (leave the username field blank).


  • /new - render a page to write a new blob key and value
    • or new blob by file upload
  • /edit/:blob - render a page to edit a blob (prefilled with the existing content)
    • json validation when the existing content is json
      • checkbox to disable that
  • /delete/:blob - delete a blob and render success
import { basicAuth } from "";
import { blob_admin_blob } from "";
import { blob_admin_home } from "";
import { Hono } from "npm:hono@3.9.2";
const app = new Hono();
app.get("/", async (c) => c.html(await blob_admin_home()));
app.get("/new", (c) => c.html("TODO: New Blob"));
app.get("/:blob", async (c) => c.html(await blob_admin_blob(c.req.param("blob"))));
app.get("/edit/:blob", async (c) => c.html(`TODO: Edit ${c.req.param("blob")}`));
app.get("/delete/:blob", async (c) => c.html(`TODO: Delete ${c.req.param("blob")}`));
export default basicAuth(app.fetch);
👆 This is a val. Vals are TypeScript snippets of code, written in the browser and run on our servers. Create scheduled functions, email yourself, and persist small pieces of data — all from the browser.
pomdtr avatar

Instead of instructing the user to fork the val, why not suggest the user to create a new val referencing your own ?

export { default } from "";

It would allow the user to automatically get update from your, or control them using the version query param.

stevekrouse avatar

Excellent idea! That's how @rodrigotello/hnFollow works.

This way is slightly easier to customize, that way is slightly easier to manage updates.

In theory, Val Town could help users manage forks like Github does:

Screenshot 2023-12-14 at 09.28.40.png

Or even notify users that they should "pull" from the remote val because it has new changes.

The question of when to use something as a dependency vs as a fork is a fascinating one. I'm eager to see what patterns emerge

pomdtr avatar

I see importing as an installation method a val to my account, while forking is just copying a specific version of a val.

I can see myself using, it depends as if I see myself as a user or a contributor.

Even for the same val, I can see myself having my prod endpoint and my dev endpoint.

pomdtr avatar

comments really need an edit button 😅