Skip to content
DheesoftDheesoft home
Back to work
Case study · Museum specimen catalog

Padma Bridge Museum — specimen bookkeeping

A specimen-cataloging admin and public database for the Padma Bridge Museum — MERN stack, live at db.padmamuseum.gov.bd since 2024.

  • Live
  • Since 2024
  • db.padmamuseum.gov.bd
Visit live portal
Padma Bridge Museum admin login

By the numbers

Shipped
2024
Taxonomy fields
7
Modules
6
Inventory export
xlsx

01The problem

The Padma Bridge Museum needed a way to catalog its biological and historical specimens — recording each entry with its taxonomy, species profile, photographs and provenance — and to give curators a way to pull inventory reports without a spreadsheet round-trip. It also needed to live on a Bangladesh government domain (`*.gov.bd`) with an admin-only login, which meant the build had to be both lightweight enough for that hosting environment and rigorous enough that government staff could trust the data.

02What we built

  1. 01

    A specimen catalog with seven taxonomic fields (phylum to species), photograph upload via Multer, and CRUD wired through Redux Toolkit and a React 18 admin SPA.

  2. 02

    A species profile resource — a parent record that groups specimens by species so curators can attach narrative content to a species and have every specimen of that species inherit it.

  3. 03

    A JWT-protected role-aware admin app — protected routes wrapped React Router views, bcryptjs-hashed credentials and a server-side guard on every mutating endpoint.

  4. 04

    Excel inventory export (xlsx) — curators pull a one-click XLSX dump of any specimen list (filtered by taxonomy or storage location) for printed records and external audits.

  5. 05

    A migration utility on the API — an authenticated endpoint that runs bulk data import scripts, so the early load of historical records from offline registers could land safely without a re-deploy.

  6. 06

    Deployed under the `db.padmamuseum.gov.bd` government subdomain — frontend served as a static React build, backend running Express + MongoDB behind the institutional reverse proxy.

  7. 07

    A hierarchical specimen catalog with a data-mapping layer that links every digital record to its physical storage coordinate — curators move from a search result to the exact shelf without leaving the admin.

03Stack

Frontend

  • React 18
  • Create React App
  • MUI 5
  • Redux Toolkit
  • react-router-dom v6
  • react-hook-form
  • axios
  • sweetalert2

Admin + auth

  • Protected routes
  • JWT session
  • Role gates
  • react-responsive
  • MUI x-date-pickers
  • Redux Toolkit Query
  • Image upload UI
  • Excel export UI

Backend

  • Node.js
  • Express
  • MongoDB
  • Mongoose
  • JWT
  • bcryptjs
  • Multer
  • xlsx

04Screenshots

05The hard part

The constraint that shaped most of the build was the deployment surface — a Bangladesh government `gov.bd` subdomain. That meant the frontend had to be a static React build that worked through an institutional reverse proxy, the backend had to be a single Node process under PM2, and there was no easy room for vendor lock-in. MongoDB stayed self-hosted, file uploads stayed local via Multer, and the only outbound dependency was an emailer for password resets. Lightweight by necessity, but the same constraint made the app survive every infrastructure change since.

The second decision was modelling the specimen-species relationship as two resources, not one. A species profile is a long-lived narrative record; an individual specimen is a row that points at a species and adds collection metadata. That split meant curators could update the species story once and have every specimen in that species reflect it — without rewriting hundreds of specimen records. Two years later the data model still holds, and the database has continued accepting new entries from staff who never saw the original mockups.

Your move

Want one built around your operation?

We take on a small number of custom engagements per year. If this looks close to a problem you have, tell us about it.