A Val Town application for managing and viewing demos with authentication.
This application uses LastLogin for authentication:
/auth/logout
(handled automatically by LastLogin)The following routes are accessible without authentication:
/api/health
- System health statusRoutes are protected by different authentication mechanisms:
User Authentication (Google OAuth via LastLogin):
/
- Main dashboard (shows user info and system status)/api/*
- API endpoints (except health)/views/*
- View routes including /views/glimpse/:id
/glimpse/*
- Shortcut routes including /glimpse/:id
(equivalent to /views/glimpse/:id
)Webhook Authentication (X-API-KEY header):
/tasks/*
- Webhook endpoints for external integrations (POST requests only)
/tasks/*
are allowed without authentication for debug endpoints├── backend/
│ ├── controllers/ # Business logic controllers
│ ├── routes/ # Route definitions
│ │ ├── api/ # API endpoints
│ │ ├── glimpse/ # Shortcut glimpse routes
│ │ ├── tasks/ # Task-related routes
│ │ ├── views/ # User-facing views
│ │ └── authCheck.ts # Authentication middleware
│ └── services/ # External service integrations
├── frontend/ # Frontend assets
├── shared/ # Shared utilities
└── main.tsx # Application entry point
The application provides two equivalent routes for accessing page data:
GET /views/glimpse/:id
- Get page data by Notion page IDGET /glimpse/:id
- Same functionality as above, shorter URLBoth routes:
glimpseHandler
)The dashboard displays both routes in a comparison table for easy testing.
The application is built with:
The application supports webhook endpoints for external integrations (like Notion webhooks):
Set the webhook secret in your environment:
NOTION_WEBHOOK_SECRET=your-secret-key-here
POST /tasks/notion-webhook
- Main webhook endpoint for Notion integrations (requires X-API-KEY
header)POST /tasks/url
- Updates Notion page URL property with glimpse URL (requires X-API-KEY
header)POST /tasks/test
- Test endpoint for webhook authentication (requires X-API-KEY
header)GET /tasks/debug-webhook
- Debug endpoint to check webhook configurationWebhook endpoints require the X-API-KEY
header:
curl -X POST https://your-val.web.val.run/tasks/test \ -H "X-API-KEY: your-secret-key-here"
Use the webhook testing form in the dashboard:
/
NOTION_WEBHOOK_SECRET
valueConfigure these environment variables for full functionality:
GLANCE_DEMOS_DB_ID
- Notion database ID for demosGLANCE_CONTENT_DB_ID
- Notion database ID for contentGLANCE_INTERACTIONS_DB_ID
- Notion database ID for interactionsNOTION_API_KEY
- Notion API key for database accessNOTION_WEBHOOK_SECRET
- Secret key for webhook authentication