Analytics
Privacy Analytics
Plausible-powered web analytics. No cookies, no consent banner, no IP storage. Just real-time pageviews, sessions, and goals.
- GDPR-native โ your visitors don't get the cookie wall
- Under 1 KB script, <50ms p95 ingestion latency
- UTM, referrer, custom events, and goal funnels
- Public sharing links โ embed on your status page or pitch deck
<!-- one script tag, anywhere in <head> -->
<script defer
data-domain="yoursite.com"
src="https://analytics.mojaq.com/js/script.js"
></script>
# custom events
plausible('Signup', { props: { plan: 'pro' } })
# url โ pdf
curl -X POST https://api.mojaq.com/v1/render \
-H "Authorization: Bearer $MOJAQ_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://invoice.app/123","format":"pdf"}' \
-o invoice.pdf
# or html โ png at any viewport
{ "html": "<h1>Hello</h1>",
"format": "png",
"viewport": { "width": 1200, "height": 630 } }
Render API
Screenshot & PDF API
Send a URL or HTML, get back pixel-perfect screenshots or PDFs. Gotenberg under the hood, hardened for production batch workloads.
- PDF, PNG, JPEG, WebP โ single endpoint, one bearer token
- Custom viewports, device emulation, full-page or element captures
- Webhook on completion for batch jobs (invoices, social cards)
- Authenticated upstream requests via per-call headers
Uptime
Uptime & Heartbeat Monitoring
Watch websites, APIs, ports, and cron jobs from Frankfurt. Push monitors catch the silent failures your TCP probes miss.
- HTTP, TCP, ICMP, DNS, gRPC, push-heartbeat โ one runtime
- 30-second intervals, multi-region probes on the roadmap
- Telegram, Slack, Discord, webhook, email alert channels
- Public status pages with your custom domain & branding
# nightly backup heartbeat โ alert if no ping in 26h
curl -fsS "https://kuma.mojaq.com/api/push/$TOKEN" \
--data-urlencode "status=up" \
--data-urlencode "msg=backed up 51 files, 194M"
# exact pattern in our own backup.sh:
# https://github.com/mojaq/...
# Sentry SDK works as-is โ point DSN, ship.
import * as Sentry from "@sentry/node"
Sentry.init({
dsn: "https://<key>@errors.mojaq.com/<project-id>",
tracesSampleRate: 0.1,
})
# Captures stack traces, breadcrumbs, request context.
# Smart grouping deduplicates noisy errors.
Errors
Error & Exception Tracking
GlitchTip backend โ fully Sentry-SDK compatible. Drop in any Sentry client, point the DSN at errors.mojaq.com, you're done.
- Sentry SDK compatible across Node, Python, Go, PHP, Ruby, .NET
- Full stack traces, breadcrumbs, request & user context
- Issue grouping, assignments, daily digest emails
- Slack, Discord, webhook, and now Resend-powered email