Skip to content
RotaractMoraPublic

About

A full-stack, TypeScript-powered certificate automation system that enables drag-and-drop template upload, pixel-accurate name placement, real-time preview rendering, configurable text styling, and high-volume batch generation from structured participant lists, with integrated backend APIs and cloud storage support.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Credenza

Credenza is a Next.js certificate generator for uploading a template, positioning names, generating PNG or PDF downloads, and emailing certificates through Gmail SMTP.

What It Does

  • Upload a certificate template image.
  • Preview and position names with live canvas guides.
  • Style names with font, size, color, weight, and italic controls.
  • Manage recipients manually or by CSV/TXT import.
  • Generate ZIP downloads of PNG or PDF certificates.
  • Send certificates by email with live progress updates.
  • Require first-run acceptance of terms before the app can be used.

Tech Stack

  • Next.js 15
  • React 19
  • TypeScript
  • Tailwind CSS
  • Radix UI primitives
  • Nodemailer for Gmail SMTP
  • Supabase Storage for certificate files
  • jsPDF and JSZip for downloads

Local Setup

1. Install dependencies

npm install

2. Configure environment variables

Create a .env.local file with the values below:

SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-gmail-app-password
SMTP_FROM=your-email@gmail.com
SMTP_SECURE=false

NEXT_PUBLIC_SUPABASE_URL=your-supabase-url
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your-publishable-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key

3. Run locally

npm run dev

Open http://localhost:3000 in your browser.

Deployment on Vercel

  1. Push the repository to GitHub.
  2. Import the project into Vercel.
  3. Add the same environment variables in the Vercel project settings.
  4. Deploy the app.

No local storage, Prisma database, or Google Drive setup is required.

Important Notes

  • The app shows a mandatory terms modal on first load.
  • Users must accept the Terms and Conditions and the fraud disclaimer before continuing.
  • Generated certificate files are stored in Supabase and shared through expiring signed links.
  • The project is intended for lawful certificate workflows only.

Main Routes

  • / main app
  • /docs documentation
  • /privacy privacy policy
  • /terms terms of service

Scripts

npm run dev
npm run build
npm start
npm run lint

About

A full-stack, TypeScript-powered certificate automation system that enables drag-and-drop template upload, pixel-accurate name placement, real-time preview rendering, configurable text styling, and high-volume batch generation from structured participant lists, with integrated backend APIs and cloud storage support.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages