মূল কন্টেন্টে যান
Dheesoftইন্টেলিজেন্ট সফটওয়্যারস হোম
ওয়ার্কে ফিরুন
কেস স্টাডি · জাদুঘর স্পেসিমেন ক্যাটালগ

পদ্মা সেতু জাদুঘর — স্পেসিমেন বুককিপিং

পদ্মা সেতু জাদুঘরের জন্য স্পেসিমেন-ক্যাটালগিং অ্যাডমিন ও পাবলিক ডেটাবেস — MERN স্ট্যাক, ২০২৪ থেকে db.padmamuseum.gov.bd-এ লাইভ।

  • লাইভ
  • ২০২৪ থেকে
  • db.padmamuseum.gov.bd
লাইভ পোর্টাল দেখুন
Padma Bridge Museum admin login

সংখ্যায়

শিপ
2024
ট্যাক্সোনমি ফিল্ড
7
মডিউল
6
ইনভেন্টরি এক্সপোর্ট
xlsx

01সমস্যা

পদ্মা সেতু জাদুঘরের প্রয়োজন ছিল তার বায়োলজিক্যাল ও ঐতিহাসিক স্পেসিমেন ক্যাটালগ করার একটি উপায় — প্রতিটি এন্ট্রি ট্যাক্সোনমি, স্পিসিস প্রোফাইল, ফটোগ্রাফ আর প্রভেনান্সসহ রেকর্ড — এবং কিউরেটরদের স্প্রেডশিট রাউন্ড-ট্রিপ ছাড়াই ইনভেন্টরি রিপোর্ট তোলার সুযোগ। আবার এটি একটি বাংলাদেশ সরকারি ডোমেইনে (`*.gov.bd`) অ্যাডমিন-অনলি লগইনসহ চলতে হবে — মানে বিল্ডকে হোস্টিং পরিবেশের জন্য যথেষ্ট হালকা আর সরকারি স্টাফদের আস্থা রাখার মতো যথেষ্ট কঠোর হতে হবে।

02যা তৈরি করেছি

  1. 01

    সাতটি ট্যাক্সোনমিক ফিল্ড (ফাইলাম থেকে স্পিসিস) সহ একটি স্পেসিমেন ক্যাটালগ, Multer দিয়ে ফটোগ্রাফ আপলোড এবং Redux Toolkit ও React 18 অ্যাডমিন SPA-এর মাধ্যমে CRUD।

  2. 02

    একটি স্পিসিস প্রোফাইল রিসোর্স — একটি প্যারেন্ট রেকর্ড যা স্পিসিস অনুসারে স্পেসিমেন গ্রুপ করে, যাতে কিউরেটররা একটি স্পিসিসে ন্যারেটিভ কন্টেন্ট যুক্ত করলে সেই স্পিসিসের প্রতিটি স্পেসিমেন তা উত্তরাধিকার সূত্রে পায়।

  3. 03

    JWT-প্রটেক্টেড রোল-সচেতন অ্যাডমিন অ্যাপ — প্রটেক্টেড রুট React Router ভিউকে মোড়ায়, bcryptjs-হ্যাশড ক্রেডেনশিয়াল আর প্রতিটি মিউটেটিং এন্ডপয়েন্টে সার্ভার-সাইড গার্ড।

  4. 04

    Excel ইনভেন্টরি এক্সপোর্ট (xlsx) — কিউরেটররা যেকোনো স্পেসিমেন লিস্টের (ট্যাক্সোনমি বা স্টোরেজ অবস্থানে ফিল্টার করা) এক-ক্লিক XLSX ডাম্প তোলেন, ছাপানো রেকর্ড আর বহিরাগত অডিটের জন্য।

  5. 05

    API-তে একটি মাইগ্রেশন ইউটিলিটি — একটি অথেনটিকেটেড এন্ডপয়েন্ট যা বাল্ক ডেটা ইম্পোর্ট স্ক্রিপ্ট চালায়, যাতে অফলাইন রেজিস্টার থেকে ঐতিহাসিক রেকর্ডের প্রাথমিক লোড পুনঃ-ডিপ্লয় ছাড়াই নিরাপদে আসে।

  6. 06

    `db.padmamuseum.gov.bd` সরকারি সাবডোমেইনে ডিপ্লয়েড — ফ্রন্টএন্ড স্ট্যাটিক React বিল্ড হিসেবে সার্ভড, ব্যাকএন্ড প্রতিষ্ঠানিক রিভার্স প্রক্সির পেছনে Express + MongoDB।

  7. 07

    একটি হায়ারার্কিক্যাল স্পেসিমেন ক্যাটালগ আর ডেটা-ম্যাপিং স্তর — যা প্রতিটি ডিজিটাল রেকর্ডকে তার ফিজিক্যাল স্টোরেজ কো-অর্ডিনেটের সঙ্গে যুক্ত করে; কিউরেটররা সার্চ ফলাফল থেকে অ্যাডমিন না ছেড়েই সঠিক শেলফে পৌঁছান।

03স্ট্যাক

ফ্রন্টএন্ড

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

অ্যাডমিন + অথ

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

ব্যাকএন্ড

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

04স্ক্রিনশট

05কঠিন অংশ

বিল্ডকে সবচেয়ে বেশি আকার দিয়েছিল ডিপ্লয়মেন্ট সারফেস — বাংলাদেশ সরকারের একটি `gov.bd` সাবডোমেইন। মানে ফ্রন্টএন্ডকে এমন একটি স্ট্যাটিক React বিল্ড হতে হবে যা একটি প্রতিষ্ঠানিক রিভার্স প্রক্সির ভেতর দিয়ে কাজ করে, ব্যাকএন্ডকে PM2-এর তলায় একটি একক Node প্রসেস হতে হবে, এবং ভেন্ডর লক-ইনের জন্য সহজ জায়গা ছিল না। MongoDB সেলফ-হোস্টেড থাকল, ফাইল আপলোড Multer-এর মাধ্যমে লোকাল থাকল, একমাত্র আউটবাউন্ড নির্ভরতা ছিল পাসওয়ার্ড রিসেটের জন্য একটি ইমেইলার। প্রয়োজনের তাড়নায় হালকা, কিন্তু সেই একই শর্ত অ্যাপটিকে প্রতিটি অবকাঠামো পরিবর্তনের পরও টিকিয়ে রেখেছে।

দ্বিতীয় সিদ্ধান্ত ছিল স্পেসিমেন-স্পিসিস সম্পর্ককে দুটি রিসোর্স হিসেবে মডেল করা — একটি নয়। একটি স্পিসিস প্রোফাইল হল দীর্ঘস্থায়ী ন্যারেটিভ রেকর্ড; একটি স্বতন্ত্র স্পেসিমেন এমন একটি সারি যা একটি স্পিসিসকে নির্দেশ করে আর কালেকশন মেটাডেটা যোগ করে। এই বিভাজন মানে কিউরেটররা একবার স্পিসিস গল্প আপডেট করলেই সেই স্পিসিসের প্রতিটি স্পেসিমেনে তা প্রতিফলিত হয় — হাজারো স্পেসিমেন রেকর্ড নতুন করে লেখা ছাড়াই। দু'বছর পরে ডেটা মডেল এখনো অটুট, আর ডেটাবেস স্টাফদের কাছ থেকে নতুন এন্ট্রি গ্রহণ করেই চলেছে — যাঁরা মূল মকআপ কখনোই দেখেননি।

এবার আপনার পালা

আপনার অপারেশনের জন্য এরকম তৈরি করতে চান?

আমরা বছরে অল্প কিছু কাস্টম প্রকল্প গ্রহণ করি। এটা আপনার সমস্যার কাছাকাছি মনে হলে জানান।