LogicBisonLogicBison
Work
Back to Work
E-Cards Platform — Template Engine + Batch Personalization
Digital Media
Portfolio project

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

Next.jsFabric.jsTypeScriptOAuth 2.0 / PKCE
~1,000 / ~2s
Parse (controlled run)
1,000 / <1min
PNG export (controlled run)
Demo + prod
Public instances
Browser-only
Data on public URLs
None
Customer deployment
InDesign + JSX
Replaces (problem class)

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 demo

Key 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.