FastAPI প্রজেক্ট স্ট্রাকচার: বড় প্রজেক্ট গুছিয়ে রাখার প্রো-গাইড
স্কেলেবল এবং মেইনটেইনেবল ব্যাকএন্ড তৈরির একটি পূর্ণাঙ্গ নির্দেশিকা

আপনি যখন প্রথম FastAPI শিখবেন, তখন হয়তো একটি মাত্র main.py ফাইলে সব কোড লিখে ফেলা সম্ভব। কিন্তু প্রজেক্ট যখন বড় হতে থাকে এবং সেখানে অথেনটিকেশন, ডাটাবেস এবং বিজনেস লজিক যোগ হয়, তখন কোড অগোছালো হয়ে যায়।
আজকের ব্লগে আমরা দেখবো কীভাবে একটি প্রফেশনাল FastAPI প্রজেক্টের ডিরেক্টরি সাজাতে হয় যেন তা মেইনটেইন করা সহজ হয়।
১. ফোল্ডার স্ট্রাকচারের ওভারভিউ
একটি আদর্শ FastAPI প্রজেক্ট সাধারণত নিচের মতো করে সাজানো হয়:
📦 api/ (The Routing Layer)
এটি আপনার অ্যাপ্লিকেশনের প্রবেশদ্বার। এখানে সাধারণত ভার্সন অনুযায়ী (যেমন: v1/) এন্ডপয়েন্টগুলো রাখা হয়।
- endpoints/: এখানে আপনার সব রাউট (Routes) থাকে। যেমন-
auth.py,users.py,products.pyইত্যাদি। এতে কোড মডিউলার থাকে।
⚙️ core/ (Global Settings)
পুরো প্রজেক্টের হার্ট বলা হয় একে।
config.py: এখানে আপনার এনভায়রনমেন্ট ভেরিয়েবল (Secret Keys, API Keys) থাকে।
database.py: ডাটাবেস কানেকশন এবং সেশন ম্যানেজমেন্ট এখানে করা হয়।
security.py: পাসওয়ার্ড হ্যাশিং এবং JWT টোকেন লজিক এখানে রাখা হয়।
🗃️ models/ & schemas/
FastAPI-তে এই দুটি বিষয় নিয়ে প্রায়ই কনফিউশন তৈরি হয়:
Models: এটি ডাটাবেস টেবিলের স্ট্রাকচার (যেমন SQLAlchemy বা Tortoise ORM)।
Schemas: এটি Pydantic মডেল, যা ডেটা ভ্যালিডেশন এবং রেসপন্স ফরম্যাটিংয়ের জন্য ব্যবহৃত হয়।
🛠️ services/ (Business Logic)
সবচেয়ে জরুরি পার্ট! রাউট ফাইলে (endpoints) সরাসরি লজিক না লিখে services/ ফোল্ডারে রাখা উচিত। এতে একই কোড আপনি একাধিক জায়গায় ব্যবহার করতে পারবেন এবং টেস্টিং সহজ হবে।
🧰 utils/ (Utility Tools)
ছোট ছোট হেল্পার ফাংশন যেমন: ইমেইল পাঠানো, ফাইল কনভার্ট করা বা থার্ড পার্টি API কল করার ফাংশনগুলো এখানে থাকে।
২. কেন এই স্ট্রাকচারটি সেরা?
১. Scalability: আপনার প্রজেক্ট যত বড়ই হোক, নতুন ফিচার যোগ করা হবে পানির মতো সহজ। ২. Debugging: কোন ফাইলে সমস্যা হচ্ছে তা আপনি খুব দ্রুত খুঁজে পাবেন।
৩. Team Collaboration: একাধিক ডেভেলপার একসাথে কাজ করলে কোড কনফ্লিক্ট হওয়ার সম্ভাবনা কমে যায়।
৩. বোনাস টিপস: নামকরণে সতর্কতা
প্রোজেক্টের ফাইল এবং ফোল্ডারের নাম দেওয়ার সময় আমাদের সচেতন থাকা উচিত। টাইপো বা ভুল বানান (যেমন: catagories এর বদলে categories বা convertion এর বদলে conversion) প্রফেশনালিজম নষ্ট করে। তাই ফাইল সেভ করার আগে স্পেলিং চেক করে নেওয়া ভালো।
উপসংহার
একটি সুন্দর ডিরেক্টরি স্ট্রাকচার শুধু আপনার কোডকেই সুন্দর করে না, বরং আপনার চিন্তাধারাকেও গুছিয়ে দেয়। আপনি যদি একজন ভালো ব্যাকএন্ড ডেভেলপার হতে চান, তবে আজ থেকেই কোড গুছিয়ে লেখার অভ্যাস করুন।

