41date: "YYYY-MM-DD"
42url: "Your live blog URL"
43imageUrl: "Cover image URL (2:3 ratio works best)"
44tags: ["tag1", "tag2", "tag3"]
45---
59| date | Publication date in YYYY-MM-DD format |
60| url | URL to your live blog (should be the HTTP endpoint from Val Town) |
61| imageUrl | Cover image URL (2:3 aspect ratio recommended) |
62| tags | Array of tags to categorize your post |
63
5date: "2025-04-26"
6url: "https://dcm31--45d1947422b711f0be5c569c3dd06744.web.val.run"
7imageUrl: "https://chatgpt.com/backend-api/public_content/enc/eyJpZCI6Im1fNjgwZDBjYzQxYTcwODE5MWFlZTZmNzhjZmJjNGVhNGQ6ZmlsZV8wMDAwMDAwMDU0MTg2MWY2YTRiOWMxOWE3NTA4Yjk5NCIsInRzIjoiNDg0OTEyIiwicCI6InB5aSIsInNpZyI6IjFhODc1NDE1ZjJkNmNlM2EwYjY4YjMzYmZhYTIwMDM2YmIzMWI5NjU2YWYzZTdkYmM2N2IxOWRmMzdlZjliYzIiLCJ2IjoiMCIsImdpem1vX2lkIjpudWxsfQ=="
8tags: ["markdown", "blog", "val-town", "template"]
9---
21- **Emphasis** (bold, italic)
22- **Code blocks** (inline and fenced)
23- **Links** and **images**
24- **Tables**, **blockquotes**, and more
25
45date: "YYYY-MM-DD"
46url: "Your live blog URL"
47imageUrl: "Cover image URL (2:3 ratio works best)"
48tags: ["tag1", "tag2", "tag3"]
49---
87| Lists | ✅ |
88| Code blocks | ✅ |
89| Images | ✅ |
90| Tables | ✅ |
91
92### Images
93
94You can include images using standard markdown syntax:
95
96
97
98## Integration with build.moi
100This template is designed to work perfectly with the build.moi platform. When your blog is displayed in the build.moi grid, it will:
101
1021. Show your cover image if you've provided one in the `imageUrl` field
1032. Link directly to your live blog instead of the code when viewed from the Posts tab
1043. Display a clean, formatted preview with your blog information
41date: "YYYY-MM-DD"
42url: "Your live blog URL"
43imageUrl: "Cover image URL (2:3 ratio works best)"
44tags: ["tag1", "tag2", "tag3"]
45---
59| date | Publication date in YYYY-MM-DD format |
60| url | URL to your live blog (should be the HTTP endpoint from Val Town) |
61| imageUrl | Cover image URL (2:3 aspect ratio recommended) |
62| tags | Array of tags to categorize your post |
63
2title: "Val Town Project Search"
3description: "A search engine for Val Town projects, vals, and users"
4imageUrl: "https://chatgpt.com/backend-api/public_content/enc/eyJpZCI6Im1fNjgwYzQyM2VmNTIwODE5MTkzOGNjY2Q1NTkxZmU0YjQ6ZmlsZV8wMDAwMDAwMGIwNGM2MjMwOGY5MTUwMjdlYjhiMDM3ZCIsInRzIjoiNDg0ODk4IiwicCI6InB5aSIsInNpZyI6ImQ5MjNjZGY4MTlkY2RmMTkwMzliM2E0NDY4N2RlYWNlZjNjNzQwYmE1ZGFlODg2NjNmMGU0ZWNmNjE0MzYwNzAiLCJ2IjoiMCIsImdpem1vX2lkIjpudWxsfQ=="
5url: "https://charliesusersearch.val.run/"
6author: "dcm31"
6 <title>React Hono Val Town Starter</title>
7 <link rel="stylesheet" href="/public/style.css">
8 <link rel="icon" href="/public/favicon.svg" sizes="any" type="image/svg+xml">
9 </head>
10 <body>
9 data TEXT,
10 type TEXT,
11 image TEXT,
12 time DATETIME NOT NULL
13 )`,
10 let response;
11 try {
12 response = await blob.get("pondiverse_image" + id);
13 } catch (e) {
14 return new Response(null, { status: 404 });
13 for (const row of res.rows) {
14 console.log("delete", row.id);
15 blob.delete("pondiverse_image" + row.id);
16 }
17
9 // - data (string)
10 // - type (string)
11 // - image (data url string)
12
13 // sanity checks:
15 // - data, hmm this needs to be long i guess.. maybe some crazy upper limit sanity check though
16 // - type, not too long
17 // - image, not toooo large a file size
18 let body;
19 try {
26 const data = body.data;
27 const type = body.type;
28 const image = body.image;
29
30 // Sanity checks
38 }
39
40 if (image.length > 20 * 1024 * 1024) {
41 return Response.json({ ok: false, error: "Thumbnail too large" });
42 }
57 );
58
59 await blob.set("pondiverse_image" + id.lastInsertRowid, image);
60 return Response.json({ ok: true });
61}
9- Responsive design (mobile and desktop friendly)
10- Circle-cropped profile pictures
11- Colorful placeholder images based on project/username
12- Hover effects to display val details
13- Pagination for users with many vals
35title: "My Awesome Val Town Project"
36description: "A detailed description of my project"
37imageUrl: "https://example.com/my-custom-image.jpg"
38author: "username"
39tags: ["javascript", "react", "val-town"]
47### Supported Configuration Options
48
49- `imageUrl`: Custom image URL to override the default profile/val image (2:3 aspect ratio recommended, e.g., 800x1200px)
50- `title`: Custom display title
51- `description`: Extended description
53- `author`: Custom author display name
54
55## Image Guidelines
56
57- **Profile Images**: Square images work best, as they will be displayed in a circle
58- **Val/Project Images**: 2:3 aspect ratio (portrait orientation) works best, like 800x1200 pixels
59- **Placeholders**: If no image is available, colored placeholders with the first letter of the name will be shown
60
61## Technical Details