Project dashboard: monitor all your projects in one place
If you run more than two or three projects, you know the feeling: a site goes down while you are working on something else, a database quietly fills up, a billing alert you forgot about starts throttling your API, a domain expires. 7di lets you pull every project onto one dashboard and get notified the instant any of it breaks. Websites, domains, databases, services, analytics, billing usage. All visible from a single screen.
The problem with monitoring multiple projects
Each project lives in a different tool. Uptime is in one service, domain registration in another, database health in a third, API billing in a fourth, analytics in a fifth. You end up checking five tabs manually, or paying five separate monitoring subscriptions, or not checking at all until something fails in production. 7di replaces that with a single dashboard per project and a single place to see everything across all of them.
One page per project, one overview page for all of them
The recommended setup is one 7di page per project containing every widget for that project, and a separate overview page that aggregates the most critical status per project. Both pages can be made public or kept private. Share the overview with a client or a team member without exposing configuration details.
A project page might contain: a Domain / uptime widget for the site, a PostgreSQL widget for the database, a SQL query widget showing active users or daily revenue, a Custom JS widget pulling billing usage from the hosting or API provider, and a Smart alert that fires when something unusual happens.
Uptime and domain monitoring
The Domain / uptime widget checks whether a URL or domain is reachable and tracks its IP address. Set the interval to 1 minute on Pro and you will know within 60 seconds if a site goes down. One widget per domain. Costs 0.02 credits per check.
For domain expiry, use a Live lookup widget with a question like:
- "When does saas-app.io expire?"
- "SSL certificate expiry date for api-service.io"
- "Days until domain registration expires for devblog.dev"
Pair it with a Smart alert set to "saas-app.io domain expires in less than 30 days" and you will never accidentally lose a domain again.
Database health
The PostgreSQL widget checks whether your database is reachable and accepting connections on a schedule. It shows connection status live and alerts you the instant the database goes down. Connection credentials are stored encrypted.
Add a SQL query widget alongside it to surface numbers from the database itself: active subscriptions, daily signups, error counts, table row counts, query performance metrics. The widget runs the query on a schedule and can chart the result over time.
SELECT COUNT(*) FROM users WHERE created_at > NOW() - INTERVAL '24 hours'(signups today)SELECT COUNT(*) FROM subscriptions WHERE status = 'active'(live subscriber count)SELECT SUM(amount) FROM orders WHERE date = CURRENT_DATE(daily revenue)SELECT pg_database_size('mydb') / 1024 / 1024 AS mb(database size in MB)
Billing and API usage
Most cloud providers (Vercel, Railway, Render, Supabase, AWS, OpenAI, Anthropic, Stripe, Cloudflare) expose usage figures through their APIs. A Custom JS widget can call any of these APIs and return the current value:
const res = await fetch('https://api.openai.com/v1/usage', {
headers: { Authorization: 'Bearer YOUR_KEY' }
})
const data = await res.json()
return { result: data.total_tokens }Set a Smart alert to fire when the value crosses a threshold like "OpenAI usage this month is above $80" and you catch runaway costs before they hit your card. Same pattern works for any service that has a billing or usage API endpoint.
For services that send usage webhooks (GitHub Actions, CI/CD systems, billing platforms), use a Webhook widget. Your service POSTs the value to a generated endpoint and the widget updates instantly.
Analytics
If your analytics platform has a public API (Plausible, Fathom, PostHog, Umami, Google Analytics), pull visitor counts, conversion rates, or session counts into a Custom JS widget and chart them over time. No third-party dashboard needed.
For analytics numbers that live inside a database you own (self-hosted Plausible, Umami, or PostHog), use a SQL query widget to pull them directly. Queries run on a schedule and the result is charted automatically.
Service and API health checks
For APIs and services you run yourself, use the Domain / uptime widget to check the endpoint URL directly. It reports the HTTP status code, latency, and alerts you when the endpoint returns an error or times out.
For deeper health checks (response body validation, latency thresholds, dependent service checks), use a Custom JS widget:
const res = await fetch('https://api.myservice.io/health')
const data = await res.json()
if (data.db !== 'ok') return { result: 'DB degraded', down: true }
return { result: `${res.status} ${data.latency}ms` }Smart alerts across all projects
A Smart alert widget evaluates a condition in plain English on each check and sends a push notification when it becomes true. Useful conditions for multi-project monitoring:
- "My OpenAI API usage this month is above $100"
- "The daily revenue from client-store.com dropped more than 30% compared to yesterday"
- "saas-app.io has had more than 3 downtime events this week"
- "My Vercel bandwidth usage is above 80% of the monthly limit"
- "There are more than 50 error-level log entries in the last hour"
Enable Search online if the condition requires current data from the web. Set the cooldown to 1h or longer so you are not notified every check if the condition stays true.
Weekly digest across all projects
Add a Digest widget to your overview page and set it to run weekly. The AI reads all widget values across the page and writes a plain-language summary. For a multi-project overview page, the prompt might be:
"Summarize the state of all projects this week. Call out anything that went down, any unusual usage spikes, and any metrics trending in the wrong direction."The digest costs 3 credits per run and replaces the time you would otherwise spend scanning every project manually at the start of the week.
Sharing status with clients
Any 7di page can be made public via the Sharing feature. Share a project's status page with a client as a live link and they see uptime, key metrics, and current status without needing an account. Password-protect it if needed. Individual widgets can also be embedded on any website, so a live status indicator can appear on your project's own homepage.
Credit planning for a multi-project setup
With polling-based widgets, credits scale with the number of projects and the check interval you choose.
| Widget | Credits / check | 5 projects, 5 min | 5 projects, 1h |
|---|---|---|---|
| Domain / uptime | 0.02 | 864 / day | 72 / day |
| PostgreSQL | 0.02 | 864 / day | 72 / day |
| SQL query | 0.02 | 864 / day | 72 / day |
| Custom JS | 0.02 | 864 / day | 72 / day |
| Smart alert | 1 | n/a | 120 / day |
| Digest | 3 / run | n/a | 3 / week |
Use 1h intervals for most metrics and tighter intervals only for uptime checks where fast detection matters. See Credits for plan details.
Domain / uptime
104.21.50.1
api.yourservice.com
09:18 PM · 5m
DomainPostgreSQL
db.yourservice.com
Production DB
09:18 PM · 1m
PostgreSQLCustom JS
GitHub stars
18,392
09:18 PM · 1h
JSWebhook
Active users
1420
09:18 PM
WebhookSmart alert
Any of my services down?
All services are operating normally.
09:18 PM · 5m
AlertDigest
Weekly dashboard summary
09:18 PM · 1d
Digest