{{ "ভূমিকা" if current_lang == 'bn' else "Introduction" }}
{{ "PyFlow একটি অত্যন্ত হালকা এবং সিকিউর পাইথন এমভিসি ফ্রেমওয়ার্ক। এটি পাইথনের স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করে তৈরি করা হয়েছে। একই সাথে এটিASGI গেটওয়ের সাহায্যে FastAPI ইন্টিগ্রেশন সমর্থন করে।" if current_lang == 'bn' else "PyFlow is a lightweight, secure Python MVC framework written from scratch using Python's standard library. It natively supports FastAPI side-by-side integration using an ASGI-to-WSGI bridge." }}
{{ "কোর বৈশিষ্ঠসমূহ" if current_lang == 'bn' else "Core Strengths" }}
- {{ "সম্পূর্ণ কাস্টম টেমপ্লেট ও রাউটিং ইঞ্জিন" if current_lang == 'bn' else "Completely custom templating and routing engine." }}
- {{ "SQL Injection ও CSRF ভ্যালিডেশন শিল্ড" if current_lang == 'bn' else "Full SQL injection defense and CSRF automatic validation middleware." }}
- {{ "FastAPI দিয়ে এপিআই তৈরি ও সোয়াগার ডক্স" if current_lang == 'bn' else "Create async APIs using FastAPI with Swagger UI integration." }}
{{ "ব্যাকগ্রাউন্ড কিউ ও জবস (Queue & Background Jobs)" if current_lang == 'bn' else "Queue & Background Jobs" }}
{{ "PyFlow-তে কোনো বাহ্যিক ব্রোকার (যেমন Redis বা Celery) ছাড়াই পাইথনের মাল্টিথ্রেডিং ও ডাটাবেস-ব্যাকড কিউ ম্যানেজার তৈরি করা হয়েছে।" if current_lang == 'bn' else "PyFlow features a built-in database-backed queueing system with concurrent thread workers, eliminating the need for external brokers like Redis or Celery." }}
{{ "কিউতে জব যুক্ত করা" if current_lang == 'bn' else "Pushing a Job" }}
{{ "প্রথমে app/jobs ফোল্ডারে একটি জব ক্লাস তৈরি করুন এবং এরপর Queue.push() ব্যবহার করুন:" if current_lang == 'bn' else "Define a job class with a handle method, then push it to the queue:" }}
from core.queue import Queue
from app.jobs.send_email_job import SendEmailJob
Queue.push(SendEmailJob, {"email": "user@example.com", "subject": "Welcome!"})
{{ "কিউ ওয়ার্কার চালু করা" if current_lang == 'bn' else "Running the Queue Worker" }}
python queue_worker.py --queue default --sleep 1
{{ "টাস্ক সিডিউলার (Cron Jobs)" if current_lang == 'bn' else "Task Scheduler (Cron Jobs)" }}
{{ "PyFlow টাস্ক সিডিউলার নির্দিষ্ট সময় অন্তর ব্যাকগ্রাউন্ডে কোড বা মেথড রান করার সুবিধা দেয়।" if current_lang == 'bn' else "PyFlow Scheduler allows registering recurring routines that execute at predefined intervals or exact times daily." }}
{{ "টাস্ক কনফিগার করা (app/scheduler.py)" if current_lang == 'bn' else "Configuring Scheduled Tasks (app/scheduler.py)" }}
from core.scheduler import Scheduler
def backup_db():
print("Database backed up!")
# Registering tasks
Scheduler.call(backup_db).every_minute()
Scheduler.call(backup_db).daily("02:00")
{{ "সিডিউলার ড্যামন চালু করা" if current_lang == 'bn' else "Running the Scheduler Daemon" }}
python scheduler_runner.py
{{ "ডাটাবেস সিডার ও ফ্যাক্টরি (Database Seeders & Factories)" if current_lang == 'bn' else "Database Seeders & Factories" }}
{{ "লোকাল বা স্টেজিং এনভায়রনমেন্ট টেস্টিংয়ের জন্য ডামি ডেটা তৈরি ও ডাটাবেস পপুলেট করতে সিডার ও ফ্যাক্টরি ব্যবহার করা হয়।" if current_lang == 'bn' else "Seeders and Factories make it easy to quickly populate your database tables with dummy data for staging and testing." }}
{{ "ফ্যাক্টরি ডিক্লেয়ার করা" if current_lang == 'bn' else "Defining a Factory" }}
from core.factory import Factory
from app.models.user_model import User
def user_blueprint():
return {
"name": "Test User",
"email": "test@example.com",
"role": "user"
}
Factory.define(User, user_blueprint)
{{ "সিডার রান করা" if current_lang == 'bn' else "Running Seeders" }}
# Generate 5 records in database
Factory.create(User, count=5)
{{ "উন্নত লগিং সিস্টেম (Advanced Logging)" if current_lang == 'bn' else "Advanced Logging System" }}
{{ "NovaFlow-এর Logger.php-র অনুরূপ কাস্টম পাইথন লগার তৈরি করা হয়েছে যা অটোমেটিক সেশন ও আইপি ট্র্যাকিং করে।" if current_lang == 'bn' else "Adapts NovaFlow's advanced logging framework to track active requests, IPs, and user sessions dynamically." }}
{{ "লগ রাইটিং উদাহরণ" if current_lang == 'bn' else "Writing Logs" }}
from core.logger import Logger
Logger.info("This is an info log message")
Logger.error("Database connection failed!", {"error_code": 1045})
{{ "লগগুলো storage/logs/app.log এবং error.log ফাইলে সেভ হয় এবং ব্রাউজারের ফুটবার ডেবাগ বারে ভেসে উঠে।" if current_lang == 'bn' else "Logs are recorded into storage/logs/ and are dynamically displayed on the web footer debug bar." }}
{{ "রিয়েল-টাইম ওয়েবসকেট (WebSockets)" if current_lang == 'bn' else "Real-Time WebSockets" }}
{{ "ASGI গেটওয়ের মাধ্যমে PyFlow-তে FastAPI-র রিয়েল-টাইম বাই-ডিরেকショナル ওয়েবসকেট ইন্টিগ্রেশন সচল করা হয়েছে।" if current_lang == 'bn' else "Websocket routes are routed directly to FastAPI endpoints via our custom ASGI bridge, enabling real-time bidirection communication." }}
{{ "ওয়েবসকেট কানেকশন" if current_lang == 'bn' else "Connecting to WebSockets" }}
{{ "সার্ভার রানিং থাকা অবস্থায় ws://127.0.0.1:8000/ws ঠিকানায় কানেক্ট করুন।" if current_lang == 'bn' else "Connect a WebSocket client to ws://127.0.0.1:8000/ws when the server is running." }}
// Client-side JS connection
const socket = new WebSocket('ws://127.0.0.1:8000/ws');
socket.onmessage = (event) => console.log(event.data);
socket.send('Hello PyFlow!');
{{ "সেটআপ ও রান" if current_lang == 'bn' else "Setup & Installation" }}
{{ "PyFlow চালানোর জন্য Python >= 3.10 প্রয়োজন।" if current_lang == 'bn' else "PyFlow requires Python >= 3.10 to run." }}
১. {{ "ডিপেন্ডেন্সি ইনস্টল করা" if current_lang == 'bn' else "Install Dependencies" }}
pip install -r requirements.txt
২. {{ "এনভায়রনমেন্ট ফাইল সেটআপ" if current_lang == 'bn' else "Setup Environment Configuration" }}
{{ "রুট ফোল্ডারে .env.example ফাইলটি কপি করে .env ফাইলে পরিবর্তন করুন:" if current_lang == 'bn' else "Copy .env.example to .env and configure details:" }}
DB_DRIVER=sqlite
DB_NAME=storage/database.sqlite
৩. {{ "ডাটাবেজ মাইগ্রেশন রান করা" if current_lang == 'bn' else "Run Database Migrations" }}
python migrate.py
৪. {{ "ডেভেলপমেন্ট সার্ভার চালু করা" if current_lang == 'bn' else "Start Development Server" }}
python run.py
{{ "রাউটিং সিস্টেম" if current_lang == 'bn' else "Routing System" }}
{{ "সব রুট config/routes.py ফাইলে রেজিস্টার করতে হয়।" if current_lang == 'bn' else "All web routes are configured in config/routes.py." }}
{{ "সাধারণ রুট উদাহরণ" if current_lang == 'bn' else "Basic Route Examples" }}
# config/routes.py
router.get("/docs", action(HomeController, "docs"), name="docs")
router.post("/settings", action(SettingController, "update"), name="settings.update")
{{ "মিডলওয়্যার ও গ্রুপিং" if current_lang == 'bn' else "Middleware & Route Grouping" }}
# নির্দিষ্ট মিডলওয়্যার গ্রুপ তৈরি
with router.group(prefix="/admin", middleware=[auth_middleware]):
router.get("/settings", action(SettingController, "index"), name="admin.settings")
{{ "কন্ট্রোলার ও রিকোয়েস্ট" if current_lang == 'bn' else "Controllers & Requests" }}
{{ "কন্ট্রোলার ক্লাসগুলো app/controllers/ ডিরেক্টরির অধীনে থাকে এবং core.controller.Controller কে ইনহেরিট করে।" if current_lang == 'bn' else "Controllers live in app/controllers/ and inherit core.controller.Controller." }}
{{ "কন্ট্রোলার ক্লাস উদাহরণ" if current_lang == 'bn' else "Controller Example" }}
from core.controller import Controller
class ProductController(Controller):
def index(self):
# input রিডিং
name = self.request.input("name")
# ভিউ রেন্ডারিং
return self.view("products.index", {"name": name})
def api_data(self):
# JSON রেসপন্স পাঠানো
return self.json({"status": "success"})
{{ "অ্যাক্টিভ রেকর্ড ওআরএম (ORM)" if current_lang == 'bn' else "Active Record ORM" }}
{{ "মডেল তৈরি করে কোয়েরি বিল্ডারের সাহায্যে ডাটাবেস অপারেশন সম্পন্ন করা অত্যন্ত সহজ।" if current_lang == 'bn' else "Interact with the database using simple and parameterized Active Record models." }}
{{ "মডেল তৈরি করা" if current_lang == 'bn' else "Define a Model" }}
# app/models/product_model.py
from core.model import Model
class Product(Model):
table = "products"
fillable = ["name", "price", "stock"]
{{ "কোয়েরি চালানোর উদাহরণ" if current_lang == 'bn' else "Running Queries" }}
# ১. সকল রেকর্ড ফেচ
products = Product.all()
# ২. চেইন্ড কুয়েরি এবং ফিল্টারিং
premium_items = Product.query().where("price", ">", 500).order_by("created_at", "DESC").get()
# ৩. ক্রিয়েট অপারেশন
Product.create({"name": "Mobile", "price": 12000, "stock": 10})
{{ "ইনপুট ভ্যালিডেশন" if current_lang == 'bn' else "Input Validation" }}
{{ "ভ্যালিডেটর ক্লাস ব্যবহার করে ফর্ম ইনপুট খুব সহজে যাচাই করা যায়।" if current_lang == 'bn' else "Validate user inputs securely using core/validator.py rules." }}
{{ "কন্ট্রোলারে ব্যবহার" if current_lang == 'bn' else "Usage inside Controller" }}
def store(self):
errors = self.validate({
"name": ["required", "min:3"],
"email": ["required", "email", "unique:users,email"],
"password": ["required", "min:8"]
})
if errors:
return self.back_with_errors(errors)
# ইনপুট ডাটা সফল ভ্যালিডেট হলে সেভ করার প্রসেস...
{{ "FastAPI ও সোয়াগার এপিআই" if current_lang == 'bn' else "FastAPI & Swagger UI" }}
{{ "PyFlow-তে FastAPI-কে সাইড-বাই-সাইড ইন্টিগ্রেট করা হয়েছে।" if current_lang == 'bn' else "PyFlow hosts FastAPI side-by-side using an ASGI bridge." }}
{{ "এপিআই রুট" if current_lang == 'bn' else "API URLs" }}
- OpenAPI Specs Docs:
http://127.0.0.1:8000/api/docs - JSON Schema:
http://127.0.0.1:8000/api/openapi.json - Endpoint Prefix:
http://127.0.0.1:8000/api/*
{{ "অথেন্টিকেশন" if current_lang == 'bn' else "API Authentication" }}
{{ "FastAPI এন্ডপয়েন্টগুলো এক্সেস করার জন্য JWT Bearer টোকেন অথবা API Key ব্যবহার করা যায়।" if current_lang == 'bn' else "FastAPI endpoints support both JWT Bearer Tokens and secure API Keys." }}
{{ "API কী ও অ্যাক্টিভিটি লগ" if current_lang == 'bn' else "API Keys & Activity Logs" }}
{{ "নিরাপত্তা ও অ্যাপ্লিকেশনের গতিবিধি ট্র্যাকিংয়ের জন্য PyFlow-তে এপিআই কী ও অ্যাক্টিভিটি লগ যুক্ত করা হয়েছে।" if current_lang == 'bn' else "Advanced keys management and system audits trail built into the core." }}
{{ "এপিআই কী রিকোয়েস্ট হেডার" if current_lang == 'bn' else "API Key Request Header" }}
{{ "FastAPI-র রিকোয়েস্টে নিচের হেডারটি পাস করুন:" if current_lang == 'bn' else "Pass the key in the request header as follows:" }}
X-API-Key: pm_sk_your_plaintext_token_here
{{ "অ্যাক্টিভিটি লগিং (Audit Trail)" if current_lang == 'bn' else "Logging Actions Programmatically" }}
from app.models.activity_log_model import ActivityLog
# ম্যানুয়ালি কার্যক্রম লগ করা
ActivityLog.log(
self.request,
action="custom.action",
description="ব্যবহারকারী একটি ফাইল ডাউনলোড করেছেন।",
user_id=self.session.get("user_id")
)
{{ "সিএলআই অ্যাসিস্ট্যান্ট (cli.py)" if current_lang == 'bn' else "CLI Assistant (cli.py)" }}
{{ "Laravel Artisan-এর মতো PyFlow-তে রয়েছে একটি ইন্টারঅ্যাক্টিভ ও ডাইনামিক কমান্ড লাইন ইন্টারফেস (CLI) অ্যাসিস্ট্যান্ট।" if current_lang == 'bn' else "PyFlow comes with a colorful, interactive, and menu-driven Command Line Interface (CLI) assistant similar to Laravel's Artisan." }}
{{ "কিভাবে রান করবেন?" if current_lang == 'bn' else "How to Run?" }}
python cli.py
{{ "এটি রান করার পর একটি সুন্দর মেনু দেখতে পাবেন, যেখান থেকে নম্বর সিলেক্ট করে আপনি বিভিন্ন কাজ সম্পন্ন করতে পারবেন।" if current_lang == 'bn' else "Running this command opens an interactive terminal menu where you can choose options by entering their numbers." }}
{{ "ফিচারসমূহের বিবরণ" if current_lang == 'bn' else "CLI Commands & Features" }}
- View Registered Routes (রেজিস্টার্ড রাউট তালিকা): {{ "config/routes.py ফাইলে রেজিস্টার করা সকল রাউট (Method, Path, Handler Name, Route Name, Middleware) সুন্দর চার্ট আকারে টার্মিনালে দেখায়।" if current_lang == 'bn' else "Loads all routes from config/routes.py and prints them in a clean table showing methods, paths, handlers, names, and middleware." }}
- View Database Tables (ডাটাবেস টেবিল তালিকা): {{ "ডাটাবেসে তৈরি হওয়া সকল একটিভ টেবিলের নাম তালিকা আকারে প্রিন্ট করে।" if current_lang == 'bn' else "Connects to SQLite or MySQL database and lists all existing tables." }}
- Database Summary Report (ডাটাবেস রেকর্ড সামারি): {{ "প্রতিটি ডাটাবেস টেবিলে বর্তমানে কতটি রো বা রেকর্ড সংরক্ষিত আছে তা গণনা করে লাইভ সামারি দেখায়।" if current_lang == 'bn' else "Calculates and prints the live record count for each table in your database." }}
- Generate Model File (ওআরএম মডেল জেনারেটর): {{ "নতুন ওআরএম মডেল স্বয়ংক্রিয়ভাবে scaffold বা জেনারেট করে (যেমন: Product মডেল দিলে app/models/product_model.py তৈরি করে)।" if current_lang == 'bn' else "Prompts for a model name and table name, then generates an ORM model under app/models/ inheriting core.model.Model." }}
- Generate Controller File (কন্ট্রোলার জেনারেটর): {{ "নতুন কন্ট্রোলার স্কাফোল্ড তৈরি করে (যেমন: Product কন্ট্রোলার দিলে app/controllers/product_controller.py তৈরি করে)।" if current_lang == 'bn' else "Scaffolds a new controller file under app/controllers/ inheriting core.controller.Controller." }}
- System Health Check (সিস্টেম হেলথ চেক): {{ "পাইথন রানটাইম ভার্সন, storage রাইট পারমিশন, .env ফোল্ডার উপস্থিতি এবং ডাটাবেস কানেকশন স্ট্যাটাস সফল কিনা তা ডায়াগনস্টিক ভেরিফাই করে।" if current_lang == 'bn' else "Runs diagnostics on Python version, storage write permissions, .env file, and database connection, displaying [PASS] or [FAIL]." }}
- Clear Logs & Temp Sessions (লগ ও সেশন ক্যাশ ক্লিয়ার): {{ "স্টোরেজে থাকা সাময়িক লগ ফাইল এবং একটিভ সেশন ডাটা সম্পূর্ণ ডিলিট করে ক্যাশ ক্লিয়ার করে।" if current_lang == 'bn' else "Safely purges all files inside storage/logs/ and storage/sessions/ with user confirmation." }}
- Run Database Migrations (ডাটাবেস মাইগ্রেশন রান): {{ "ডাটাবেস স্কিমা আপডেট বা সিড করতে ব্যাকগ্রাউন্ডে migrate.py স্ক্রিপ্ট রান করে।" if current_lang == 'bn' else "Runs database migrations programmatically via migrate.py." }}
- Run Database Seeders (ডাটাবেস সিডার রান): {{ "ডাটাবেসে ডামি রেকর্ড পূর্ণ করতে সিডার স্ক্রিপ্টগুলো রান করে।" if current_lang == 'bn' else "Runs database seeders to populate mock data." }}
- Run Queue Worker (কিউ ওয়ার্কার রান): {{ "ব্যাকগ্রাউন্ড প্রসেস বা কিউ প্রসেস করার জন্য ওয়ার্কার ড্যামন চালু করে।" if current_lang == 'bn' else "Starts the background queue worker process to run jobs." }}
- Run Task Scheduler (সিডিউলার রান): {{ "সময়ভিত্তিক নির্ধারিত রিকারিং বা ক্রন টাস্কগুলো ব্যাকগ্রাউন্ডে চেক করার জন্য সিডিউলার চালু করে।" if current_lang == 'bn' else "Runs the task scheduler loop to process recurring jobs." }}
{{ "ব্যাকগ্রাউন্ড কিউ ও জবস (Queue & Background Jobs)" if current_lang == 'bn' else "Queue & Background Jobs" }}
{{ "PyFlow-তে কোনো বাহ্যিক ব্রোকার (যেমন Redis বা Celery) ছাড়াই পাইথনের মাল্টিথ্রেডিং ও ডাটাবেস-ব্যাকড কিউ ম্যানেজার তৈরি করা হয়েছে।" if current_lang == 'bn' else "PyFlow features a built-in database-backed queueing system with concurrent thread workers, eliminating the need for external brokers like Redis or Celery." }}
{{ "কিউতে জব যুক্ত করা" if current_lang == 'bn' else "Pushing a Job" }}
{{ "প্রথমে app/jobs ফোল্ডারে একটি জব ক্লাস তৈরি করুন এবং এরপর Queue.push() ব্যবহার করুন:" if current_lang == 'bn' else "Define a job class with a handle method, then push it to the queue:" }}
from core.queue import Queue
from app.jobs.send_email_job import SendEmailJob
Queue.push(SendEmailJob, {"email": "user@example.com", "subject": "Welcome!"})
{{ "কিউ ওয়ার্কার চালু করা" if current_lang == 'bn' else "Running the Queue Worker" }}
python queue_worker.py --queue default --sleep 1
{{ "টাস্ক সিডিউলার (Cron Jobs)" if current_lang == 'bn' else "Task Scheduler (Cron Jobs)" }}
{{ "PyFlow টাস্ক সিডিউলার নির্দিষ্ট সময় অন্তর ব্যাকগ্রাউন্ডে কোড বা মেথড রান করার সুবিধা দেয়।" if current_lang == 'bn' else "PyFlow Scheduler allows registering recurring routines that execute at predefined intervals or exact times daily." }}
{{ "টাস্ক কনফিগার করা (app/scheduler.py)" if current_lang == 'bn' else "Configuring Scheduled Tasks (app/scheduler.py)" }}
from core.scheduler import Scheduler
def backup_db():
print("Database backed up!")
# Registering tasks
Scheduler.call(backup_db).every_minute()
Scheduler.call(backup_db).daily("02:00")
{{ "সিডিউলার ড্যামন চালু করা" if current_lang == 'bn' else "Running the Scheduler Daemon" }}
python scheduler_runner.py
{{ "ডাটাবেস সিডার ও ফ্যাক্টরি (Database Seeders & Factories)" if current_lang == 'bn' else "Database Seeders & Factories" }}
{{ "লোকাল বা স্টেজিং এনভায়রনমেন্ট টেস্টিংয়ের জন্য ডামি ডেটা তৈরি ও ডাটাবেস পপুলেট করতে সিডার ও ফ্যাক্টরি ব্যবহার করা হয়।" if current_lang == 'bn' else "Seeders and Factories make it easy to quickly populate your database tables with dummy data for staging and testing." }}
{{ "ফ্যাক্টরি ডিক্লেয়ার করা" if current_lang == 'bn' else "Defining a Factory" }}
from core.factory import Factory
from app.models.user_model import User
def user_blueprint():
return {
"name": "Test User",
"email": "test@example.com",
"role": "user"
}
Factory.define(User, user_blueprint)
{{ "সিডার রান করা" if current_lang == 'bn' else "Running Seeders" }}
# Generate 5 records in database
Factory.create(User, count=5)
{{ "উন্নত লগিং সিস্টেম (Advanced Logging)" if current_lang == 'bn' else "Advanced Logging System" }}
{{ "NovaFlow-এর Logger.php-র অনুরূপ কাস্টম পাইথন লগার তৈরি করা হয়েছে যা অটোমেটিক সেশন ও আইপি ট্র্যাকিং করে।" if current_lang == 'bn' else "Adapts NovaFlow's advanced logging framework to track active requests, IPs, and user sessions dynamically." }}
{{ "লগ রাইটিং উদাহরণ" if current_lang == 'bn' else "Writing Logs" }}
from core.logger import Logger
Logger.info("This is an info log message")
Logger.error("Database connection failed!", {"error_code": 1045})
{{ "লগগুলো storage/logs/app.log এবং error.log ফাইলে সেভ হয় এবং ব্রাউজারের ফুটবার ডেবাগ বারে ভেসে উঠে।" if current_lang == 'bn' else "Logs are recorded into storage/logs/ and are dynamically displayed on the web footer debug bar." }}
{{ "রিয়েল-টাইম ওয়েবসকেট (WebSockets)" if current_lang == 'bn' else "Real-Time WebSockets" }}
{{ "ASGI গেটওয়ের মাধ্যমে PyFlow-তে FastAPI-র রিয়েল-টাইম বাই-ডিরেকショナル ওয়েবসকেট ইন্টিগ্রেশন সচল করা হয়েছে।" if current_lang == 'bn' else "Websocket routes are routed directly to FastAPI endpoints via our custom ASGI bridge, enabling real-time bidirection communication." }}
{{ "ওয়েবসকেট কানেকশন" if current_lang == 'bn' else "Connecting to WebSockets" }}
{{ "সার্ভার রানিং থাকা অবস্থায় ws://127.0.0.1:8000/ws ঠিকানায় কানেক্ট করুন।" if current_lang == 'bn' else "Connect a WebSocket client to ws://127.0.0.1:8000/ws when the server is running." }}
// Client-side JS connection
const socket = new WebSocket('ws://127.0.0.1:8000/ws');
socket.onmessage = (event) => console.log(event.data);
socket.send('Hello PyFlow!');
{{ "ডাটাবেজ কানেকশন পুল (Database Pool)" if current_lang == 'bn' else "Multi-Driver Connection Pool" }}
{{ "PyFlow এখন SQLite, MySQL এবং PostgreSQL ড্রাইভার সমর্থন করে এবং প্রতি থ্রেডে আলাদা কানেকশন পুল তৈরি করে।" if current_lang == 'bn' else "PyFlow supports connection pooling for SQLite, MySQL, and PostgreSQL out of the box." }}
{{ "কিভাবে ডিক্লেয়ার করবেন? (.env)" if current_lang == 'bn' else "Configuration in .env" }}
# PostgreSQL Example
DB_DRIVER=postgresql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_NAME=pyflow_db
DB_USER=postgres
DB_PASSWORD=your_password
DB_SCHEMA=public
DB_POOL_SIZE=5
{{ "অ্যাটমিক ট্রানজেকশন (Atomic Transactions)" if current_lang == 'bn' else "Atomic Transactions & Savepoints" }}
{{ "ডাটাবেজে ভুল বা আংশিক এন্ট্রি রোধ করতে PyFlow-তে রয়েছে নেস্টেড সেভপয়েন্ট ট্রানজেকশন ম্যানেজার।" if current_lang == 'bn' else "Ensure absolute transactional security using decorators, nested blocks, and savepoints." }}
{{ "কন্ট্রোলারে ট্রানজেকশন ও ইমেইল হুকস" if current_lang == 'bn' else "Controller Context Manager & Hooks" }}
from core.database import Database
def place_order(self):
try:
with Database.transaction():
order = Order.create({...})
OrderItem.create({...})
# ট্রানজেকশন সফলভাবে কমিট হওয়ার পর ইমেইল যাবে (rollback হলে যাবে না)
Database.on_commit(lambda: Mailer.send("order_confirm", order))
except Exception as exc:
# স্বয়ংক্রিয় রোলব্যাক সম্পন্ন
return self.json({"error": str(exc)})
{{ "@atomic ডেকোরেটর ও সেভপয়েন্ট" if current_lang == 'bn' else "@atomic Decorator & Named Savepoints" }}
from core.database import atomic, Database
@atomic
def post_journal(entries):
# আংশিক রোলব্যাকের জন্য named savepoint
with Database.savepoint("journal_header"):
Journal.create({...})
for entry in entries:
JournalLine.create(entry)
{{ "নির্ভুল আর্থিক গণিত (Precision Money Math)" if current_lang == 'bn' else "Precision Money Math & Numbers to Words" }}
{{ "float ডাটা ব্যবহারের কারণে কোনো পয়সার অমিল এড়াতে PyFlow-তে রয়েছে Decimal-ভিত্তিক Money লাইব্রেরি।" if current_lang == 'bn' else "Prevent floating point rounding errors in invoices and accounts using BDT/USD Money math." }}
{{ "Money ক্লাসের ব্যবহার" if current_lang == 'bn' else "Basic Money Operations" }}
from core.decimal_math import Money, percent_of, split_amount
price = Money("1500.50", "BDT")
tax = percent_of(price, 15) # ১৫% ভ্যাট
total = price + tax # Money('1725.58 BDT')
# ৩ কিস্তিতে কিস্তি বন্টন (পেনি ডিস্ট্রিবিউশন সহ নির্ভুল)
installments = split_amount(total, 3)
{{ "কথায় রূপান্তর (Number to Words)" if current_lang == 'bn' else "Number to Words Translation" }}
# ১. সরাসরি Money ক্লাসের মাধ্যমে কথায় লেখা
print(price.to_words("bn"))
# Output: "এক হাজার পাঁচশত টাকা পঞ্চাশ পয়সা মাত্র"
print(price.to_words("en"))
# Output: "One Thousand, Five Hundred Taka and Fifty Poisha Only"
# ২. গ্লোবাল হেল্পার ফাংশন
from core.decimal_math import number_to_words
print(number_to_words(12500000, lang="bn"))
# Output: "এক কোটি পঁচিশ লক্ষ"
{{ "প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ)" if current_lang == 'bn' else "Frequently Asked Questions (FAQ)" }}
{{ "PyFlow ফ্রেমওয়ার্ক ব্যবহার করে বড় প্রজেক্ট, ই-কমার্স বা এনজিও অ্যাপ্লিকেশন তৈরি সংক্রান্ত সাধারণ প্রশ্নের উত্তর।" if current_lang == 'bn' else "Answers to common questions regarding building large-scale applications, E-commerce, and NGO portals using PyFlow." }}
{{ "১. শুধু HTML ব্যবহার করলে ডাইনামিক পেজে কি কোনো সমস্যা হবে?" if current_lang == 'bn' else "1. Will using plain HTML cause issues with dynamic pages?" }}
{{ "না, কোনো সমস্যা হবে না। PyFlow-র শক্তিশালী সার্ভার-সাইড টেমপ্লেট লুপ ও কন্ডিশনাল রেন্ডারিং হ্যান্ডেল করে। ফ্রন্টএন্ডে সামান্য Vanilla JS, Alpine.js বা HTMX ব্যবহার করে কোনো প্রকার জটিল ফ্রন্টএন্ড ফ্রেমওয়ার্ক (যেমন React/Vue) ছাড়াই পুরোপুরি ডাইনামিক পেইজ ও রিয়েল-টাইম রিপোর্ট তৈরি করা সম্ভব।" if current_lang == 'bn' else "No. PyFlow's template engine compiles loops and conditionals on the server. For frontend interactivity, you can use Vanilla JS, Alpine.js, or HTMX to build fully dynamic pages without the bloat of heavy JS frameworks." }}
{{ "২. MySQL কি ২০ লক্ষ বা তার বেশি ডাটা সহজে হ্যান্ডেল করতে পারবে?" if current_lang == 'bn' else "2. Can MySQL handle 2 Million+ records efficiently?" }}
{{ "হ্যাঁ, ২০ লক্ষ বা ২ মিলিয়ন ডাটা MySQL-এর জন্য খুবই সাধারণ সংখ্যা। PyFlow-তে কলাম ইনডেক্সিং (Indexing), কুয়েরি পেজিনেশন (.paginate()), এবং থ্রেড-সেফ কানেকশন পুলিং ব্যবহার করার কারণে প্রতিটা কুয়েরি লোড হতে ১ থেকে ৫ মিলি-সেকেন্ডের বেশি সময় লাগবে না।" if current_lang == 'bn' else "Yes, 2 Million rows is a very small volume for modern MySQL database engines. By applying proper indexing on query keys, query pagination (.paginate()), and using PyFlow connection pooling, search queries resolve under 5 milliseconds." }}
{{ "৩. এই ফ্রেমওয়ার্ক দিয়ে কি বড় এনজিও বা ডায়াবেটিস/হাইপারটেনশন রোগীর ডাটা ট্র্যাকিং কাজ করা যাবে?" if current_lang == 'bn' else "3. Is PyFlow suitable for large NGO/Hospital Patient Tracking systems?" }}
{{ "হ্যাঁ। PostgreSQL/MySQL-এর JSONB ড্রাইভার সাপোর্ট থাকায় রোগীদের ডাইনামিক মেডিকেল রিপোর্ট সহজে সেভ করা যাবে। এছাড়া ডাটার গোপনীয়তা রক্ষায় বিল্ট-ইন রোল পারমিশন (RBAC) এবং নিরাপদ এন্ট্রি নিশ্চিত করতে @atomic ট্রানজেকশন ম্যানেজার থাকায় এটি অত্যন্ত নিরাপদ ও স্থিতিশীল।" if current_lang == 'bn' else "Absolutely. PostgreSQL/MySQL JSONB supports dynamic medical test tables, and RBAC permissions isolate sensitive health logs. Atomic transactions ensure no corrupted/partial medical files are ever committed." }}
{{ "৪. ই-কমার্স ইআরপি (E-Commerce ERP)-তে স্টক ওভারসেলিং কীভাবে ঠেকানো যাবে?" if current_lang == 'bn' else "4. How does PyFlow prevent stock overselling in E-commerce ERPs?" }}
{{ "PyFlow-র নেস্টেড ট্রানজেকশন ব্লক ও database-level lock (SELECT FOR UPDATE) নিশ্চিত করে যে স্টকে থাকা শেষ প্রোডাক্টটি এক সেকেন্ডের ব্যবধানে একাধিক ব্যক্তি কিনতে পারবে না। অর্ডারের সাথে সাথে স্টক অ্যাডজাস্টমেন্ট ও লেজার পোস্টিং একই ট্রানজেকশন বাউন্ডারিতে কাজ করায় ডাটা অসঙ্গতির কোনো সুযোগ নেই।" if current_lang == 'bn' else "PyFlow transaction locks block concurrency anomalies when the last item in stock is purchased. Orders, stock updates, and accounts ledger entries run in a single atomic database context." }}
{{ "৫. দীর্ঘ মেয়াদে (আগামী ২০ বছর) এই কাস্টম ফ্রেমওয়ার্কের ভবিষ্যৎ কেমন ও কী কী সমস্যা হতে পারে?" if current_lang == 'bn' else "5. What is the 20-year compatibility and future of this custom framework?" }}
{{ "PyFlow মূলত পাইথনের স্ট্যান্ডার্ড লাইব্রেরি (stdlib) নির্ভর করায় এর 'ডিপেন্ডেন্সি ল্যাগ' নেই বললেই চলে, যা একে অত্যন্ত ফিউচার-প্রুফ করে তোলে। ১৭০টির বেশি ইউনিট টেস্ট যেকোনো পাইথন রানটাইম আপগ্রেডের রিগ্রেশন ঠেকাতে পারে। যেহেতু এটি সাধারণ লারাভেল/কোডইগনাইটারের এমভিসি ডিজাইন প্যাটার্ন মেনে চলে, তাই যেকোনো নতুন ডেভেলপারের পক্ষে কোড সহজে মেইনটেইন করা সম্ভব।" if current_lang == 'bn' else "Because PyFlow depends heavily on Python's native standard library modules, it suffers very little dependency rot. Over 170+ unit tests safeguard codebase integrity against deprecations, and standard MVC folders make onboarding new developers easy." }}
{{ "৬. core/decimal_math.py এ Money ক্লাস তৈরির মূল উদ্দেশ্য কী ছিল?" if current_lang == 'bn' else "6. What is the purpose of the Money class in decimal_math.py?" }}
{{ "কম্পিউটারের ভাসমান সংখ্যা বা float ডাটা টাইপের অভ্যন্তরীণ বাইনারি সীমাবদ্ধতার কারণে ফিন্যান্সিয়াল হিসাবে কিছু পয়সার গরমিল দেখা দেয় (যেমন: ০.১ + ০.২ = ০.৩০০০০০০০০০০০০০৪ BDT)। Money ক্লাস পাইথনের Decimal লাইব্রেরি এবং ROUND_HALF_UP নিয়ম ব্যবহার করে প্রতিটি অ্যাকাউন্টিং এবং বিলিং গণনা ১ পয়সা পর্যন্ত নির্ভুল রাখে।" if current_lang == 'bn' else "Computers suffer from binary representation limitations in floating point math (e.g. 0.1 + 0.2 equals 0.30000000000000004 BDT). The Money class wraps Python's Decimal module with ROUND_HALF_UP logic to keep financial records accurate to the decimal digit." }}
{{ "৭. PyFlow-তে কীভাবে এক্সটার্নাল লাইব্রেরি ইন্সটল এবং মেইনটেইন করব?" if current_lang == 'bn' else "7. How do I install and manage external libraries in PyFlow?" }}
{{ "নতুন কোনো থার্ড-পার্টি লাইব্রেরি যুক্ত করতে হলে pip install এর মাধ্যমে প্যাকেজটি নামিয়ে রুট ডিরেক্টরির requirements.txt ফাইলে এর নির্দিষ্ট সংস্করণ লক (pin) করে দিতে হবে। এর ফলে ভবিষ্যতে ভিন্ন কোনো হোস্টিং এনভায়রনমেন্টে প্রজেক্টটি ডেপ্লয় করার সময় ডিপেন্ডেন্সি সংস্করণ অসঙ্গতি এড়ানো যাবে।" if current_lang == 'bn' else "Use standard pip packaging tools to install new libraries and pin their exact version in the requirements.txt file. This ensures environment consistency across development and production servers." }}
{{ "৮. ইমেইল মেইলার কীভাবে কনফিগার করা যাবে?" if current_lang == 'bn' else "8. How do I configure mail server settings?" }}
{{ "মেইলার কনফিগার করতে আপনার .env ফাইলে মেইল হোস্ট সেটিংস আপডেট করুন। core/mailer.py ফাইলটি পাইথনের smtplib ব্যবহার করে এবং SMTP_HOST, SMTP_PORT, SMTP_USER এবং SMTP_PASSWORD ভ্যালুর সাহায্যে ইনভয়েস বা নোটিফিকেশন মেইল পাঠাতে সক্ষম।" if current_lang == 'bn' else "Configure SMTP_HOST, SMTP_PORT, SMTP_USER, and SMTP_PASSWORD inside the .env file. The core/mailer.py module leverages Python's built-in smtplib to route transaction messages securely." }}
{{ "৯. কিউ (Queue Manager) কীভাবে ব্যাকগ্রাউন্ডে কাজ করে?" if current_lang == 'bn' else "9. How does the Queue Worker operate in the background?" }}
{{ "PyFlow-তে কোনো ভারী মেমোরি ব্রোকার (যেমন: Celery বা Redis) ছাড়াই ডাটাবেজ ব্যাকড কিউ ওয়ার্কার তৈরি করা হয়েছে। CLI থেকে python queue_worker.py চালালে এটি ডাটাবেজের jobs টেবিল থেকে নতুন পেন্ডিং টাস্ক থ্রেডিংয়ের সাহায্যে প্রসেস করতে থাকে এবং মূল ওয়েব সার্ভারকে রিলিজ রাখে।" if current_lang == 'bn' else "PyFlow implements a DB-backed queue worker. Running python queue_worker.py via CLI loops through the jobs table and runs registered tasks asynchronously via threads, keeping the HTTP server responsive." }}
{{ "১০. ক্যাশিং এর জন্য কি রেডিস ছাড়াও অন্য কোনো ড্রাইভ ব্যবহার করা সম্ভব?" if current_lang == 'bn' else "10. Are there other cache drivers besides Redis?" }}
{{ "হ্যাঁ। core/cache.py এ মাল্টি-ড্রাইভার ক্যাশ ইঞ্জিন রয়েছে। আপনার সার্ভারে যদি Redis ইনস্টল না থাকে, তবে .env ফাইলে CACHE_DRIVER=file সেট করে ফাইল-ভিত্তিক ক্যাশিং করতে পারেন, যা ডাটাবেস ক্যাশিংয়ের তুলনায় অনেক দ্রুত।" if current_lang == 'bn' else "Yes. PyFlow's core/cache.py supports multiple cache backends. Set CACHE_DRIVER=file inside .env to store cached outputs inside the storage/cache/ directory if you don't have a running Redis server." }}
{{ "১১. সিএলআই ব্যবহার করে কোড স্কাফোল্ডিং এর সুবিধা কী?" if current_lang == 'bn' else "11. What is the benefit of the Interactive CLI Assistant?" }}
{{ "রুট ডিরেক্টরির cli.py ফাইলটি একটি ডেভেলপমেন্ট অ্যাসিস্ট্যান্ট হিসেবে কাজ করে। কমান্ড লাইনে ১ ক্লিক করেই মডেল বা কন্ট্রোলারের বেসিক স্ট্রাকচার স্কাফোল্ড করা, ডাটাবেস মাইগ্রেশন রান করা, এবং সিস্টেম হেলথ ডায়াগনস্টিকস চেক করা সম্ভব।" if current_lang == 'bn' else "The root cli.py script provides developer utilities. It lets you scaffold controllers, generate ORM models, inspect registered routes, health-check environmental requirements, and run database seeds instantly." }}
{{ "১২. CSRF প্রটেকশন ফর্মে কীভাবে কাজ করে?" if current_lang == 'bn' else "12. How does CSRF protection secure web forms?" }}
{{ "প্রতিটি ব্যবহারকারীর সেশনে একটি সিকিউর ক্রিপ্টোগ্রাফিক CSRF টোকেন জেনারেট হয়। HTML ফর্মে {{ csrf_field() }} ব্যবহার করলে একটি হিডেন ইনপুট ফিল্ড যুক্ত হয়। ফর্মে সাবমিট করা টোকেন এবং সেশনের টোকেন না মিললে মিডলওয়্যার রিকোয়েস্ট ব্লক করে দেয়।" if current_lang == 'bn' else "A unique cryptographic token is generated for every user session. Using {{ csrf_field() }} appends a hidden token to forms. Middleware matches it against the session token to prevent unauthorized cross-site requests." }}
{{ "১৩. ফাইল ও ইমেজ আপলোড করার ক্ষেত্রে কোড স্ট্রাকচার কেমন?" if current_lang == 'bn' else "13. How does PyFlow handle file and image uploads?" }}
{{ "PyFlow-র core/storage.py ফাইলে আপলোড ও স্টোরেজ হেল্পার রয়েছে। এর সাহায্যে ফাইল এক্সটেনশন সিকিউরিটি চেক, রেনাম করা, এবং ফাইলের আকার ভ্যালিডেট করে প্রজেক্টের public/uploads বা storage ডিরেক্টরিগুলোতে সহজে সেভ করা যায়।" if current_lang == 'bn' else "The core/storage.py library abstracts disk writes. It performs file extension verification, size validations, and unique renaming before storing uploads inside the public/uploads/ directories." }}
{{ "১৪. ডাটাবেস সিডার ও ফ্যাক্টরির ব্যবহারিক প্রয়োজনীয়তা কী?" if current_lang == 'bn' else "14. Why are Database Seeders and Factories useful?" }}
{{ "অ্যাপ্লিকেশন ডেভেলপমেন্টের শুরুর দিকে ডাটাবেজে টেস্ট বা ডামি ডাটার প্রয়োজন হয়। সিডার এবং ফ্যাক্টরি স্ক্রিপ্টের সাহায্যে লুপ চালিয়ে সেকেন্ডের মধ্যে হাজার হাজার ডামি ব্যবহারকারী, পণ্য বা ক্যাটাগরি ডাটাবেজে যুক্ত করে টেস্টিং করা সম্ভব।" if current_lang == 'bn' else "Factories and Seeders allow populating mock records for test runs. Using loops, developers can generate thousands of users or products dynamically within seconds in local and testing environments." }}
{{ "১৫. FastAPI এর রাউট কীভাবে আলাদা করে এপিআই হিসেবে ম্যাপ করা হয়েছে?" if current_lang == 'bn' else "15. How are FastAPI and PyFlow routes isolated?" }}
{{ "PyFlow এ ASGI-to-WSGI মিডলওয়্যার ব্রিজ রয়েছে। এর ফলে ইউজার যখন ব্রাউজারে /api দিয়ে কোনো রিকোয়েস্ট করেন, তখন গেটওয়ে ব্রিজের মাধ্যমে রিকোয়েস্টটি সরাসরি FastAPI এ চলে যায় এবং মূল এমভিসি রাউটের সাথে কোনো সংঘর্ষ ঘটে না।" if current_lang == 'bn' else "PyFlow uses a custom ASGI-to-WSGI gateway bridge. Requests under the /api/* paths bypass the WSGI core router and map directly to FastAPI endpoints for high-performance async processing." }}
{{ "১৬. প্রোডাকশনে ডেবাকবার বা ডিবাগ মোড বন্ধ করার নিয়ম কী?" if current_lang == 'bn' else "16. How do I disable debugging output for production?" }}
{{ "অ্যাপ্লিকেশন প্রোডাকশন বা সার্ভারে রিলিজ করার আগে আপনার .env ফাইলে APP_DEBUG=false করে দিন। এর ফলে কোড এরর হলে ব্রাউজারে বিস্তারিত ট্রেসব্যাক হাইড হয়ে যাবে এবং নিচের ডেভেলপার ডেবাকবার বা ফুটবার ডিবাগ প্যানেলটি স্বয়ংক্রিয়ভাবে মুছে যাবে।" if current_lang == 'bn' else "Before pushing to production, set APP_DEBUG=false inside .env. This hides execution traceback screens from end users and automatically turns off the debug footer bar in your views." }}
{{ "১৭. কাস্টম মিডলওয়্যার কীভাবে যুক্ত করব?" if current_lang == 'bn' else "17. How do I add custom middleware to routes?" }}
{{ "কাস্টম মিডলওয়্যার ক্লাস তৈরি করে core/middleware.py ফাইলে রেজিস্টার করতে হবে। এরপর config/routes.py ফাইলে রাউট ডিক্লারেশনের সময় middleware প্যারমিটারে রেজিস্টার করা ক্লাসের নাম পাস করলেই তা কার্যকর হবে।" if current_lang == 'bn' else "Create your middleware class inheriting Middleware, and register it inside core/middleware.py. Apply it to routes in config/routes.py by passing the middleware keyword inside route setups." }}
{{ "১৮. সিডিউলার বা ক্রন টাস্ক রান করানোর সঠিক পদ্ধতি কী?" if current_lang == 'bn' else "18. What is the process to run cron tasks via Scheduler?" }}
{{ "প্রথমে app/scheduler.py ফাইলে Scheduler.call() ব্যবহার করে আপনার টাস্ক রেজিস্টার করুন। এরপর লিনাক্স বা সার্ভারের ক্রনজবে প্রতি মিনিটে python scheduler_runner.py কমান্ডটি কল করার নিয়ম সেট করে দিলেই সিডিউলার স্বয়ংক্রিয়ভাবে টাস্ক চালাবে।" if current_lang == 'bn' else "Register tasks inside app/scheduler.py using Scheduler.call(). Run the daemon using python scheduler_runner.py or bind it to your system's crontab config to loop every minute." }}
{{ "১৯. কাস্টম SQL কুয়েরিতে ইনজেকশন ঠেকানোর মূল লজিক কী?" if current_lang == 'bn' else "19. How does PyFlow prevent SQL injection in raw queries?" }}
{{ "PyFlow-তে কোনো ভ্যালু সরাসরি SQL স্ট্রিংয়ের সাথে যুক্ত করতে দেয়া হয় না। placeholders (?) এবং প্যারামিটারাইজড কুয়েরি বাইন্ডিং ট্যাপল আকারে কানেকশন ড্রাইভারের execute() মেথডে পাঠানো হয়, যা ডাটাবেজ লেভেলে ইনজেকশন স্ক্রিপ্টিং ফিল্টার করে ফেলে।" if current_lang == 'bn' else "PyFlow wraps prepared statements. Parameters must be passed as a separate tuple to Database.execute() using placeholders, which prevents raw SQL string concatenations." }}
{{ "২০. ইউনিট টেস্ট ও টেস্টিং লাইব্রেরির কভারেজ বাড়ানোর নিয়ম কী?" if current_lang == 'bn' else "20. How do I run tests and increase coverage metrics?" }}
{{ "টেস্ট রান করতে python -m unittest discover -s tests কমান্ডটি ব্যবহার করুন। নতুন কোনো ফিচার যোগ করার সময় tests/ ফোল্ডারে একটি নির্দিষ্ট test_*.py ফাইল লিখে ফিচার ক্লাসের মেথডগুলোর পজিティブ ও নেগেটিভ রেসপন্স যাচাই করার মাধ্যমে টেস্ট কভারেজ বাড়ানো যায়।" if current_lang == 'bn' else "Execute python -m unittest discover -s tests to run unit tests. Write assertions inside tests/test_*.py to verify both valid inputs and exception cases of your new modules." }}
{{ "২১. JWT এবং API Key কীভাবে ডুয়াল মোডে কাজ করে?" if current_lang == 'bn' else "21. How do JWT and API Key dual-mode authentication work?" }}
{{ "FastAPI এন্ডপয়েন্টগুলো ডুয়াল অথেন্টিকেশন সমর্থন করে। কাস্টমার অ্যাপ থেকে রিকোয়েস্ট করার জন্য Bearer JWT টোকেন ব্যবহার করা যাবে, অথবা থার্ড-পার্টি সফটওয়্যারের সাথে বিটুবি কানেকশনের জন্য হেডার হিসেবে X-API-Key দিয়ে প্রজেক্টে ডাটা পাঠানো যাবে।" if current_lang == 'bn' else "FastAPI endpoints accept two auth flows: JWT Bearer Tokens for frontend client sessions and secure SHA-256 hashed API Keys (X-API-Key header) for machine-to-machine integrations." }}
{{ "২২. প্রজেক্টটি লিনাক্স ভিপিএস (Linux VPS) বা ক্লাউডে হোস্ট করার গাইডলাইন কী?" if current_lang == 'bn' else "22. What are the deployment guidelines for a Linux VPS or Cloud?" }}
{{ "প্রোডাকশন লিনাক্স ভিপিএস-এ প্রজেক্ট হোস্ট করতে Uvicorn বা Gunicorn (Uvicorn workers সহ) প্রসেস ম্যানেজার হিসেবে ব্যবহার করবেন। একে Nginx এর রিভার্স প্রক্সি দিয়ে বাইন্ড করতে হবে যাতে SSL সার্টিফিকেট এবং স্ট্যাটিক ফাইল হ্যান্ডেল করা সহজ হয়।" if current_lang == 'bn' else "Deploy on Linux using Gunicorn with Uvicorn workers behind an Nginx reverse proxy. Nginx handles static file assets and SSL certificates, while Gunicorn acts as the ASGI process manager." }}
{{ "২৩. PyFlow-তে কৃত্রিম বুদ্ধিমত্তা ও মেশিন লার্নিং (AI & ML) ব্যবহারের কী কী সুবিধা রয়েছে?" if current_lang == 'bn' else "23. What are the advantages of using AI & Machine Learning in PyFlow?" }}
{{ "যেহেতু PyFlow পাইথনে তৈরি, তাই Scikit-learn, TensorFlow বা PyTorch এর মতো বিশ্বের সব সেরা এআই লাইব্রেরি সরাসরি এর কন্ট্রোলারে প্লাগইন করা সম্ভব। এর সাহায্যে ই-কমার্স ইআরপিতে চাহিদার পূর্বাভাস (Demand Forecasting), হাসপাতালে ডায়াবেটিস ও হাইপারটেনশন রোগীদের ঝুকি পরিমাপ (Stroke Risk Prediction), এবং কাস্টম সেলস চ্যাটবট বা এআই সামারি তৈরিতে সরাসরি গুগল জেমিনি (Gemini API) ইন্টিগ্রেশন করা খুবই সহজ।" if current_lang == 'bn' else "Since PyFlow runs on Python, you can natively import premium AI modules like Scikit-learn, TensorFlow, or PyTorch inside controllers. This enables: (1) Sales forecasting in ERPs, (2) Disease risk scoring (diabetes/hypertension) in hospital tracking portals, and (3) Seamless Google Gemini API integrations for intelligent chatbots and automated medical summary generators." }}
{{ "২৪. পাইথনের ডাটা সায়েন্স ও অ্যানালিটিক্স দিয়ে আমাদের অ্যাপে কী কী কাজ করা যাবে?" if current_lang == 'bn' else "24. What analytics and data science tasks can be performed in PyFlow?" }}
{{ "Pandas, NumPy, Matplotlib এবং Seaborn ব্যবহার করে কোটি ডাটা দ্রুত প্রসেস ও ফিল্টার করা যাবে। যেমন—ই-কমার্সে কাস্টমার রিটেনশন (Cohort Analysis), ইনভেন্টরি পণ্য সুবিন্যস্ত করা (ABC Analysis), রোগীর ডেমোগ্রাফিক অ্যানালাইসিস এবং লাইভ এপিআই-র সাহায্যে Chart.js বা ApexCharts-এ রিয়েল-টাইম ইন্টারঅ্যাক্টিভ ড্যাশবোর্ড ও পিডিএফ রিপোর্ট জেনারেশন করা যাবে।" if current_lang == 'bn' else "Leveraging Pandas, NumPy, and visualization modules, developers can process millions of database rows effortlessly. Use cases include calculating customer cohort retention, inventory Pareto classifications (ABC), patient demographic reports, and rendering live interactive dashboards using Chart.js or automatic PDF reports." }}
{{ "২৫. ওয়েব স্ক্র্যাপিং ও অটোমেশন (Web Scraping & Automation) আমাদের কী উপকারে আসবে?" if current_lang == 'bn' else "25. How do Web Scraping & Automation benefit businesses in PyFlow?" }}
{{ "BeautifulSoup, Requests এবং Playwright/Selenium দিয়ে আমাদের প্রজেক্ট রোবটের মতো কাজ করতে পারবে। যেমন—প্রতিযোগীদের ওয়েবসাইট থেকে পণ্যের দাম স্ক্র্যাপ করে নিজের সাইটে ডাইনামিক প্রাইসিং সেট করা, সাপ্লায়ার ওয়েবসাইট থেকে তথ্য নিয়ে ক্যাটাগরি সাজানো, এবং টাস্ক সিডিউলার দিয়ে প্রতি সপ্তাহে ডিরেক্টর বা ডোনারদের কাছে অটো-মেইল পাঠানো।" if current_lang == 'bn' else "Using BeautifulSoup and Selenium/Playwright, PyFlow can automate online operations. This includes: (1) Scraping competitor platforms to dynamically match prices, (2) Auto-building catalog tables by extracting details from suppliers, and (3) Scheduling automatic weekly email dispatches to stakeholders via scheduler_runner.py." }}