GenifySuite
A full-stack rebuild of a student HTML toolkit into a product with accounts, billing and AI.
- Role
- Full-Stack Engineer
- Timeline
- Aug 2024 – v2
- Team
- Solo
- Status
- v2.0

The problem
GenifySuite began as a learning-project toolkit in plain HTML, CSS and JavaScript: card validation, fake test data and small developer utilities, with no accounts, nowhere to save work and no backend. Version 2 turns it into a real product.
What it does
Ten classic utilities
Card validator and test-card generator, fake profiles, lorem ipsum, and JSON, password, UUID, colour, QR and IP lookup tools, all usable without an account.
Seven AI tools and an agent
Regex generator, commit message writer, schema-to-fake-data, API mock generator, cron explainer and more, plus a tool-calling agent that streams its replies.
Real accounts
Auth.js email and password with optional Google and GitHub sign-in, email verification and password reset, per-tool history and saved workflows.
BYOK and billing
User API keys encrypted with AES-256-GCM, Stripe billing tiers and database-backed rate limits.
⌘K palette and a live landing page
Jump to any tool from the keyboard, and try a working password generator right on the front page.
How it flows
- Next.js App Router
- Auth.js session
- Prisma + Postgres
- AI provider (BYOK)
- Streamed response
- Saved history
Problems solved
Rebuilding responsibly
ProblemThe original had a second generator that accepted any BIN and produced full card numbers with CVV, expiry and a fake balance, the shape of card-fraud tooling.
SolutionIt was deliberately not carried forward. The new generator only produces Luhn-valid numbers from the generic test prefixes card networks publish for their own docs.
From static pages to a backend
ProblemNo accounts, no persistence and no way to protect paid features.
SolutionPrisma and Postgres for data, Auth.js for sessions, and Stripe plus rate limits to protect usage.
Handling users’ AI keys
ProblemBring-your-own-key means storing secrets.
SolutionKeys are encrypted with AES-256-GCM before they reach the database.