-
released this
2026-10-14 21:51:19 -04:00 | 65 commits to main since this releaseAdded
- Background scheduler: every-minute dispatch of due campaigns; daily 06:00 engagement snapshot.
ReportSnapshotmodel; list and manual-build endpoints.- Sender management UI (SMTP / SES).
- Documentation:
ROADMAP.md,docs/internal/(architecture, data model, API, operations),docs/user/(getting started, contacts, campaigns, reports). - Annotated tags
v0.1.0-v0.4.0.
Known gaps: there is no way to schedule a campaign yet (added in v0.7.0); the manual snapshot endpoint rebuilds all projects (#13). Project-scoped routes do not check membership (#8). All fixed in v0.7.0.
Milestone: Phase 5 · Summary: #5
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-10-14 21:43:20 -04:00 | 67 commits to main since this releaseAdded
- React + TypeScript frontend (Vite), served by nginx on port 3000.
- nginx proxies
/apito the backend. - Views: login, projects, contacts (with stats), campaigns (create/send), campaign report.
frontendservice in Docker Compose.
Security note: project-scoped routes do not check project membership. Fixed in v0.7.0 (#8).
Milestone: Phase 4 · Summary: #4
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-10-14 21:43:20 -04:00 | 69 commits to main since this releaseAdded
- Per-project sign-up forms.
- Public submission endpoint for website visitors.
- Double opt-in: PENDING contact + confirmation email; ACTIVE only after confirming.
- Single opt-in option.
ContactToken: hashed, single-use, 48h expiry.
Notes
- Unsubscribed contacts are not silently re-activated.
Verified
- PENDING on submit, confirmation email in Mailpit, ACTIVE after confirm, token reuse rejected (400).
Security note: project-scoped routes do not check project membership. Fixed in v0.7.0 (#8).
Milestone: Phase 3 · Summary: #3
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-10-14 21:43:20 -04:00 | 71 commits to main since this releaseAdded
- Senders: per-project SMTP and AWS SES configuration.
- Templates with
{{ content }}slots. - Campaigns: create, list, update, send, report.
- Send engine: per-recipient rendering (Markdown/HTML) via Nodemailer; one
Messagerow per recipient. - Placeholders:
{{ contact.first_name }},{{ contact.last_name }},{{ contact.email }},{{ unsubscribe_url }}. - Open pixel, click tracking with redirect, one-click unsubscribe.
- Per-campaign counts and rates.
- Mailpit test SMTP in Docker Compose.
Changed
ContactEvent.messageIdlinks events to the message that triggered them.
Verified
- Sent to 3 contacts via Mailpit; open + click tracking updated the report to opened 1 / clicked 1 (33.3%).
Security note: project-scoped routes do not check project membership. Fixed in v0.7.0 (#8).
Milestone: Phase 2 · Summary: #2
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.1.0 — Phase 1: Foundation Stable
released this
2026-10-14 21:43:20 -04:00 | 74 commits to main since this releaseAdded
- NestJS + TypeScript backend, Prisma ORM, PostgreSQL, Docker Compose. Proprietary license.
- Database schema: users, tokens, projects, members, contacts, segments, contact events, forms, senders, templates, campaigns, messages, tracking links and clicks.
- Authentication: register, login (JWT),
me; bcrypt password hashing. - Root admin bootstrap from
POSTAK_USER/POSTAK_PASSWORD. - Projects: create, list, get, delete.
- Contacts: create, list, count, unsubscribe, bulk CSV import.
/api/health.
Fixed
argon2->bcryptjs(native build failed on Alpine).- Local-domain emails such as
admin@localhostallowed. - OpenSSL + Prisma
linux-musl-openssl-3.0.xtarget for Alpine.
Security note: project-scoped routes in this release do not check project membership. Fixed in v0.7.0 (#8).
Milestone: Phase 1 · Summary: #1
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads