- TypeScript 98.6%
- CSS 0.9%
- Shell 0.2%
- Dockerfile 0.2%
- JavaScript 0.1%
| backend | ||
| frontend | ||
| .gitignore | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| docker-compose.yml | ||
| LICENSE | ||
| README.md | ||
Postak
Postak is a self-hosted newsletter and email-marketing platform by vmanne.com. It lets you manage subscriber lists, design and send newsletter campaigns, collect sign-ups through embeddable forms, and track engagement — all on your own infrastructure.
Postak is an original, independently developed product. It is not derived from any third-party codebase.
Features (v0.15.0)
- Authentication — login, password change, forgot-password by email, optional self-registration, root admin bootstrap
- Users — the administrator creates, disables, and deletes accounts and can set temporary passwords
- Projects — separate workspaces with owner/member roles, an overview page, and settings; only members can see a project's data
- Contacts — search, contact pages with activity, groups, and matching segments, custom fields and external IDs, bulk selection, CSV import and export
- Groups — hand-managed contact lists per project; add or remove contacts one by one, in bulk, by CSV import, or from sign-up forms
- Segments — rule builder with AND/OR blocks (email, names, dates, custom fields, group membership), live contact list, CSV download
- Sign-up forms — hosted pages and embed code, form editor with live preview, double opt-in and welcome emails, spam protection
- Campaigns — editor with live preview, Plain text/Markdown/HTML/MJML, personalisation and campaign data, test sends, duplicate, send to several groups and segments (with exclusions and a live count), send now or schedule
- A/B testing — up to four subject, preview text, or content variants sent to a test group; the winner by opens or clicks (or picked by hand) goes to everyone else
- Templates — styled, HTML, plain-text, or MJML templates with style options, footer, live preview, clone, and a project default
- Delivery — SMTP (including on-prem relays), Amazon SES (SMTP or API), SendGrid, Mailgun, and Postmark, background sending with per-sender rate limits and retries
- API keys — project-scoped keys for scripts and other systems, shown once, stored hashed, rate limited, and revocable
- Tracking — opens, clicks, and unsubscribes per recipient (can be turned off per campaign); SES bounces and complaints via SNS; optional public web view
- Reporting — per-campaign link clicks, recipients with CSV export, activity over time, and a 14-day project trend
- Upgrades — versioned database migrations, applied on start
- Administration — system info page showing how the server is configured
Planned work and known gaps are tracked as milestones and issues.
Tech Stack
| Layer | Technology |
|---|---|
| Backend | Node.js + TypeScript (NestJS) |
| Database | PostgreSQL (Prisma ORM) |
| Frontend | React + TypeScript (Vite) |
| AWS SES / SMTP (Nodemailer) | |
| Deployment | Docker + Docker Compose |
Quick Start
docker compose up -d
The app is served at http://localhost:3000 and the API at http://localhost:3001.
Run the test suites. The backend run (unit, migrations, end-to-end) resets a
separate postak_test database, never the app's postak database. Create it once:
docker exec postak-db createdb -U postak postak_test
docker compose run --rm --build -T backend-test
docker compose run --rm --build -T frontend-test
Upgrading from v0.8.0 or earlier: back up the database first. On first start the backend adopts the existing schema into the migration history.
Project Structure
Postak/
├── backend/ # NestJS API + Prisma
├── frontend/ # React app
├── docker-compose.yml
└── README.md
Documentation
- Wiki — user guide.
- Milestones, issues, and releases — plan, status, and release notes.
- Contributing — branch, test, and pull-request workflow.
- Changelog — history of changes across phases.
Owner documentation (architecture, data model, API reference, operations) is maintained separately by the project owners and is not part of this repository.
License
Copyright © vmanne.com. All rights reserved. Proprietary and confidential.