Monitor websites and HTTP APIs. Upvera runs scheduled checks, tracks uptime, opens incidents when things break, and can ping you on Telegram when a service goes down or comes back.
Live app: upvera-app.vercel.app
Built with Next.js, Neon (Postgres + Auth), and Upstash QStash for five-minute checks on Vercel Hobby. No VPS required.
- Dashboard to add, edit, pause, and manually check monitors (10 per account)
- Public status pages at
/status/[userId] - Incident tracking with automatic open/resolve
- Telegram alerts (optional)
- Email/password auth via Neon Auth, with optional GitHub OAuth
Monitors accept any HTTP response in the 200–399 range. Checks time out after 10 seconds.
You'll need: Node.js 20.19+, 22.12+, or 24+ (not 23), npm, a Neon project with Auth enabled, and PostgreSQL.
git clone https://github.com/mustbemo/upvera.git
cd upvera
npm ci
cp .env.example .env.localFill in .env.local — see .env.example for every variable and what it's for. Generate secrets with openssl rand -base64 32 (use a separate value for each secret).
npx prisma generate
npx prisma db push
npm run env:check
npm run devOpen http://localhost:3007. Manual checks from the dashboard work without QStash in dev.
For schema changes, use migrations instead of db push:
npx prisma migrate dev --name your_change- Import the repo on Vercel and add the env vars from
.env.exampleto Production. - Set
CRON_MODE=externalandAPP_URL=https://your-domain.vercel.app. - Run migrations against production:
npx prisma migrate deploy(needs the directDIRECT_URL, not the pooled one). - Add your production URL to Neon Auth trusted origins.
- Create the QStash schedule once:
curl -X POST \
-H "Authorization: Bearer $CRON_SECRET" \
"https://upvera-app.vercel.app/api/cron/setup"Replace the URL with yours. After the schedule exists, you can remove QSTASH_TOKEN from Vercel.
Telegram (optional): Create a bot via BotFather, set the token and username in env vars, deploy, then register the webhook:
curl -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/setWebhook" \
--data-urlencode "url=https://upvera-app.vercel.app/api/telegram/webhook" \
--data-urlencode "secret_token=${TELEGRAM_WEBHOOK_SECRET}"Users connect from Dashboard → Profile → Connect Telegram.
| Command | What it does |
|---|---|
npm run dev |
Dev server on port 3007 |
npm run build |
Production build |
npm run env:check |
Check for missing config |
npx prisma migrate deploy |
Apply migrations (production) |
Adapted from rakibutsho/uptime-tracker by Md. Rakibul Islam (MIT). See LICENSE and NOTICE.md.
