TikTok Shop Video Generator
Turn any viral TikTok video into an ad for your own product in one click. For TikTok Shop sellers and affiliates — no filming, no editing. Free to try.
Self-hosted email platform — SMTP, subscriber lists, block editor, and campaigns
Translation pending
MarketingTypeScript · CSSGitHub @gbordigaOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A self-hosted email campaign platform built with Next.js. Configure SMTP servers, manage subscriber lists, compose emails with a block-based editor, and send campaigns — all from a single interface. Data is stored locally in the browser via IndexedDB, so no external database is required.
Live: bismuth-mail.vercel.app
/campaigns/:id/compose|send|logs), with live sidebar progress, resume, retry-failed, search, filtered log export, pre-send checks, and test emails{{field}} placeholders in subject and body, resolved per-contact from list custom fieldsList-Unsubscribe mailto header, multipart text/plain, sanitized HTML blocks, and uploaded images sent as CID inline partschangelog.yaml| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| UI | React 19, Radix UI, Tailwind CSS 4 |
| Components | shadcn/ui pattern |
| Database | Dexie (IndexedDB) |
| Nodemailer via API routes | |
| Validation | Zod |
| Language | TypeScript 6 |
git clone https://github.com/gbordiga/bismuth-mail.git
cd bismuth-mail
pnpm install
pnpm dev
Open http://localhost:3000 in your browser.
pnpm build
pnpm start
main, using Node 22.pnpm lint, tsc --noEmit, pnpm test, and pnpm build.send, send-batch, test) plus email building, merge fields, attachments, backup, CSV, send engine, and campaign workspace helpers./api/smtp/* routes to perform test/send operations.bismuth-mail/
├── app/
│ ├── api/
│ │ ├── changelog/ # Serves structured notes from changelog.yaml
│ │ └── smtp/ # API routes for sending and testing emails
│ ├── (dashboard)/ # Route-based app sections
│ │ ├── smtp/page.tsx
│ │ ├── senders/page.tsx
│ │ ├── lists/page.tsx
│ │ ├── campaigns/ # Hub plus /new and /:id/compose|send|logs
│ │ ├── editor/page.tsx # Redirects to /campaigns
│ │ ├── send/page.tsx # Redirects to the sending campaign or /campaigns
│ │ └── backup/page.tsx
│ ├── layout.tsx # Root layout with theme provider
│ ├── page.tsx # Redirects to /smtp
│ └── globals.css # Global styles and Tailwind imports
├── components/
│ ├── app-shell.tsx # Navigation shell with sidebar progress
│ ├── smtp-config.tsx # SMTP server management
│ ├── sender-section.tsx # Sender profile management
│ ├── email-list-section.tsx # Contact list management
│ ├── campaign-list.tsx # Campaign hub
│ ├── campaign-workspace.tsx # Compose / Send / Logs chrome
│ ├── newsletter-editor.tsx # Campaign compose phase
│ ├── send-campaign.tsx # Campaign send phase
│ ├── campaign-send-logs.tsx # Campaign logs phase
│ ├── onboarding-guide.tsx # First-run setup checklist
│ ├── changelog-modal.tsx # In-app version history
│ ├── backup-section.tsx # Data backup and restore
│ └── ui/ # Reusable UI primitives (shadcn/ui)
├── hooks/ # Shared client hooks (Dexie tables, changelog)
└── lib/
├── db.ts # Dexie database schema and types (IndexedDB only)
├── email-builder.ts # HTML email template builder
├── send-engine.ts # Recipient selection and campaign status helpers
├── sending-context.tsx # Live send progress across the app
├── repositories/ # Campaign, send-log, and suppression queries
├── validations.ts # Zod schemas for API validation
└── __tests__/ # Vitest coverage for routes and helpers
A setup guide in the sidebar walks through these steps on first run. All data stays in your browser's IndexedDB. Use the Backup section to export/import your data as JSON.
See changelog.yaml for a detailed list of changes between versions.
Contributions are welcome! Feel free to open an issue or submit a pull request.
git checkout -b feature/my-feature)git commit -m 'feat: add my feature')git push origin feature/my-feature)This project is licensed under the MIT License.