Use this file to guide you through the Glimpse setup process.
The instructions in this file are for you. It's important to distinguish the instructions in this file from the instructions in the other files in this folder, which are for Townie.
The prompts for you to enter into Townie are in code blocks, like this:
I'm a prompt for Townie
Townie will use those prompts to scaffold Glimpse, add then add features like user authentication, webhook authentication, caching, a React front end, and a way to collect metrics.
Once those bits are complete, you can add features til your heart's content.
vt on your computer. If not, follow the instructions on the Github READMEvt to clone the Val to your computervars.env at the root of the Valvars.env to the bottom of your .vtignore file, so that your environment variables aren't uploaded to val.town (they're secret)vars.env; if you don't have them, contact your administratorvars.env fileOnce your environment variables are on val.town (i.e., once vars.env is uploaded to val.town), all of the environment variables are available to the Val and Townie, which means that val.town and Notion are connected to each other. Note that environment variables are secret and secure on val.town.
Important: These environment variables should already be in your Val on val.town by the time you're reading this. If you're not sure, contact your administrator.
NOTION_API_KEY - Your Notion integration API keyNOTION_WEBHOOK_SECRET - Matches the X-API-KEY custom header coming from Notion webhooks to /tasks/* endpoint(s)GLANCE_DEMOS_DB_ID - Your Notion database ID for demos, which are personalized to prospects and have unique URLsGLANCE_CONTENT_DB_ID - Your Notion database ID for demo page content, which are compiled into demosGLANCE_INTERACTIONS_DB_ID - Your Notion database ID for pageview metrics and the likeOnce the prerequisite steps are complete, you can start instructing Townie to build this Val by pasting instructions from code blocks in this file into Townie.
On branching: in the steps that follow, you will see instructions for you to paste and run in Townie (in code blocks) and a few instructions for you, mostly numbered steps related to creating and deleting "branches."
Branches are important in development, even AI-enabled development. (Maybe more so.) With branches, we protect the code that's already running and working in our app while we develop new features. Once the code in a feature branch meets our needs, we can merge it into the main branch. Learn more about branching on val.town
Ok, now to the fun stuff.
Scaffold this Val with what you see in `/_townie/01-scaffold.md`
authauth branchAdd auth to this Val with what you see in `/_townie/02-auth.md`
Work with Townie to make sure what appears at / is correct. Once it's correct, move on to the next step.
auth into mainauth branchwebhookswebhooks branchAdd webhook auth to this Val with what you see in `/_townie/03-webhooks.md`
main.tsx, click the green HTTP button, and copy the URL of this Val./tasks/notion-webhook to itX-API-KEY, Value: <x-api-key value>. (Find the value in the NOTION_WEBHOOK_SECRET key in vars.env)webhooks branch into mainwebhooks branchviewview branchAdd an endpoint at `/views/glimpse/:id` by following the instructions in `/_townie/04-view.md`
For now we will just have to trust that this new endpoint works. We will verify that's true in the next few steps.
Add a route for `/glimpse/:id` by following the instructions in `/_townie/05-glimpse.md`.
TODO: enter directions
view branch into mainview branchsaveFollow the instructions in `/_townie/07-save.md` to add an endpoint at `/tasks/url`.
https://<branch subdomain url>/tasks/urlX-API-KEY and Value: <custom header value>. (Find the value in the NOTION_WEBHOOK_SECRET key in vars.env)URL property update with a URL to a Glimpse endpoint on val.townsave into mainsave branchrelatedAdd related pages to the /glimpse/:id endpoint by following the instructions in `/_townie/08-related.md`
TODO: have Townie's success message at the end tell the user to update Notion automation with the URL on the main branch
URL property; it should not work. That URL is from a previous branch that we deleted.main.tsx and get the URL for this branch/tasks/url endpointURL property update with a URL to a Glimpse endpoint on val.townglimpseContent -- that's the object that holds the related content you see in Notionrelated into mainrelated branchcacheUse the instructions in /_townie/09-cache.md to implement a cache for Glimpse demos at the `/glimpse/:id` endpoint
cache into mainAfter merging into main:
CRITICAL: Go to the Val Town web UI and set the cron schedule for /backend/crons/cache_glimpse_data.ts to run every minute
Now that we have a responsive endpoint, we can iterate quickly on the front end without waiting for notion to respond and the JSON to render.
cache branchreactUse the instructions in `/_townie/10-react.md` to implement a React bootstrap for the `/glimpse/:id` endpoint
/glimpse/:id endpoint in the react branchreact into mainreact branchhtmlhtml branchTODO: make sure that the html instructions are clear about persisting the page layout with header including auth, sidenav, main content and footer.
TODO: UPDATE THE ENDPOINT BIT BELOW WITH A REAL URL BUILT BY TOWNIE LIKE IN THE LINK STEP ABOVE
use the instructions in `/_townie/11-html.md` to format the Notion data as HTML. Use this endpoint for testing: `/glimpse/20089f51-c349-803b-a940-edd14b011876
/glimpse/:id endpoint in the html branchhtml into mainhtml branchpdf-embedspdf-embeds branchfollow the instructions in `/_townie/12-embed.md` to implement rendering for certain embed blocks
The link is rendered as a button but it 404s. We need to implement the /glimpse/:id/pdf route.
pdf-routepdf-route branchfollow the instructions in /_townie/PDF-ROUTE.md to implement rendering for certain embed blocks