• v0.5.0 4f30b6f244

    vmanne-poc released this 2026-10-14 21:51:19 -04:00 | 65 commits to main since this release

    Added

    • Background scheduler: every-minute dispatch of due campaigns; daily 06:00 engagement snapshot.
    • ReportSnapshot model; 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
  • v0.4.0 a0c6dc5741

    vmanne-poc released this 2026-10-14 21:43:20 -04:00 | 67 commits to main since this release

    Added

    • React + TypeScript frontend (Vite), served by nginx on port 3000.
    • nginx proxies /api to the backend.
    • Views: login, projects, contacts (with stats), campaigns (create/send), campaign report.
    • frontend service 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
  • v0.3.0 52b201f8d9

    vmanne-poc released this 2026-10-14 21:43:20 -04:00 | 69 commits to main since this release

    Added

    • 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
  • v0.2.0 7fb08906a3

    vmanne-poc released this 2026-10-14 21:43:20 -04:00 | 71 commits to main since this release

    Added

    • 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 Message row 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.messageId links 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
  • v0.1.0 be4f86c4dc

    vmanne-poc released this 2026-10-14 21:43:20 -04:00 | 74 commits to main since this release

    Added

    • 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@localhost allowed.
    • OpenSSL + Prisma linux-musl-openssl-3.0.x target 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