যখন আমি Akemax-এ ইন্টার্নশিপ করছিলাম, তখন যে বিষয়টি আমার চোখে পড়েছিল তা হলো দৈনন্দিন রিপোর্টিংয়ের কতটা অংশ এখনও কাগজের ওপর নির্ভরশীল। ফ্যাক্টরি ফ্লোরে কাউকে যদি একটি রিপোর্ট জমা দিতে হতো, তাকে নিচে যেতে হতো, একটি কাগজের ফর্ম নিতে হতো, হাতে লিখে পূরণ করতে হতো এবং জমা দিতে হতো। এটা কাজ করতো, কিন্তু ধীর এবং বিঘ্নকারী ছিল। আমি ভাবতাম: ফর্মগুলো সার্ভারে রাখলেই তো হয়?
এই ধারণাটি আমার মাথায় গেঁথে গেল। এই ফর্মগুলো যারা ব্যবহার করেন তারা প্রোগ্রামার নন। তারা সফটওয়্যার ইনস্টল করতে, অ্যাকাউন্ট তৈরি করতে বা নতুন টুল শিখতে চান না। তাদের শুধু একটা ফর্ম পূরণ করে কাজে ফিরে যেতে হবে। তাই আমি যা তৈরি করবো তা হতে হবে অত্যন্ত সহজ - একটি URL খুলুন, একটি ফর্ম বেছে নিন, পূরণ করুন, জমা দিন।
এভাবেই RTR (Real-Time Reporting)-এর জন্ম হয়েছে।
ধাপ ১: RTR আসলে কী করে
অ্যাপটি চালু হওয়ার পর, এটি অ্যাডমিনিস্ট্রেটরের ডেস্কটপে চলে এবং একটি লোকাল সার্ভার তৈরি করে। একই নেটওয়ার্কে থাকা ব্যবহারকারীরা অ্যাডমিনিস্ট্রেটরের URL-এ গিয়ে ফর্ম পেজে প্রবেশ করতে পারেন, যেখানে তারা একটি ফর্ম নির্বাচন করতে, তারিখ ও প্রয়োজনীয় তথ্য লিখতে এবং জমা দিতে পারেন।
অ্যাডমিন অ্যাপ থেকে, অ্যাডমিনিস্ট্রেটর জমা দেওয়া ফর্মগুলো দেখতে এবং প্রয়োজন অনুযায়ী ফর্ম তৈরি বা সংশোধন করতে পারেন।
# The architecture in a nutshell:
┌─────────────────────┐ IPC only ┌──────────────┐
│ Admin Panel (UI) │ ◄──────────────► │ Main Process│
│ Electron Window │ │ (Node.js) │
└─────────────────────┘ └──────┬───────┘
│
┌──────┴───────┐
│ Express HTTP │
│ Port 8080 │
│ LAN only │
└──────┬───────┘
│
┌─────────────────┼─────────────────┐
│ │ │
Phone/Tablet Desktop PC Any Browser
on the LAN on the LAN on the LAN
ধাপ ২: ব্যবহারকারী অ্যাকাউন্ট কেন নেই
ব্যক্তিগত ব্যবহারকারী অ্যাকাউন্ট ব্যবহারের পরিবর্তে, RTR প্রতিটি ফর্ম জমা দেওয়ার জন্য ব্যবহৃত ডিভাইসের MAC অ্যাড্রেস রেকর্ড করে। যেহেতু কোম্পানিগুলোর নেটওয়ার্কে সাধারণত নির্দিষ্ট সংখ্যক ডিভাইস সংযুক্ত থাকে, এটি কর্মচারীদের লগ ইন না করিয়েই জমাগুলোকে ডিভাইসের সাথে সংযুক্ত করার একটি সহজ উপায় প্রদান করে।
আমি এই পদ্ধতি গ্রহণ করার সিদ্ধান্ত নিয়েছি কারণ, ফর্মের চেতনায়, যে কেউ একটি ফর্ম তুলে নিয়ে পূরণ করতে পারা উচিত - অ্যাকাউন্ট তৈরি বা লগ ইন করার প্রয়োজন ছাড়াই।
ধাপ ৩: নেটওয়ার্কের মাধ্যমে নিরাপত্তা
RTR বিশেষভাবে ইন্ট্রানেটে ব্যবহারের জন্য ডিজাইন করা হয়েছে। এটি লোকাল নেটওয়ার্কের বাইরে থেকে সংযোগ গ্রহণ করে না, তাই এর নিরাপত্তা মূলত যে নেটওয়ার্কে এটি চলছে তার নিরাপত্তার ওপর নির্ভরশীল।
অ্যাডমিন প্যানেলটি নিজে একটি নেটিভ Electron উইন্ডো যা একচেটিয়াভাবে ইন্টার-প্রসেস কমিউনিকেশনের মাধ্যমে যোগাযোগ করে - এর জন্য কোনো নেটওয়ার্ক সকেট কখনো খোলা হয় না, যা ফায়ারওয়াল সেটিংস নির্বিশেষে এটিকে LAN থেকে অ্যাক্সেসযোগ্য করে না। ফর্ম সার্ভার শুধুমাত্র LAN-মুখী নেটওয়ার্ক অ্যাডাপ্টারে বাইন্ড হয় এবং হোয়াইটলিস্ট করা IP অ্যাড্রেস বা CIDR রেঞ্জে অ্যাক্সেস সীমাবদ্ধ করে।
ধাপ ৪: প্রধান বৈশিষ্ট্যসমূহ
- ফর্ম বিল্ডার - বিভিন্ন প্রশ্নের ধরন দিয়ে রিপোর্ট ফর্ম তৈরি ও সংশোধন করুন
- সাবমিশন ব্রাউজার - সংগৃহীত প্রতিক্রিয়া দেখুন, ফিল্টার করুন এবং অনুসন্ধান করুন
- CSV এক্সপোর্ট - Excel, Google Sheets বা যেকোনো ডেটা টুলে বিশ্লেষণের জন্য সাবমিশন এক্সপোর্ট করুন
- IP হোয়াইটলিস্টিং - ঠিক কোন ডিভাইসগুলো ফর্ম অ্যাক্সেস ও জমা দিতে পারবে তা নিয়ন্ত্রণ করুন
- ডিভাইস ট্র্যাকিং - MAC অ্যাড্রেস রেকর্ডিং সাবমিশনকে ডিভাইসের সাথে সংযুক্ত করে
- সম্পূর্ণ লোকাল - সমস্ত ডেটা অ্যাডমিনের মেশিনে SQLite-এ থাকে, ক্লাউডের প্রয়োজন নেই
ধাপ ৫: টেক স্ট্যাক
RTR যা দিয়ে তৈরি:
- Electron - অ্যাডমিন প্যানেলের জন্য নেটিভ ডেস্কটপ শেল
- Node.js + Express - ফর্ম বিতরণের জন্য হালকা HTTP সার্ভার
- SQLite - জিরো-কনফিগ লোকাল ডেটাবেস
- NSIS - Windows ইনস্টলার প্যাকেজিং
ধাপ ৬: ডাউনলোড
RTR v0.1.0 ডাউনলোড করুন (Windows x64)
অথবা সোর্স থেকে ক্লোন ও বিল্ড করুন:
git clone https://github.com/petermurrayx/RTR--Real-Time-Reporting.git
cd RTR--Real-Time-Reporting
npm install
npm start # development mode
npm run build # build the installer
দ্রষ্টব্য: ইনস্টলারটি Windows 10/11 (x64)-এর জন্য। প্রথমবার চালু করার সময়, Windows Firewall LAN অ্যাক্সেসের অনুমতি চাইবে - এটি অনুমোদন করুন যাতে অন্যান্য ডিভাইস ফর্ম সার্ভারে পৌঁছাতে পারে।
যদিও এটি কোনো চমকপ্রদ নতুন AI প্রযুক্তি ব্যবহার করছে না, এটি আমাকে মনে করিয়ে দেয় কেন আমি কম্পিউটার সায়েন্সে এসেছিলাম: মানুষের জীবন সহজ করতে, তাদের আরও দক্ষতার সাথে কাজ করতে সাহায্য করতে এবং কাজ সম্পন্ন করতে প্রযুক্তি ব্যবহার করা।
আপনার যদি কিছু অবসর সময় থাকে, এটি দেখুন। এটি MIT-লাইসেন্সপ্রাপ্ত, তাই যে কেউ কোডটি ব্যবহার বা পরিবর্তন করতে পারেন।