
E-Cards Platform — Template Engine + Batch Personalization
A personal showcase project: browser-based card designer that ports InDesign batch behaviors and ingests messy contact spreadsheets
This is a personal LogicBison showcase — not a customer deployment. I built it to demonstrate a class of problem every ops team recognizes: corporate cards designed in Adobe InDesign, driven by a JSX script that named every text frame, auto-fit type, and applied per-word brand coloring. The workflow worked — until batch scale and messy HR exports made desktop tooling the bottleneck.
The public instances are a browser-based Fabric.js designer you can try without signup. In a controlled run on the live designer, 1,000 synthetic contacts parsed in about 2 seconds and 1,000 individualized PNG exports finished in under a minute.
The repository also includes a full server-side architecture (Python batch parser, render worker, hybrid storage, OAuth via the Tools Dashboard identity provider) — built as portfolio engineering depth, not deployed as a multi-tenant production service for any client.
The Problem
The problem class: manual card design in InDesign doesn't scale for batch personalization. Contact lists arrive messy — alias column names, Spanish name formatting, phone numbers needing normalization. Existing tools fail at behavioral parity with a designer's InDesign habits (named objects, per-word coloring, auto-fit rules, icon clamp positioning).
This project shows how I'd approach that modernization: port the behaviors first, batch engine second, pretty designer third.
The Approach
Public layer (what you can try today): a Next.js designer on Fabric.js that reproduces InDesign-style behaviors — named elements, multi-color text, dynamic icon clamp, auto-fit, 144 DPI export. Drag-and-drop batch upload (.csv/.txt/.vcf/.xls/.xlsx). Data stays in your browser on the public demo instances.
Repository layer (portfolio depth, not customer production): a Python batch-parsing service with field normalization and LLM-assisted name cleaning; a BullMQ render worker; hybrid PostgreSQL + Cassandra storage; SeaweedFS for exports; OAuth 2.0 with PKCE against the sibling Tools Dashboard — the app does not own its own auth, by design.
The Outcome
A linkable portfolio proof: two public instances (demo and production of this personal project) where visitors can exercise the designer. Owner-verified benchmark on the live designer: ~2 seconds to parse 1,000 contacts; under one minute to export 1,000 individualized PNG cards.
What this is not: a production deployment for a paying client, a live multi-tenant SaaS, or evidence of user adoption or revenue.
Try the live demo
Personal portfolio project — not deployed for any customer. Try the demo at ecards-demo.aiepic.app or the production instance at ecards.aiepic.app. Both run a browser-only designer: everything stays in your browser (localStorage / IndexedDB). The server-side pipeline described in the repo is engineering depth, not what these public instances expose.
Try the live demoKey Takeaway
Behavioral parity is what makes a legacy-tool port credible — and a personal showcase project is an honest way to prove you can do it before any client signs.
Ready to Build Your Platform?
One 30-minute call to see if we're a fit. No pitch. No pressure. Just a conversation about what you need to build.
Most engagements start with a bounded architecture diagnostic: $5,000 to $12,000, 1 to 3 weeks. Fixed-price platform builds: $20,000 to $80,000, milestone-gated, 50% deposit. Fractional CTO: $6,000 to $10,000 per month, 90-day minimum.