ডেভেলপমেন্ট অনেকদিন ধরেই শিখবো শিখবো করে আর শেখা হয়ে উঠছে না। যদিও টিউটোরিয়াল হেল নামক একধরণের মাদক 😜 বাস্তবে এটা এর থেকেও জঘন্য ক্যারিয়ার আর সময় নষ্ট করার এক কারখানা এই ফাদে পা দেওয়া।
তবে আর উপায় কি ব্লগ কিংবা টিউটোরিয়াল দেখেই তো শেখা চালিয়ে যেতে হবে। যারা সফল ডেভেলপার তারাও কিন্তু এসব থেকেও সাহায্য নেয়। তাই আমিও তাদের মতো করে এখন নতুন করে ব্যাকএন্ড ডেভেলপমেন্ট শিখবো বলে পণ করেছি।
আর এই সিরিজে সেই শিখনকালীন অভিজ্ঞতা বা যেসব প্রজ্ঞা অর্জন করবো তাই এখানে শেয়ার করবো। হয়তো সেটা আপনারও কাজে লেগে যেতে পারে।(শিখনকালীন অভিজ্ঞতা আরেকজন নবীনকে অনুপ্রেরণা দেয়)
আমি স্থির করেছি বাংলা প্রোগ্রামিং কমিউনিটির HM Nayeem ভাইয়ের ভিডিওসমূহ থেকে যা শিখবো তা আমার ভাষায় এখানে শেয়ার করবো।
আজকে মূলত আলোচনা করবো প্রোজেক্ট স্টাকচারিং নিয়ে। এটাকে project scaffolding বলে।
আমার মতো যাদের প্রোগ্রামিং এর সূচনা হয়েছে কম্পিটিটিভ প্রোগ্রামিং দিয়ে তারা অনেকেই আমার সাথে একমত হবে যে, এটার একটা সাইড ইফেক্ট আছে। যেহেতু আমাদের সমস্যাগুলোর সমাধান একটা পেইজেই হয়ে যায়। আমার তো অধিকাংশ সলুশন main function এর ভিতরেই হয়ে যায়। খুব বড়ো জোর ২-৩ তিনটা ফাংশন তৈরী করা লাগে আমার ক্ষেত্রে।
এই অভ্যাসের ফল আমি দেখি যখন একটা প্রজেক্টে অনেক অনেক ফাইল ফোল্ডার আবার কতশত কোড দেখে আসলেই ভয় লেগে যায় আমার।
এই ক্ষেত্রে যেটা আসলে করতে হবে সেটা হচ্ছে প্রোজেক্ট স্টাকচারিং এতে বহুত ফায়দা যেমন।
প্রজেক্টের একটা ভিত্তি প্রস্থর তৈরী হয়।
কোডগুলো মেইনটেইন করতে গিয়ে চুল ছিড়তে হবে না।
যেকোনো কিছু খুজে বের করা সহজ হবে।
টিম মেম্বারদের সাথে কোলাবোরেশন সহজতর হয়।
কোডে ধারাবাহিকতা ও বেস্ট প্রাকটিসগুলো পালন করা যায়
অনেক সময় আর মেধা বাচানো যায়।
ডিপেন্ডেনসিগুলো আর কনফিগারেশনগুলো ম্যানেজ করা যায়।
ভবিষ্যতে এই প্রজেক্টে আরও আরও ফিচার এড করা ও স্কেলিং করা সহজ হয়ে যায়।
আজকে আমরা দেখতে যাচ্ছি বহুল ব্যবহৃত একটা স্টাকচার একে MVC ও বলা হয়ে থাকে । সহজ করে বললে Model,View, Controller।
এই ডিজাইন প্যাটার্ণে মডেলে থাকে ডেটা আর সকল বিজনেস লজিকগুলো।
আর ভিউতে থাকে ইউজার ইন্টারফেসগুলো যেগুলো ফ্রন্টএন্ড ক্লায়েন্ট এক্সেস করবে।
আর কন্ট্রোলার মডেল আর ভিউ এর ভিতরের যোগাযোগটা ম্যানেজ করে।
বড় বড় দাগে এই বেশ কিছু ফোল্ডার থাকবে MVC তে ।
এখানে package.json প্রজেক্টের কনফিগারেশন আর লাইব্রেরীগুলো ম্যানেজ করে।
app.js কে আমরা main function মনে করতে পারি (বুঝার সুবিধার্তে এটা বললাম পুরোপুরি কিন্তু এক না)। এখান থেকেই আমাদের প্রজেক্ট রান হবে।
views ফোল্ডারে আমাদের ফ্রন্টএন্ডের কোড থাকবে পেজ গুলোর কমন জিনিস ম্যানেজের জন্য partial ফোল্ডার তো আছেই। pages এর মধ্যে পেইজের ফ্রন্ট এন্ড কোড থাকবে। আধুনিক যুগে অবশ্য ফ্রন্টএন্ড আর ব্যাকএন্ড আলাদা প্রোজেক্ট করা হয়।
validators folder এর সাহায্যে আমাদের ইউজার ভুলভাল ইনপুট দিলে তা যাতে ভ্যালিডেট করা যায় । অনেক সময় টেস্টিং এর কাজে লাগে । আর এতে বিজনেজ লজিক আর ভ্যালিডেশন লজিক আলাদা করা সহজ হয়।
বহুল ব্যবহৃত কিছু ফাংশনগুলো utils এ রেখে ব্যবহার করা হয়।
routes এ এই এপলিকেশনের রাউট গুলো রাখা এবং ম্যানেজ করা হয়।
public folder এ এপলিকেশনের সব এসেট ছবি থেকে শুরু করে অনেক কিছু সংগ্রহ করা হয়ে থাকে।
models এ এপলিক্যেশনের মডেলগুলো ম্যানেজ করা হয়ে থাকে।
middleware,controllers folder গুলোতে সেগুলো ম্যানেজ করা হবে।
api folder এ REST API এর জন্য routes আর controllers গুলো ম্যানেজ করা হবে।
এখন এতগুলো ফোল্ডার একসাথে বানানো যথেষ্ট সময় লাগতে পারে এইক্ষেত্রে আমরা চ্যাটজিপিটির সাহায্য নিতেই পারি।
আমাদের প্রোজেক্ট স্টাকচার অনেকটা এই রকম
project-name/
├── controllers/
│
├── routes/
│
├── models/
│
├── middlewares/
│
├── api/
│ └── /controllers
| └── /routes
├── utils/
│
├── public/
│ └── /images
| └── /scripts
| └── /styles
| └── /upolads
├── validators/
├── views/
| └── /pages
| └── /auth
| └── /partials
├── app.js
├── .env
├── .gitignore
|
└── README.md
চ্যাটজিপিটি বা অন্য কোনো মডেলের কাছে চাইলে এই ধরণের রেসপন্স পাবেন।
#!/bin/bash
# Define the base project directory
PROJECT_NAME="project-name"
# Create the main project directory
mkdir -p $PROJECT_NAME
# Create subdirectories
mkdir -p $PROJECT_NAME/controllers
mkdir -p $PROJECT_NAME/routes
mkdir -p $PROJECT_NAME/models
mkdir -p $PROJECT_NAME/middlewares
mkdir -p $PROJECT_NAME/api/controllers
mkdir -p $PROJECT_NAME/api/routes
mkdir -p $PROJECT_NAME/utils
mkdir -p $PROJECT_NAME/public/images
mkdir -p $PROJECT_NAME/public/scripts
mkdir -p $PROJECT_NAME/public/styles
mkdir -p $PROJECT_NAME/public/uploads
mkdir -p $PROJECT_NAME/validators
mkdir -p $PROJECT_NAME/views/pages/auth
mkdir -p $PROJECT_NAME/views/partials
# Create main files
touch $PROJECT_NAME/app.js
touch $PROJECT_NAME/.env
touch $PROJECT_NAME/.gitignore
touch $PROJECT_NAME/README.md
# Notify the user
echo "Project directory structure created successfully in $PROJECT_NAME"
এটা রান করতে লিনাক্স হলে লিনাক্সের টার্মিনাল আর ইউনডোজ হলে git bash দিয়ে এই কমান্ডগুলো চালাতে হবে।
chmod +x create_project_structure.sh
./create_project_structure.sh
একেবারে ধুপধাপ করে আমাদের প্রজেক্ট স্টাকচার রেডি হয়ে গেলো।