ধরন: Pre-Class Warm-up
সময়: 60-90 মিনিট self-study
উদ্দেশ্য: Next class শুরু করার আগে frontend থেকে backend-এ smooth transition করা
এই warm-up শেষে আপনি:
- Browser আর server-এর role আলাদা করে বুঝবেন — Client vs Server architecture
- HTTP request/response flow explain করতে পারবেন — কীভাবে data আদান-প্রদান হয়
- Internet basic concepts জানবেন — Network, Router, ISP, IP addresses
- TCP, UDP, এবং HTTP বুঝবেন — Different protocols আর তাদের ব্যবহার
- Terminal commands use করতে পারবেন — Windows এবং Linux basic commands
- NAT এবং Server basics বুঝবেন — Real-world network concepts
- JavaScript basics জানেন (আমরা code example দেব)
- Browser devtools দেখেছেন
- Internet ব্যবহার করতে পারেন!
এই primer তাদের জন্য যারা:
- JavaScript জানেন কিন্তু backend এখনো নতুন
- frontend framework যেমন React/Vue/Next.js নিয়ে কাজ করেছেন
- API use করেছেন, কিন্তু API build করেননি
GET,POSTশব্দগুলো শুনেছেন, কিন্তু গভীরভাবে বুঝতে চানlocalhost:3000দেখলে ভয় পান না, কিন্তু পুরো ব্যাপারটা আরো clear করতে চান
- Client: Browser, mobile app, frontend app যা user-এর device-এ চলে
- Server: Logic chালায় এবং data serve করে, দূরবর্তী computer-এ থাকে
- Protocol যা web-এ communication-এর নিয়ম define করে
- Request: Client server-এ কিছু চায়
- Response: Server উত্তর পাঠায়
- Internet-এ প্রতিটি device-এর একটা unique address (যেমন
192.168.1.1বা203.76.221.45) localhost= নিজের machine (127.0.0.1)
- একই machine-এ multiple services থাকতে পারে
- Port বলে দেয় কোন service-এ যেতে হবে (যেমন
3000,5432)
Frontend-এ আপনি মূলত client side-এ ছিলেন। Browser user-এর device-এ চলে, UI render করে, button click ধরে, form submit করে।
Backend-এর server side কাজ হলো request receive করা, logic চালানো, database-এর সাথে কথা বলা, তারপর response পাঠানো।
Analogy: Client হলো restaurant-এর customer, server হলো kitchen। Customer menu দেখে order দেয়, kitchen decide করে কীভাবে রান্না হবে।
Study:
fetch('/api/users') লিখে আপনি যেটা করেন, সেটা আসলে একটা HTTP request পাঠানো।
HTTP হলো browser আর server-এর কথাবলার নিয়ম। কে কী চাইছে, কোন format-এ চাইছে, response কেমন হবে - এসবের language।
Study:
Request মানে client-এর প্রশ্ন।
Response মানে server-এর উত্তর।
উদাহরণ:
fetch("/api/users");এখানে browser বলছে: "ভাই, users দাও।"
Response যদি 200 OK হয়, মানে server বলছে: "নাও, data দিলাম।"
404 হলে: "এই জিনিস এখানে নাই।"
Study:
সব request এক কাজের জন্য না।
GET= data চাইPOST= নতুন data বানাওPUT= পুরো data replace করোPATCH= কিছু অংশ update করোDELETE= data মুছে ফেলো
Frontend-এ আপনি অনেক সময় শুধু GET/POST বেশি দেখেছেন। Backend-এ method choice অনেক important।
Study:
Server answer-এর সাথে 3-digit number দেয়। এইটাই status code।
200= সব ঠিক201= নতুন কিছু তৈরি হয়েছে400= request-এ সমস্যা401= login দরকার403= login আছে, permission নাই404= পাওয়া যায়নি500= server side bug
Study:
এই URL-টা দেখুন:
http://localhost:3000/users?active=trueএখানে:
http= protocollocalhost= host3000= port/users= pathactive=true= query parameter
Frontend-এ routing করেছেন, কিন্তু backend-এ URL মানে incoming request-এর address.
Study:
মানুষ domain name মনে রাখে, machine IP address বোঝে।
google.com টাইপ করলে browser magic করে না; DNS বলে দেয় কোন server-এ যেতে হবে।
Analogy: আপনার বন্ধুর নাম "রফিক", কিন্তু delivery rider-এর দরকার actual বাসার ঠিকানা।
Study:
Backend আর frontend data আদান-প্রদানের সবচেয়ে common format হলো JSON।
উদাহরণ:
{
"id": 1,
"name": "Jeebon",
"role": "student"
}এটা basically data পাঠানোর clean, readable format।
যদি JavaScript object family-এর formal dress code থাকত, JSON সেই dress code.
Study:
REST API-তে সাধারণত resource-based URL ব্যবহার করা হয়।
উদাহরণ:
GET /users= সব userGET /users/42= user 42POST /users= নতুন user
মানে URL দিয়ে resource identify করা হয়, method দিয়ে action বোঝানো হয়।
Frontend-এ API consume করতে গিয়ে এগুলো use করেছেন। Backend-এ এখন এগুলো design করবেন।
Study:
Node.js হলো browser-এর বাইরে JavaScript run করার runtime।
Browser-এ JavaScript মূলত UI আর browser APIs নিয়ে কাজ করে। Node.js-এ JavaScript file system, network, server process ইত্যাদির সাথে কাজ করতে পারে।
এক কথায়: JavaScript-কে browser hostel থেকে বের করে real world-এ চাকরি দেওয়ার নাম Node.js.
Study:
এগুলো package manager।
আপনি যখন npm install express দেন, তখন project-এ dependency যোগ করেন।
Frontend-এ যেমন React app-এ package install করেছেন, backend-এও একই idea - শুধু package list অন্যরকম হবে।
npm হলো পরিচিত পাড়া-প্রতিবেশী, pnpm হলো একটু organized cousin.
Study:
Backend-এ terminal-এর সাথে বন্ধুত্ব করতেই হবে।
কমপক্ষে এগুলো comfortable হওয়া উচিত:
pwd
ls
cd dirname
node -v
npm -v
pnpm -vআপনি যদি terminal-কে এড়িয়ে চলেন, backend আপনাকে politely ignore করবে।
Study:
localhost মানে আপনার নিজের machine।
3000, 5000, 8080 এগুলো port - ভাবতে পারেন building-এর flat number-এর মতো। একই machine-এ অনেক service থাকতে পারে, port বলে দেয় কোন দরজায় knock করতে হবে।
http://localhost:3000 মানে: "আমার নিজের computer-এর 3000 নম্বর service-এর সাথে কথা বলো।"
Study:
সব configuration code-এর ভেতরে লিখে রাখা ভালো idea না।
যেমন:
- database URL
- JWT secret
- port number
- API key
এসব .env-এ রাখা হয়, যাতে code আর config আলাদা থাকে।
আর হ্যাঁ, secret জিনিস GitHub-এ push করলে সেটা learning না, public announcement হয়ে যায়।
Study:
Next class-এ request shape, response shape - এগুলো বুঝতে TypeScript basics দরকার।
বিশেষ করে:
- type vs interface
- function type
- object shape
- optional property
- strict mode
TypeScript backend-এ annoying friend না; future-you-এর unpaid bodyguard.
Study:
Frontend থাকলে browser devtools use করেন। Backend-এ request test করার জন্য Postman, Bruno, Thunder Client খুব useful।
এগুলো দিয়ে browser UI ছাড়া সরাসরি API hit করা যায়।
মানে kitchen test করতে customer বসিয়ে full restaurant খোলার দরকার নেই।
Study:
Backend শিখতে গিয়ে code change করবেন, branch করবেন, commit করবেন, pull request দেখবেন।
At minimum এগুলো জানা ভালো:
git status
git add .
git commit -m "message"
git pullGit না জানলে coding যায়, কিন্তু teamwork আটকে যায়।
Study:
Internet হলো বিশ্বব্যাপী interconnected computers-এর network।
মূল concepts:
- Network: Connected computers যারা data share করে
- Router: Data packets সঠিক destination-এ পাঠায়
- ISP (Internet Service Provider): আপনার internet connection provide করে
Simple analogy: Postal system-এর মতো — router হলো post office, packets হলো letters।
Example: আপনি google.com visit করলে:
- Request আপনার router থেকে ISP-তে যায়
- ISP সেটা Google-এর server-এ forward করে
- Google response পাঠায় একই path দিয়ে back
Study:
এরা internet-এ data পাঠানোর protocols (নিয়মকানুন)।
TCP (Transmission Control Protocol):
- Reliable delivery — data পৌঁছানো নিশ্চিত করে
- Packets order-এ পৌঁছায়
- উদাহরণ: File download, web browsing
UDP (User Datagram Protocol):
- Fast কিন্তু unreliable — কিছু packets হারাতে পারে
- Real-time applications-এ use হয়
- উদাহরণ: Video calls, online gaming
HTTP (Hypertext Transfer Protocol):
- Web-এর language — browser আর server যোগাযোগ করে
- TCP-র ওপর build করা
- উদাহরণ:
GET /usersrequest পাঠানো
Analogy:
- TCP = Registered mail (delivery guaranteed)
- UDP = Shouting across the street (fast but might miss)
- HTTP = The message format you write
প্রতিটি internet-connected device-এর একটা unique address থাকে।
Types:
Localhost / 127.0.0.1:
- নিজের machine
http://localhost:3000মানে আপনার computer-এ চলা server
Loopback:
- Same as localhost, testing-এর জন্য use হয়
LAN IP (Local Area Network):
- আপনার home/office network-এ private address
- উদাহরণ:
192.168.1.10 - শুধু same network-এ visible
Public IP:
- Internet-এ আপনার unique address
- ISP provide করে
- উদাহরণ:
203.76.221.45
Commands to check:
# Windows - IP address দেখো
ipconfig
# Linux/Mac - IP address দেখো
ifconfig
# বা
ip addrAnalogy: LAN IP = আপনার ঘরের নম্বর, Public IP = আপনার বাড়ির ঠিকানা
Backend developer হতে হলে terminal-এ comfortable হতে হবে।
Common Commands:
| Task | Windows | Linux/Mac |
|---|---|---|
| Current directory দেখো | cd |
pwd |
| Files list করো | dir |
ls |
| Directory change করো | cd folder |
cd folder |
| Directory তৈরি করো | mkdir folder |
mkdir folder |
| File delete করো | del file.txt |
rm file.txt |
| IP address দেখো | ipconfig |
ifconfig or ip addr |
| Network test করো | ping google.com |
ping google.com |
| File content দেখো | type file.txt |
cat file.txt |
Try these:
# Check if server reachable
ping google.com
# Show your IP address
ipconfig # Windows
ifconfig # Mac/Linux
# Check Node.js version
node -v
# List files
dir # Windows
ls # Mac/LinuxStudy:
NAT কী? NAT আপনার router-এর একটা feature যা private IP-গুলোকে একটা public IP দিয়ে internet-এ access করতে দেয়।
কেন লাগে?
- IPv4 addresses সীমিত
- Security: বাইরের world সরাসরি আপনার device দেখতে পায় না
Simple example:
- আপনার phone LAN IP:
192.168.1.5 - আপনার laptop LAN IP:
192.168.1.6 - Router public IP:
203.76.221.45 - বাইরে থেকে দেখলে দুইটা device-ই same public IP দেখায়
Analogy: Company-র receptionist-এর মতো — সবাই একই phone number dial করে, receptionist সঠিক person-এ forward করে।
Backend-এ কেন জানা দরকার?
localhosttesting শেষে deploy করতে হলে NAT বুঝতে হয়- Port forwarding setup করতে NAT লাগে
Server হলো একটা program যা requests listen করে এবং responses পাঠায়।
Types:
Web Server:
- HTTP requests handle করে
- উদাহরণ: Nginx, Apache, Express.js
Application Server:
- Business logic চালায়
- Database-এর সাথে কথা বলে
- উদাহরণ: Node.js app with Express
Database Server:
- Data store করে এবং queries serve করে
- উদাহরণ: PostgreSQL, MongoDB
মনে রাখো: আপনার laptop-ও server হতে পারে — শুধু server software চালাতে হবে!
Simple server example:
// এটা একটা server — port 3000-এ listen করছে
import express from 'express';
const app = express();
app.get('/', (req, res) => {
res.send('Hello World');
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});এখন http://localhost:3000 visit করলে "Hello World" দেখবেন।
নিচের প্রশ্নগুলোর অন্তত 4টার উত্তর যদি "হ্যাঁ" হয়, তাহলে আপনি next class-এর জন্য মোটামুটি ready।
- আমি explain করতে পারি browser আর server-এর কাজ কীভাবে আলাদা
- আমি
GETআরPOST-এর পার্থক্য জানি - আমি
404আর500-এর basic meaning জানি - আমি terminal-এ
node -vবাnpm -vচালাতে পারি - আমি
localhost:3000দেখে confused হই না - আমি JSON object পড়ে বুঝতে পারি
- আমি জানি
.envকেন দরকার - আমি roughly জানি Node.js কী
- আমি basic IP concepts বুঝি (localhost, public IP)
- আমি terminal commands use করতে পারি
যদি 2-3টার বেশি জায়গায় সন্দেহ থাকে, problem না। এই README, slides, আর quiz একবার calmly পড়লেই অনেক gap fill হয়ে যাবে।
- আগে এই
README.mdশেষ করুন - তারপর
[slides/outline.md](./slides/outline.md)skim করুন - এরপর
[quiz/quiz.md](./quiz/quiz.md)দিয়ে নিজেকে test করুন - যেগুলো ভুল হবে, সেগুলোর study link খুলে পড়ুন
- তারপর
[class-1/](../class-1/)শুরু করুন
- MDN: How does the web work?
- MDN: HTTP overview
- MDN: HTTP messages
- MDN: HTTP methods
- MDN: Status codes
class-1/-এ আপনি layered architecture, middleware order, response data filtering, status code, request lifecycle শিখবেন।
এই Class 0-এর target হলো আপনার মাথায় এতটুকু foundation বসানো, যাতে class-1-এ গিয়ে মনে না হয় সবাই rocket science বলছে।
Backend rocket science না। তবে browser tab-এর বাইরে JavaScript-এর একটা আলাদা জীবন আছে - আজকে তার trailer দেখলেন।
Next step: [class-1/README.md](../class-1/README.md)