Skip to content

Repository files navigation

Upvera

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

Upvera dashboard

Built with Next.js, Neon (Postgres + Auth), and Upstash QStash for five-minute checks on Vercel Hobby. No VPS required.

What you get

  • 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.

Local setup

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.local

Fill 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 dev

Open 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

Deploy to Vercel

  1. Import the repo on Vercel and add the env vars from .env.example to Production.
  2. Set CRON_MODE=external and APP_URL=https://your-domain.vercel.app.
  3. Run migrations against production: npx prisma migrate deploy (needs the direct DIRECT_URL, not the pooled one).
  4. Add your production URL to Neon Auth trusted origins.
  5. 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.

Scripts

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)

License

Adapted from rakibutsho/uptime-tracker by Md. Rakibul Islam (MIT). See LICENSE and NOTICE.md.

About

Upvera is an uptime monitoring dashboard for websites and HTTP APIs. Add a URL, pick a check interval, and it keeps pinging on schedule - recording response times, opening incidents when something breaks, and closing them when it comes back.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages