পর্দার আড়ালে
আপনার এক ট্যাপ থেকে শেষ ফলাফল পর্যন্ত
আপনি একটা সাধারণ পর্দা দেখেন। তার পেছনে কাজ করে একটা গোটা সফটওয়্যার ইকোসিস্টেম — আপনার ডিভাইস আর ইন্টারনেট থেকে শুরু করে সার্ভার, অ্যাপ্লিকেশন কোড, ডাটাবেস, আর সবগুলোকে জোড়া দেওয়া ইঞ্জিনিয়ারিং সিদ্ধান্ত পর্যন্ত।
যাত্রার ধাপ: আপনি → ডিভাইস → ইন্টারনেট → সার্ভার → অ্যাপ্লিকেশন → ডাটাবেস → ফলাফল
01 স্তর
আপনি একটা কাজ করেন। সেই এক কাজের পেছনে দশটা আলাদা স্তর একে একে কাজ করে — প্রতিটার নিজের দায়িত্ব, নিজের নিয়ম।
02 ডিভাইস
ফোন বা ব্রাউজার শুধু জানালা নয়। পর্দা আঁকা, তথ্য মনে রাখা, সার্ভারের সাথে কথা বলা — এসবের একটা বড় অংশ আপনার হাতের যন্ত্রেই ঘটে।
ব্রাউজার নিজেই একটা ছোট সফটওয়্যার প্ল্যাটফর্ম — সে পাতা আঁকে, তথ্য মনে রাখে, আর সার্ভারের সাথে কথা বলে।
পাতার কাঠামো — কোথায় শিরোনাম, কোথায় তালিকা, কোথায় বোতাম।
চেহারা — রং, ফাঁক, মাপ, আর ছোট পর্দায় কী করে সাজবে।
আচরণ — চাপ দিলে কী হবে, পাতা না বদলে কীভাবে নতুন তথ্য আসবে।
আপনি লগইন আছেন কি না, সেটা মনে রাখার উপায়।
ব্রাউজারের নিজের ছোট জমা-ঘর — পছন্দ বা খসড়া রাখা যায়।
সব মিলিয়ে ব্রাউজার শেষে পর্দায় ছবিটা আঁকে।
মোবাইল অ্যাপে পর্দাটা ফোনেই তৈরি হয়। সার্ভার থেকে আসে শুধু তথ্য — সাজানোর কাজটা অ্যাপের।
পর্দা, বোতাম, তালিকা — সব ফোনের ভেতরেই আঁকা হয়।
অ্যাপ সার্ভারকে তথ্য চায়, সার্ভার JSON-এ উত্তর দেয়।
প্রতিটা অনুরোধ এনক্রিপ্ট হয়ে যায়।
লগইনের পর একটা টোকেন ফোনে থাকে, প্রতিবার সেটাই পরিচয়।
কিছু তথ্য ফোনে জমা থাকে, তাই নেট দুর্বল হলেও পর্দা খালি থাকে না।
উত্তর এলে অ্যাপ শুধু বদলে যাওয়া অংশটুকু নতুন করে আঁকে।
03 নেটওয়ার্ক
আপনি একটা নাম লেখেন। কম্পিউটার নাম চেনে না — সে চেনে সংখ্যার ঠিকানা। মাঝখানে একটা বিশাল ফোনবুক কাজ করে, যার নাম DNS।
04 নিরাপত্তা
আপনার অনুরোধ ফোন থেকে সার্ভারে যাওয়ার পথে অনেকগুলো যন্ত্র পেরোয়। HTTPS নিশ্চিত করে, পথের কেউ ভেতরের লেখা পড়তে না পারে।
অনুরোধটা খোলা চিঠির মতো — পথে যে যন্ত্রই থাকুক, সে পড়তে পারে। সদস্যের নাম, টাকার অঙ্ক, পাসওয়ার্ড — সবই।
একই অনুরোধ সিল করা খামে। পথের কেউ কেবল দেখে যে কিছু একটা যাচ্ছে — ভেতরে কী আছে তা নয়।
সমিতি কিপার লাইটের ওয়েবসাইট ও মোবাইল অ্যাপ — দুটোই HTTPS-এ চলে যাচাই করা (কোডবেস বা লাইভ সার্ভার থেকে নিশ্চিত, সাইট ও API দুটোতেই)
05 ধারণা
ছবি, CSS, JavaScript — এগুলো সবার জন্য একই। তাই এগুলোকে ব্যবহারকারীর কাছাকাছি জমা রেখে দেওয়া যায়, প্রতিবার মূল সার্ভার পর্যন্ত না গিয়ে।
যে ফাইলগুলো ব্যবহারকারীভেদে বদলায় না — ছবি, ফন্ট, স্টাইল।
বিভিন্ন দেশে ছড়ানো ছোট সার্ভার, যেগুলো কপি ধরে রাখে।
একবার এনে জমা রাখা, পরেরবার সেখান থেকেই দেওয়া।
ধারণা (সাধারণ ধারণা — আমাদের স্ট্যাকের দাবি নয়) এটা সাধারণ ধারণা হিসেবে ব্যাখ্যা করা হলো। সমিতি কিপার লাইটের লাইভ রেসপন্সে কোনো CDN বা edge সার্ভারের চিহ্ন পাওয়া যায়নি, তাই "আমরা এটা ব্যবহার করি" বলা হয়নি।
06 সার্ভার
পার্থক্য শুধু এটুকু — এটা কখনো বন্ধ হয় না, ইন্টারনেটে সবসময় হাজির থাকে, আর একসাথে বহু মানুষের অনুরোধ সামলায়।
সব কিছু যার উপর চলে — সাধারণত Linux।
বাইরের অনুরোধ প্রথমে এখানেই এসে পৌঁছায়।
যে ভাষায় অ্যাপ্লিকেশনটা লেখা ও চলে।
PHP-র উপরে বসা কাঠামো — রুট, নিরাপত্তা, ডাটাবেস স্তর।
সব তথ্য যেখানে সাজিয়ে রাখা।
ফাইল — ছবি, তৈরি হওয়া PDF, ব্যাকআপ।
ফায়ারওয়াল, সার্টিফিকেট, অনুমতির নিয়ম।
অনুরোধ প্রথমে যেখানে পৌঁছায়
ওয়েব সার্ভার নিজে সিদ্ধান্ত নেয় না — সে দারোয়ান। কোন অনুরোধ কোথায় যাবে তা ঠিক করে, ছবি-ফাইলের মতো সহজ জিনিস নিজেই দিয়ে দেয়, আর বাকিটা অ্যাপ্লিকেশনের হাতে তুলে দেয়। এই প্রকল্পের লাইভ সার্ভারে সেটা LiteSpeed যাচাই করা (কোডবেস বা লাইভ সার্ভার থেকে নিশ্চিত, লাইভ রেসপন্স হেডার)
07 অ্যাপ্লিকেশন
একটা স্তরে চাপ দিন — সেখানে ঠিক কী হয় তা দেখুন। প্রতিটা স্তরের কাজ আলাদা, আর একটা স্তর আটকে দিলে পরেরগুলো আর চলে না।
Route
অনুরোধের ঠিকানা দেখে Laravel বেছে নেয় কোন কন্ট্রোলারের কোন কাজটা চলবে। সমিতি কিপার লাইটে ওয়েব পাতার রুট আর অ্যাপের API রুট আলাদা — অ্যাপেরগুলো /api/v1-এর নিচে।
08 রানটাইম
Laravel বলে দেয় জিনিসগুলো কোথায় বসবে। কিন্তু সমিতির কিস্তি কীভাবে গোনা হবে, জরিমানা কখন বসবে — সেটা Laravel জানে না। সেটা লিখতে হয়।
09 তথ্য
দেখতে সারি-কলামের মতো হলেও কাজটা আলাদা — একসাথে বহু মানুষ লিখলেও গুলিয়ে যায় না, অসম্পূর্ণ লেখা বসতে দেয় না, আর লাখো সারির মধ্যে একটা খুঁজে আনে চোখের পলকে।
উপরের টেবিলগুলো ধারণা বোঝানোর উদাহরণ — আসল ডাটাবেসের গঠন, ঘরের নাম বা কোনো তথ্য এখানে দেখানো হয়নি।
সদস্য কোন সমিতির, লেনদেন কোন সদস্যের — টেবিলগুলো একে অপরকে চেনে। তাই এক জায়গায় নাম বদলালে সব রিপোর্টে বদলে যায়।
বইয়ের নির্ঘণ্টের মতো। লাখো সারির মধ্যে একজন সদস্য খুঁজতে পুরো বই পড়তে হয় না।
একটা জমা মানে একাধিক লেখা। মাঝপথে বিদ্যুৎ গেলে অর্ধেক বসে থাকবে না — হয় পুরোটা, নয় কিছুই না।
ভুল তথ্য ঢোকার আগেই আটকে দেওয়ার নিয়ম — যেমন যে সদস্য নেই, তার নামে লেনদেন বসতে পারে না।
তথ্য হারানোর একটাই উত্তর — আগে থেকে কপি রাখা, আর সেটা ফিরিয়ে আনা যায় কি না তা পরখ করা।
10 মূল
এটাই সেই স্তর যেটা একটা সাধারণ ফর্মকে সমিতির সফটওয়্যার বানায়। কোনো ফ্রেমওয়ার্ক বা প্যাকেজ এটা দিয়ে দেয় না।
একটা উদাহরণ: সদস্য ৫০০ টাকা জমা দিলেন। অঙ্কটা শুধু কোথাও লিখে রাখলেই হয় না — দেখতে হয় কিস্তি কত ছিল, কোনো কিস্তি বাদ পড়েছে কি না, জরিমানা বসবে কি না, টাকাটা কোন হিসাবে ঢুকল, খাতায় কোন দুটো ঘরে বসবে, আর যিনি এন্ট্রি করছেন তাঁর এই কাজের অনুমতি আছে কি না। এই প্রতিটা সিদ্ধান্তই লেখা কোড।
11 ইঞ্জিনিয়ারিং
Laravel ইনস্টল করলে একটা খালি কাঠামো পাওয়া যায় — সমিতির সফটওয়্যার নয়। মাঝের দূরত্বটাই ইঞ্জিনিয়ারিং।
12 ফ্রন্টএন্ড
সার্ভারের উত্তর নিজে থেকে সুন্দর হয় না। সেটাকে কাঠামো, চেহারা আর আচরণ দিতে হয়।
কোথায় শিরোনাম, কোথায় তালিকা, কোথায় বোতাম। এটাই ভিত।
রং, ফাঁক, মাপ, আর ছোট পর্দায় কী করে সাজবে।
চাপ দিলে কী হবে, ট্যাব বদলালে কী দেখাবে, তথ্য এলে কী নড়বে।
যাচাই করা (কোডবেস বা লাইভ সার্ভার থেকে নিশ্চিত) এই ওয়েবসাইটের পাতাগুলোর CSS ও JavaScript হাতে লেখা — কোনো ভারী UI ফ্রেমওয়ার্ক বা অ্যানিমেশন লাইব্রেরি টানা হয়নি। আপনি এখন যে পাতাটা পড়ছেন, তার পুরো আচরণ কয়েক কিলোবাইটের নিজস্ব কোড।
13 সিমুলেশন
বোতামে চাপ দিন — একটা অনুরোধ শুরু থেকে শেষ পর্যন্ত কোন কোন স্তর পেরোয় তা ধাপে ধাপে দেখুন। বাস্তবে এই পুরোটা ঘটে এক সেকেন্ডেরও কম সময়ে।
14 মোবাইল
মোবাইল অ্যাপ পুরো পাতা চায় না — সে চায় শুধু তথ্য। সার্ভার JSON-এ উত্তর দেয়, আর পর্দাটা অ্যাপ নিজেই আঁকে।
সমিতি কিপার লাইটের অ্যাপ Flutter-এ তৈরি
যাচাই করা
(কোডবেস বা লাইভ সার্ভার থেকে নিশ্চিত, app/ ডিরেক্টরি)
আর সার্ভারের সাথে কথা বলে /api/v1 দিয়ে,
টোকেনভিত্তিক লগইনে
যাচাই করা
(কোডবেস বা লাইভ সার্ভার থেকে নিশ্চিত, Laravel Sanctum)
15 তুলনা
দুটো আলাদা মুখ, কিন্তু নিয়ম, হিসাব আর তথ্য একটাই জায়গায়। তাই অ্যাপে যা দেখবেন, ওয়েবেও ঠিক তাই।
| বিষয় | ওয়েব | মোবাইল অ্যাপ |
|---|---|---|
| ইন্টারফেস | ব্রাউজার | ইনস্টল করা অ্যাপ |
| ঢোকার পথ | ঠিকানা লিখে | আইকনে চাপ দিয়ে |
| যোগাযোগ | HTTPS | HTTPS + JSON API |
| পরিচয় | সেশন | টোকেন (Sanctum) |
| পর্দা তৈরি | সার্ভার HTML পাঠায় | অ্যাপ নিজে আঁকে |
| ব্যাকএন্ড | একই Laravel | একই Laravel |
| ডাটাবেস | সার্ভারে | সার্ভারে (ফোনে শুধু ক্যাশ) |
| নেট ছাড়া | কাজ করে না | জমা রাখা তথ্য দেখা যায় |
16 নিরাপত্তা
এটা কোনো একটা বোতাম বা সেটিংস নয় — প্রতিটা স্তরে আলাদা করে ভাবতে হয়। একটা স্তর ফাঁকা থাকলে বাকিগুলো তা ঢাকতে পারে না।
পথে কেউ পড়তে পারে না।
আপনি কে — টোকেন বা সেশন দিয়ে যাচাই।
আপনি কী করতে পারেন — সমিতিভিত্তিক অনুমতির নিয়ম।
ভেতরে ঢোকার আগেই তথ্য যাচাই।
ফর্ম টোকেন আর হারের সীমা — একই কাজ বারবার করে চাপ দেওয়া ঠেকাতে।
প্রশ্ন আলাদা, তথ্য আলাদা — তাই ইনপুট দিয়ে ডাটাবেস চালানো যায় না।
টাকার এন্ট্রি মুছে যায় না — কারণসহ বাতিল হয় আর খাতায় উল্টো এন্ট্রি বসে।
ফায়ারওয়াল, আপডেট, সীমিত প্রবেশাধিকার।
নিয়মিত কপি — আর সেটা সত্যিই ফেরে কি না তা পরখ করা।
17 বাস্তবতা
সফটওয়্যারে ভুল হয় — সব সফটওয়্যারেই হয়। পার্থক্য হলো, ভুলটা ধরা পড়ে কি না, আর ধরা পড়লে কত দ্রুত ঠিক হয়।
কোড লেখা শেষ হলেই কাজ শেষ হয় না। ব্যবহারকারী বাড়ে, ফোন বদলায়, নিয়ম বদলায়, নতুন প্রয়োজন আসে। তাই রক্ষণাবেক্ষণ আলাদা কিছু নয় — ওটাই ইঞ্জিনিয়ারিংয়ের সবচেয়ে দীর্ঘ অংশ।
18 প্রক্রিয়া
একটা পর্দা তৈরি হওয়ার আগে অনেকগুলো ধাপ পেরোতে হয়। ব্যবহারকারী শুধু শেষ ধাপটা দেখেন।
19 সমন্বয়
আলাদা আলাদা প্রযুক্তি, আলাদা আলাদা দায়িত্ব। সবগুলো একসাথে ঠিকঠাক কাজ করলে তবেই একটা পর্দা তৈরি হয়।
20 এই প্রোডাক্ট
এতক্ষণ যা সাধারণভাবে বলা হলো, এবার সেটা এই প্রোডাক্টের নিজের ছবিতে — কোন অংশ কোথায় বসে, আর একটা জমা নেওয়ার অনুরোধ কোন পথে যায়।
21 স্ট্যাক
যেকোনো একটাতে চাপ দিন — সেটা কী করে তা লেখা আছে। ব্যাজ দেখে বুঝবেন কোনটা সত্যিই এই প্রকল্পে যাচাই করা, আর কোনটা কেবল ধারণা।
ডোমেইন নামকে সার্ভারের ঠিকানায় বদলে দেয়।
ইন্টারনেটে সার্ভারের আসল ঠিকানা।
সাইট ও অ্যাপ — দুটোই এনক্রিপ্ট করা সংযোগে চলে।
লাইভ সার্ভারের ওয়েব সার্ভার — এটাই প্রথমে অনুরোধ গ্রহণ করে।
সার্ভারের অপারেটিং সিস্টেম — সাধারণত Linux পরিবারের।
ধারণা হিসেবে ব্যাখ্যা করা হয়েছে। এই সাইটের লাইভ রেসপন্সে কোনো CDN-এর চিহ্ন পাওয়া যায়নি, তাই আমরা এটা ব্যবহার করি বলা হয়নি।
সার্ভারের কোড যে ভাষায় চলে।
রুট, middleware, ORM, migration, queue — কাঠামোটা এর।
মোবাইল অ্যাপ এই API দিয়েই সব কাজ করে।
অ্যাপের টোকেনভিত্তিক লগইন।
রিমাইন্ডার, মুনাফা হিসাব, দৈনিক সারাংশ — নির্দিষ্ট সময়ে নিজে চলে।
রিপোর্ট ও ভাউচারের PDF সার্ভারেই তৈরি হয়।
সমিতির সব তথ্য এখানেই।
ডাটাবেসের গঠন কোডে লেখা, তাই বদল হিসাব রেখে হয়।
টাকার এন্ট্রি হয় পুরোটা বসে, নয় কিছুই না।
প্রতিটা লেনদেন ডেবিট-ক্রেডিট জোড়ায় — খাতা মেলানোর ভিত্তি।
পাতার কাঠামো।
এই সাইটের স্টাইল হাতে লেখা — কোনো ভারী UI ফ্রেমওয়ার্ক নেই।
কোনো লাইব্রেরি ছাড়াই — অ্যানিমেশন ও ইন্টারঅ্যাকশন নিজের কোডে।
Laravel-এর টেমপ্লেট — এই পাতাটাও Blade-এ লেখা।
প্রকল্পে ইনস্টল করা আছে, তবে এই পাবলিক সাইটের পাতাগুলো এটা ব্যবহার করে না।
সমিতি কিপার লাইট অ্যাপ এতেই তৈরি।
অ্যাপ ও সার্ভারের কথা বলার ভাষা।
ফোনে জমা তথ্য — নেট দুর্বল হলেও পর্দা খালি থাকে না।
সার্ভার থেকে ফোনে খবর পাঠানো।
কোডের প্রতিটা বদল ইতিহাসে থাকে।
স্বয়ংক্রিয় টেস্ট — বদলালে পুরনোটা ভাঙল কি না ধরে।
কী ঘটেছিল তার হিসাব — সমস্যা খোঁজার প্রথম জায়গা।
কোড থেকে লাইভ সার্ভার পর্যন্ত পৌঁছানোর ধাপ।
নিয়মিত কপি — যেকোনো সিস্টেমের শেষ ভরসা।
ডাবল-এন্ট্রি খাতা — প্রতিটা জমা, ঋণ, মুনাফা নিজে থেকেই খাতায় বসে।
DPS, FDR, লোন, শেয়ার, প্রকল্প — প্রতিটার নিজস্ব হিসাব ও নিয়ম।
মালিক, ম্যানেজার, কালেক্টর — কে কী দেখবে ও করতে পারবে।
মুদ্রা, ফোন নম্বর, সময় অঞ্চল — দেশভেদে কনফিগ থেকে আসে।
সব রিপোর্ট সার্ভারে তৈরি হয়ে PDF হয়ে বেরোয়।
মাঠে নেট না থাকলেও কাজ থামে না।
একটা মাত্র চাপ নেটওয়ার্ক, নিরাপত্তার স্তর, সার্ভার, ফ্রেমওয়ার্ক, অ্যাপ্লিকেশনের নিয়ম আর ডাটাবেস পেরিয়ে আবার ফিরে আসে — আপনি যে ফলাফলটা দেখেন, সেটা হয়ে।
এটাই সফটওয়্যার ইঞ্জিনিয়ারিং।
আর এভাবেই সমিতি কিপার লাইট কাজ করে।
সমিতি কিপার লাইট দেখুন