ফর্ম বিল্ডার কিভাবে বানাবেন
একটি ফর্ম বিল্ডার মানুষকে নিজের ফর্ম ডিজাইন করতে দেয় — ফিল্ড বেছে নেওয়া, নিয়ম ঠিক করা, একটি লিংক প্রকাশ করা — এবং তারপর জমাগুলো সংগ্রহ করে। ভেতরে এটি তিনটি জিনিস: ডেটা হিসেবে সংরক্ষিত একটি ফর্মের সংজ্ঞা, সেই সংজ্ঞাকে কার্যকর ফর্মে রূপান্তরকারী একটি রেন্ডারার, এবং বিজ্ঞপ্তি ও রপ্তানির সুবিধাসহ একটি জমার স্টোর। বানানোর আগে যাচাই করুন সত্যিই এটি দরকার কি না: শুধু একটি যোগাযোগ ফর্ম বা আবেদন ফর্ম লাগলে বিল্ডার বাদ দিয়ে সেই ফর্মটিই সরাসরি বানান।
আপনার কি আদৌ বিল্ডার দরকার?
| আপনার অবস্থা | যা বানাবেন |
|---|---|
| একটি-দুটি ফর্ম যা খুব কমই বদলায় | ফর্মগুলো নিজেই। দেখুন কিভাবে যোগাযোগ ফর্ম যোগ করবেন। |
| অনেক ফর্ম, তৈরি করেন আপনার দলের প্রযুক্তিগত নন এমন সদস্যরা | একটি অভ্যন্তরীণ ফর্ম বিল্ডার |
| ফর্ম আপনার প্রোডাক্টের অংশ (গ্রাহকরা নিজেরা ফর্ম বানায়) | অ্যাকাউন্ট, সীমা ও এমবেডিং সহ একটি ফর্ম বিল্ডার |
| মূলত জরিপের ফলাফল ও চার্ট দরকার | একটি সার্ভে অ্যাপ |
বিল্ডার একটি ফর্মের চেয়ে বড় প্রজেক্ট, কারণ প্রতিটি ফিল্ড ধরনকে এডিটর, পাবলিক ফর্ম, যাচাই, সংরক্ষণ, বিজ্ঞপ্তি ও রপ্তানি — সবখানে কাজ করতে হয়।
একটি ফর্ম বিল্ডারের যা যা দরকার
ফর্মের সংজ্ঞা
প্রতিটি ফর্মকে ফিল্ডের একটি তালিকা হিসেবে সংরক্ষণ করুন, কাঠামোবদ্ধ ডেটায় (Postgres কলামে JSON ভালো কাজ করে)। একটি ফিল্ড এমন দেখতে হতে পারে:
- id — একটি স্থির আইডি, যা লেবেল বদলালেও বদলায় না
- type — টেক্সট, ইমেইল, সংখ্যা, লম্বা টেক্সট, সিলেক্ট, চেকবক্স, তারিখ, ফাইল
- label ও help text
- আবশ্যক কি না, min / max, অনুমোদিত ফাইলের ধরন
- সিলেক্ট ফিল্ডের জন্য অপশন
- ক্রম, এবং ঐচ্ছিকভাবে একটি শর্ত (“শুধু যদি ফিল্ড X হয় Y, তবেই দেখাও”)
এডিটর এই তালিকা সম্পাদনা করে; পাবলিক ফর্ম সেটি পড়ে। পুরো কৌশলটাই এখানে: প্রতি ফর্মের জন্য নতুন কোড লাগে না।
জমাসমূহ
- জমা — ফর্ম, ফর্মের ভার্সন, জমার সময়, ফিল্ড আইডি অনুযায়ী উত্তর, অবস্থা (নতুন, পড়া হয়েছে, আর্কাইভ)।
- ফাইল — আপলোড করা ফাইল ফাইল স্টোরেজে থাকে, জমার সারিতে শুধু একটি রেফারেন্স থাকে, ডেটাবেস সারির ভেতরে কখনও নয়।
পৃষ্ঠাসমূহ
- ফর্মের তালিকা জমার সংখ্যাসহ।
- এডিটর — ফিল্ড যোগ, ক্রম বদল ও কনফিগার, পাশে লাইভ প্রিভিউ সহ।
- সেটিংস — নিশ্চিতকরণ বার্তা বা রিডাইরেক্ট, বিজ্ঞপ্তি ইমেইল, খোলা ও বন্ধ হওয়ার তারিখ, জমার সীমা।
- পাবলিক ফর্ম নিজস্ব লিংকে, এবং অন্য ওয়েবসাইটে বসানোর উপযোগী সংস্করণ।
- জমার টেবিল সার্চ, অবস্থা, বিস্তারিত দেখা এবং CSV রপ্তানিসহ।
সিদ্ধান্ত ও ট্রেড-অফ
ভার্সনিং। কেউ না কেউ ২০০ জমার পর “Phone” বদলে “Mobile number” করবেই। উত্তর যদি ফিল্ড আইডি অনুযায়ী সংরক্ষিত হয় এবং প্রতিটি জমা ফর্মের ভার্সন রেকর্ড করে, তাহলে পুরোনো জমাগুলো এখনও ঠিকভাবে দেখাবে। না হলে আপনার ডেটা নীরবে এলোমেলো হয়ে যাবে।
যাচাই দুবার চলে। ব্রাউজারে দ্রুত প্রতিক্রিয়ার জন্য ফিল্ড যাচাই করুন, এবং সার্ভারেও আবার, কারণ যে কেউ সরাসরি আপনার এন্ডপয়েন্টে ডেটা পাঠাতে পারে। গুরুত্বপূর্ণ হলো সার্ভারের যাচাই।
ফাইল আপলোড। এতে আসে স্টোরেজ খরচ, আকারের সীমা, ফাইল ধরনের যাচাই এবং গোপনীয়তার প্রশ্ন (সিভি, পরিচয়পত্র, চিকিৎসা ফর্ম)। ধরন ও আকার সীমিত রাখুন, এবং আপলোড করা ফাইল ডিফল্টভাবে ব্যক্তিগত রাখুন, শুধু ফর্মের মালিকরা পড়তে পারবেন। দেখুন আপনার অ্যাপে ফাইল আপলোড কিভাবে যোগ করবেন।
বিজ্ঞপ্তি। “কেউ জমা দিলে আমাকে ইমেইল করো” প্রত্যাশিত। এর জন্য দরকার একটি ইমেইল প্রদানকারী ও API কী; দেখুন আপনার অ্যাপ থেকে ইমেইল পাঠানো।
স্প্যাম। পাবলিক ফর্ম বট খুঁজে পাবেই। হানিপট ফিল্ড ব্যবহার করুন (মানুষের কাছে লুকানো, বট পূরণ করে), প্রতি IP-তে রেট লিমিট, সার্ভারে যাচাই এবং প্রয়োজনে একটি CAPTCHA সেবা।
এমবেডিং। অন্য ওয়েবসাইটে ফর্ম বসানোর সবচেয়ে সহজ ও নিরাপদ উপায় iframe। স্ক্রিপ্ট এমবেড দেখতে বেশি স্বাভাবিক, কিন্তু বানানো ও নিরাপদ রাখা কঠিন।
শর্তযুক্ত যুক্তি। “এই ফিল্ড শুধু যদি…” খুব জনপ্রিয়, তবে এটি পরীক্ষার সংখ্যা বহুগুণ বাড়ায়। মূল বিষয়গুলো পাকাপোক্ত হওয়ার পরে যোগ করুন।
একটি কার্যকর প্রথম প্রম্পট
আমার দলের জন্য একটি ফর্ম বিল্ডার ওয়েব অ্যাপ বানাও। লগইন করা ব্যবহারকারীরা একটি এডিটরে লাইভ প্রিভিউসহ ফর্ম বানাবে। ফিল্ডের ধরন: ছোট টেক্সট, লম্বা টেক্সট, ইমেইল, সংখ্যা, তারিখ, এক-বাছাই সিলেক্ট, চেকবক্স এবং ফাইল আপলোড। প্রতি ফিল্ডের একটি স্থির আইডি, লেবেল, হেল্প টেক্সট, আবশ্যক ফ্ল্যাগ এবং ধরন-নির্দিষ্ট নিয়ম থাকবে (min/max, অপশন, অনুমোদিত ফাইলের ধরন ও ১০ MB আকারের সীমা)। ফর্মের সংজ্ঞা JSON হিসেবে সংরক্ষণ করো, প্রতিটি প্রকাশে বাড়ে এমন একটি ভার্সন নম্বরসহ। প্রতি ফর্মের একটি পাবলিক লিংক ও একটি iframe এমবেড কোড থাকবে। প্রকাশিত ভার্সনের বিপরীতে জমা সার্ভারে যাচাই করো, উত্তর ফিল্ড আইডি ও ফর্মের ভার্সনসহ সংরক্ষণ করো, এবং আপলোড করা ফাইল ব্যক্তিগত ফাইল স্টোরেজে রাখো। একটি লুকানো হানিপট ফিল্ড ও প্রতি IP-তে রেট লিমিট যোগ করো। ফর্মের মালিকরা জমার টেবিল দেখবেন, অবস্থা (নতুন, পড়া হয়েছে, আর্কাইভ), বিস্তারিত ভিউ ও CSV রপ্তানি সহ। সবকিছু একটি ডেটাবেসে রাখো। শর্তযুক্ত যুক্তি ও ইমেইল বিজ্ঞপ্তি পরের জন্য রেখে দাও।
বানানোর ধাপ
- এডিটর ও সংজ্ঞা। প্রতিটি ফিল্ড ধরনসহ একটি ফর্ম বানান এবং এজেন্টের সঙ্গে সংরক্ষিত JSON দেখুন। এটি কি পরিষ্কার ও স্থিতিশীল?
- পাবলিক ফর্ম। ফোনে পূরণ করে দেখুন। যাচাইয়ের বার্তা ও নিশ্চিতকরণ স্ক্রিন পরীক্ষা করুন।
- সার্ভারে যাচাই। এজেন্টকে বলুন পৃষ্ঠা এড়িয়ে সরাসরি সার্ভারে একটি এমন জমা পাঠাতে যা নিয়ম ভাঙে। সেটি প্রত্যাখ্যাত হওয়া উচিত।
- ভার্সনিং। কয়েকটি জমার পর ফিল্ডের নাম ও ক্রম বদলান। পুরোনো জমায় এখনও সঠিক উত্তর দেখানো উচিত।
- আপলোড। খুব বড় এবং ভুল ধরনের একটি ফাইল চেষ্টা করুন। নিশ্চিত করুন যে অপরিচিত কেউ আপলোড করা ফাইলের লিংক অনুমান করে খুলতে পারে না।
- জমার টেবিল ও রপ্তানি। উত্তরে কমা, লাইন ব্রেক ও অ্যাকসেন্ট-যুক্ত অক্ষর থাকলে CSV রপ্তানি ঠিক আছে কি না দেখুন।
- বিজ্ঞপ্তি, এমবেড, যুক্তি। একবারে একটি করে যোগ করুন।
সাধারণ ভুল
- লেবেল দিয়ে উত্তর সংরক্ষণ। লেবেল বদলায়। স্থির ফিল্ড আইডি ব্যবহার করুন।
- শুধু ব্রাউজারের যাচাই। এটি সুবিধা, সুরক্ষা নয়।
- পাবলিক আপলোড করা ফাইল। ফর্মে প্রায়ই এমন নথি জমা হয় যা মানুষ প্রকাশ্যে দেখাতে চায় না।
- স্প্যাম সুরক্ষা না থাকা। একটি পাবলিক ফর্ম কয়েক দিনের মধ্যেই আবর্জনায় ভরে যেতে পারে।
- একটি ফর্মের জন্য বিল্ডার বানানো। ফর্মটিই বানান।
- পাবলিক প্রোডাক্টে সীমাহীন জমা। গ্রাহকরা ফর্ম বানালে প্রতি প্ল্যানে সীমা রাখুন, নইলে একটি জনপ্রিয় ফর্ম আপনার হোস্টিং বিল বাড়িয়ে দিতে পারে।
কখন তৈরি প্রোডাক্টই ভালো পছন্দ
হোস্টেড ফর্ম টুল চমৎকার এবং বেশিরভাগ প্রয়োজনে সস্তা। এমবেডিং, স্প্যাম, পেমেন্ট, ইন্টিগ্রেশন ও অ্যাক্সেসিবিলিটি এগুলো ইতিমধ্যে কয়েক ডজন ফিল্ড ধরনে সমাধান করে ফেলেছে। যদি আপনার দলের শুধু ফর্ম লাগে, তাহলে একটি ব্যবহার করুন — দেখুন Typeform-এর বিকল্প এবং Google Forms-এর বিকল্প।
নিজের বিল্ড করুন যখন জমাগুলোকে নিজের ডেটার পাশে রাখতে হয় (আপনি চালান এমন CRM বা ক্লায়েন্ট পোর্টালে খাওয়ানোর জন্য), জমার পরে এমন ওয়ার্কফ্লো দরকার যা টুলগুলো করতে পারে না, ডেটার অবস্থান বা মালিকানা একটি শর্ত, অথবা ফর্ম আপনার বিক্রি করা প্রোডাক্টের একটি ফিচার।
Mythex দিয়ে বানানো
Mythex-এ আপনি চ্যাটে বিল্ডারের বর্ণনা দেন, এবং এডিটর ও পাবলিক ফর্ম পাশাপাশি লাইভ প্রিভিউতে পরীক্ষা করেন। ফর্মের সংজ্ঞা ও জমার জন্য Mythex একটি ডেটাবেস যোগ করে, এবং অ্যাপে আপলোড লাগলে স্বয়ংক্রিয়ভাবে ফাইল স্টোরেজ চালু হয় (ফ্রি প্ল্যানে ১ GB পর্যন্ত)। বিজ্ঞপ্তি ইমেইল আপনার নিজের কী দিয়ে সংযুক্ত একটি প্রদানকারীর মাধ্যমে যায়। অ্যাপটি একটি mythex.ai লিংকে প্রকাশ করুন, অথবা Pro প্ল্যানে নিজের ডোমেইনে — পাবলিক ফর্মের লিংক সেখান থেকেই কাজ করবে।
প্রশ্নোত্তর
একটি ফর্ম বিল্ডার ফর্ম কিভাবে সংরক্ষণ করে?
সাধারণত ফর্মের একটি সংজ্ঞা হিসেবে: ফিল্ডের একটি তালিকা, যার প্রতিটির থাকে ধরন, লেবেল, যাচাইয়ের নিয়ম ও ক্রম, যা JSON-এর মতো গঠিত ডেটায় সংরক্ষিত হয়। একই সংজ্ঞা এডিটর এবং পাবলিক ফর্ম দুটোকেই চালায়, তাই নতুন ফিল্ড যোগ করতে নতুন কোড লাগে না।
ফর্ম জমার ডেটা কিভাবে সংরক্ষণ করা উচিত?
প্রতিটি জমার সঙ্গে সেই ফর্মের যে ভার্সনে জমা হয়েছে তার রেফারেন্স রাখুন, এবং উত্তরগুলো ফিল্ড আইডি অনুযায়ী সংরক্ষণ করুন। তাহলে পরে কোনো ফিল্ডের নাম বা ক্রম বদলালেও পুরোনো জমাগুলো ভাঙবে না।
পাবলিক ফর্মে স্প্যাম কিভাবে ঠেকাব?
একটি লুকানো হানিপট ফিল্ড, প্রতি IP ঠিকানায় রেট লিমিট, সার্ভারে যাচাই, এবং স্প্যাম চলতে থাকলে একটি CAPTCHA সেবা একসঙ্গে ব্যবহার করুন। শুধু ব্রাউজারে চলা যাচাইয়ের ওপর কখনও নির্ভর করবেন না।
পূর্ণাঙ্গ ফর্ম বিল্ডার লাগবে নাকি শুধু একটি ফর্ম?
যদি একটি-দুটি নির্দিষ্ট ফর্ম লাগে, সেই ফর্মগুলো সরাসরি বানানোই অনেক সহজ। ফর্ম বিল্ডার তখনই কাজের, যখন প্রযুক্তিগত নন এমন মানুষদের অনেক ফর্ম তৈরি ও বদলাতে হয়, কোনো ডেভেলপারকে না জিজ্ঞেস করেই।