F-I-U
ক্যাপ্টেন লগইন

সেটআপ ও ব্যবহার নির্দেশিকা

F-I-U পোর্টালের স্থাপত্য, নিরাপদ ব্যাকএন্ড সেটআপ, Blogger সংযোগ এবং পরীক্ষার বাংলা নির্দেশনা।

প্রকাশের আগে ব্যাকএন্ড সেটআপ প্রয়োজন

লগইনে বিল্ট-ইন Authentication ব্যবহার করা হয়েছে। থিম ও পরীক্ষার তালিকা ব্যক্তিগত built-in key-value store-এ থাকে। ব্যক্তিগত কর্মসূচি ও দলভিত্তিক নিরাপত্তার জন্য নিজস্ব Supabase ব্যাকএন্ডের কোড দেওয়া আছে; প্রকল্প, SQL এবং সার্ভার Secret সেটআপ ছাড়া বাস্তব ডেটা চালু হবে না। এটি সম্পূর্ণ চালু সিস্টেম বলে দাবি করা হচ্ছে না।

বর্তমান প্ল্যানে বিল্ট-ইন relational database নেই; এটি Pro সুবিধা। Database প্যানেল থেকে Pro-তে উন্নীত করে managed database নিতে পারেন, অথবা নিজের Supabase প্রকল্প বিনামূল্যে সংযুক্ত করতে পারেন। এই সংস্করণের সরবরাহকৃত সার্ভার কোড নিজস্ব Supabase ব্যবহার করে; provider বদলাতে আলাদা migration প্রয়োজন।

১. সিস্টেমের স্থাপত্য

ধাপ ১বাংলা React পোর্টাল
ধাপ ২GenMB Authentication
ধাপ ৩fiu সার্ভার ফাংশন
ধাপ ৪সুরক্ষিত Supabase RPC
  • পরিচয় কেবল প্ল্যাটফর্মের ctx.user থেকে নেওয়া হয়। ব্রাউজারের পাঠানো userId, role বা owner কখনো গ্রহণ করা হয় না।
  • সার্ভারের প্রতিটি অনুরোধে ডেটায় সংরক্ষিত ভূমিকা, অনুমোদন এবং দল যাচাই হয়। অ্যাডমিন হিসেবে শুধু প্ল্যাটফর্মের যাচাইকৃত অ্যাপ মালিক গ্রহণ করা হয়।
  • অনুমতি পরিবর্তন ও কর্মসূচি/উত্তর সংরক্ষণ একই SQL transaction-এ হয়। permission row lock পুরোনো অনুমতি দিয়ে চলা অনুরোধ ও বাতিলের মধ্যে ক্রম বজায় রাখে।
  • Supabase টেবিলে RLS চালু; anon/authenticated-এর সব সরাসরি প্রবেশ এবং RPC execution নিষিদ্ধ। Secret service-role key কেবল সার্ভারে থাকবে।
  • ক্যাপ্টেন শুধু অনুমোদিত দলের রিপোর্ট দেখবেন। অন্য ক্যাপ্টেনের খসড়া দেখবেন না; নিজের তৈরি কর্মসূচি পরিবর্তন করবেন। অ্যাডমিন সব দল পর্যবেক্ষণ করতে পারবেন।
  • লগইন/লগআউট, ব্যর্থ লগইন চেষ্টা এবং পরিবর্তনের audit record আছে। লগ ব্যর্থ হলে তা সফল বলা হয় না; ব্যর্থ লগইনের অযাচাইকৃত পরিচয় সংগ্রহ করা হয় না।

২. ফাইল ও সম্পূর্ণ সোর্স

সব কোড প্রকল্পের ফাইলগুলোতে দেওয়া আছে। প্রকল্পের সোর্স এক্সপোর্ট করে নিচের ফাইলগুলো পাবেন।

index.html / package.json / vite.config.ts / tsconfig.json
src/main.tsx / src/App.tsx / src/store.ts / src/types.ts
src/styles/main.css / src/data/demo.ts / src/lib/utils.ts
src/components/ — UI, লগইন, অনুমতি, কর্মসূচি সম্পাদক
src/pages/ — ওভারভিউ, লগইন, নিবন্ধন, ক্যাপ্টেন, সদস্য,
             কর্মসূচি, রিপোর্ট, অ্যাডমিন, প্রোফাইল, নির্দেশিকা, 404
functions/fiu.ts — পরিচয় যাচাই ও Supabase RPC কল
supabase/schema.sql — টেবিল, transaction, অনুমতি ও RLS
README.bn.md — সেটআপ, সীমা ও পরীক্ষা

৩. নির্বাচিত ব্যাকএন্ড সেটআপ

  1. নিজের Supabase অ্যাকাউন্টে প্রকল্প তৈরি করুন। প্রকল্পের reference এবং backend-only service_role key সংগ্রহ করুন। কোনোটিই Blogger বা frontend ফাইলে দেবেন না।
  2. Supabase SQL Editor-এ supabase/schema.sql-এর সম্পূর্ণ কোড চালান। পাঁচটি fiu_ টেবিল, RLS এবং fiu_dispatch RPC তৈরি হয়েছে কিনা পরীক্ষা করুন।
  3. functions/fiu.ts-এর HTTPS URL-এ your-project-ref জায়গায় নিজের প্রকল্প reference দিন। পুরো HTTPS URL সরাসরি ফাইলে রাখুন, যাতে outgoing host অনুমোদিত হয়।
  4. অ্যাপের Secrets-এ SUPABASE_SERVICE_ROLE_KEY নামের secret যোগ করে প্রকল্পের legacy service_role key দিন। এটি JWT-ভিত্তিক backend key; publishable/anon key নয়। নতুন secret-key format ব্যবহারের আগে Authorization header সামঞ্জস্য করুন।
  5. Functions-এ fiu প্রকাশ করুন এবং অ্যাপ Publish করুন। মালিক নিজের GenMB ইমেইল দিয়ে Google বা ইমেইল লিংকে লগইন করবেন। সার্ভার owner/admin পরিচয় যাচাই করবে; কোনো “প্রথম নিবন্ধনকারী অ্যাডমিন” নিয়ম নেই।
  6. অ্যাডমিন পেজে দল তৈরি করুন। সদস্য নিবন্ধন/OTP যাচাই করে একবার সদস্য পোর্টালে প্রবেশ করলে অনুমতি তালিকায় আসবেন। অ্যাডমিন দল ও অনুমোদন নির্ধারণ করবেন।
  7. ক্যাপ্টেন হিসেবে সদস্যকে নিয়োগ করে অনুমোদিত দল নির্বাচন করুন। সদস্যের অ্যাকাউন্ট ও ক্যাপ্টেনের অনুমতি আলাদা বিষয়; staff role পরিবর্তন একা ক্যাপ্টেন সুবিধা দেবে না।
  8. মালিক-নিয়ন্ত্রিত ইউজারনেম অ্যাকাউন্ট চাইলে অ্যাকাউন্ট ব্যবস্থাপনা ব্যবহার করুন। এই সুবিধায় পেইড প্ল্যান প্রয়োজন হতে পারে; ফ্রি প্ল্যানে ইমেইল/Google নিবন্ধন দিয়ে সদস্য যোগ করা যায়। অ্যাডমিনের অনুমোদন ছাড়া ক্যাপ্টেন সুবিধা চালু হয় না।
  9. খসড়া তৈরি করে প্রকাশ করুন। অন্য একটি সদস্য অ্যাকাউন্টে উত্তর দিন; আবার লগইন করে রিপোর্ট মিলিয়ে দেখুন। ব্যাকআপ, Secret rotation এবং নিচের সব পরীক্ষা শেষ করে তবেই বাস্তব ব্যবহারে প্রকাশ করুন।

৪. Blogger-এ সংযুক্ত করার ধাপ

  1. অ্যাপ আলাদাভাবে HTTPS-এ Publish করুন; Blogger শুধু প্রবেশের লিংক দেবে, নিরাপত্তা বা লগইন ডেটা রাখবে না।
  2. Blogger Dashboard → Pages → New Page-এ “ক্যাপ্টেন লগইন” নামে পেজ তৈরি করুন। HTML view খুলে নিচে তৈরি করা কোড বসান।
  3. Layout → Pages gadget-এ পেজ যুক্ত করুন অথবা HTML/JavaScript gadget-এ একই লিংক রাখুন। সদস্যদের জন্য পৃথক member-login লিংক ব্যবহার করুন।
  4. নতুন tab-এ standalone অ্যাপ খোলা প্রস্তাবিত; iframe-এ cookie/popup সীমাবদ্ধতার কারণে লগইন ব্যর্থ হতে পারে। Blogspot HTML-এ service key, অ্যাকাউন্ট বা অনুমতি রাখবেন না।
প্রকাশিত URL দিলে ব্যবহারযোগ্য Blogger কোড এখানে তৈরি হবে।

৫. নিরাপত্তা ও কার্যকারিতা পরীক্ষা

নিজে পরীক্ষা করে টিক দিন। এগুলো স্বয়ংক্রিয় পরীক্ষার ফল নয়। সংরক্ষণের জন্য লগইন করুন; এখন টিকগুলো এই পেজে থাকবে।

০ / ১২ টিক দেওয়া হয়েছে

সাধারণ প্রশ্ন

সাধারণ সদস্য কি ক্যাপ্টেনের লিংক দিয়ে ঢুকতে পারবেন?

লিংক খুলতে পারবেন, কিন্তু সার্ভারে ক্যাপ্টেনের অনুমতি না থাকলে ব্যক্তিগত তথ্য বা কর্মসূচি পরিচালনার সুবিধা পাবেন না।

উত্তর না দিলে কি না হিসেবে গণনা হবে?

না। উত্তর না দেওয়া আলাদা অবস্থা। সম্পন্ন হার শুধু হ্যাঁ ও না উত্তর দেওয়া সদস্যদের ভিত্তিতে গণনা হয়।

এটি কি এখনই বাস্তব কার্যক্রমে ব্যবহার করা যাবে?

নিজের Supabase প্রকল্প, SQL migration এবং সার্ভার Secret সেটআপের পর তালিকার সব পরীক্ষা সফল হলে ব্যবহার করুন। নমুনা তথ্য বাস্তব ডেটা নয় এবং সংরক্ষণ করা হয় না।

⚡Make an app like this, free