Customer Engagement Platform for Email, Push Notifications, & SMS
The world's leader for mobile push notifications, web push, SMS, email and in-app messaging. Trusted by 2 million+ businesses to send 12 billion+ messages per…
Send email campaigns via Gmail, manage recipient lists, and monitor delivery metrics like bounces and opens
Translation pending
AI summary · website and README
MarketingJavaScript · HTMLGitHub @haithamriyamiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Smart global campaigns, clean lists, guaranteed delivery.
Open http://127.0.0.1:3000. Log in, then invite a partner from Settings.
You do not need a custom domain. Connect Gmail and campaigns send as that Google address (about 500/day on a personal Gmail).
1. Open Google Cloud Console
2. Create a project → APIs & Services → enable Gmail API
3. OAuth consent screen: External, app name DeliverIQ, add your Gmail as a test user
4. Credentials → Create OAuth client ID → Web application
5. Authorized redirect URI (must match exactly):Read the full README ↗Smart global campaigns, clean lists, guaranteed delivery.
docker compose up -d
npm install
npx prisma migrate deploy
npm run db:seed
npm run dev
npm run dev:worker
Open http://127.0.0.1:3000. Log in, then invite a partner from Settings.
You do not need a custom domain. Connect Gmail and campaigns send as that Google address (about 500/day on a personal Gmail).
http://127.0.0.1:3000/auth/google/callback
.env:GOOGLE_CLIENT_ID=....apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=....
GOOGLE_REDIRECT_URI=http://127.0.0.1:3000/auth/google/callback
If you later host for free (Render/Railway), add that URL as a second redirect URI, e.g. https://your-app.onrender.com/auth/google/callback. Still no custom domain.
Only needed if you later buy a domain and want higher volume. Until Gmail is connected or SendGrid is live, jobs are logged locally.
waitUntil), so sending keeps going after the tab is closed or minimized.users.next_send_at. Every send first claims that slot with one atomic UPDATE ... WHERE next_send_at IS NULL OR next_send_at <= now() and moves it forward by the gap plus random jitter (Settings, default 10 s + up to 5 s, minimum 5 s). Overlapping runs can never double send or break the gap.maxDuration 300 s in vercel.json, the Hobby maximum with Fluid compute, read at runtime with getDeadline()). If it sent something and work is left, it starts the next run by calling /cron/send-tick on itself. A lease row (scheduler_leases) keeps it to one run at a time..github/workflows/send-tick.yml (every 5 min), the daily Vercel Cron, and optionally an every minute external pinger such as cron-job.org calling GET https://deliveriq-eosin.vercel.app/cron/send-tick with header Authorization: Bearer <CRON_SECRET>.campaign_recipients.sent_at since midnight Africa/Nairobi for that sender. Over the cap, emails stay queued and continue after midnight (next cron or pinger call).CRON_SECRET (required for the cron endpoint and self chain), SEND_RUN_SECONDS (default 270), SEND_SELF_CHAIN=false to turn chaining off.npm test. Database tests run only with TEST_DATABASE_URL pointing at a throwaway database.