Português English

Internal plant and supplier catalog

A private plant and supplier catalog, from a legacy Django/MySQL system to a modern Next.js web app. 4 years in production, used daily.

A plant nursery and landscaping business in São Paulo kept its species catalog and supplier network in an old Django system hosted on PythonAnywhere with MySQL. The goal was to retire that legacy and ship a fast, pleasant, cheap-to-run internal tool.

Home: catalog with an editorial identity and search by common or scientific name.
Home: catalog with an editorial identity and search by common or scientific name.

The result is a private catalog with 218 species, 78 suppliers and 278 plant×supplier links, with instant search, light/dark themes and an admin panel to curate the collection. All access is restricted to an allow-list of e-mails.

It ran for 4 years in production, used daily in the company's operations. It was the core tool of the day-to-day business.

What I built

End-to-end design and implementation: design, front-end, back-end, database, authentication, data migration and deployment.

  • Catalog with instant search by common or scientific name and paginated species listing.
  • Species page with size, packaging, price and the linked suppliers.
  • Supplier directory with search by name, city, neighborhood or state.
  • Admin panel with CRUD for plants and suppliers, plant×supplier links and image upload.
  • Fully private: allow-list login, middleware blocking everything except the login screen, and robots.txt de-indexing the whole site.
  • Data migration from the legacy MySQL to Postgres.
Species detail: common and scientific name, attributes and linked suppliers.
Species detail: common and scientific name, attributes and linked suppliers.
Plant editor in the admin: fields, main photo and supplier links.
Plant editor in the admin: fields, main photo and supplier links.
Admin panel: collection overview and curation shortcuts.
Admin panel: collection overview and curation shortcuts.
Supplier directory (real data blurred for privacy).
Supplier directory (real data blurred for privacy).
Responsive layout: the catalog on mobile.
Responsive layout: the catalog on mobile.

Tech Stack

  • Front-end: Next.js 15 (App Router), React 19, TypeScript, Tailwind CSS, Radix UI
  • Back-end: Next.js Route Handlers / Server Actions
  • Database: PostgreSQL with Drizzle ORM
  • Auth: Auth.js v5 (allow-list e-mail login)
  • Images: Vercel Blob
  • Infra: Vercel (gru1 region) + Postgres on a VPS with pgbouncer and daily backups (pg_dump)

Who this is for

Businesses stuck with a legacy internal tool (a spreadsheet, Access, PHP or old Django) that need a modern, private, low-maintenance web app, without a full rewrite or high running costs.

Get in Touch

Interested in Internal plant and supplier catalog? Let's discuss how I can help you.

Let's talk about your project

The best way to reach me is on LinkedIn — I usually reply within a day.

Connect on LinkedIn