# Flask Chat Project
این پروژه یک چتروم آنلاین ساده و مدرن با استفاده از فریمورک Flask و Socket.IO است که امکانات زیر را فراهم میکند:
- ثبتنام و ورود کاربران
- ساخت و مدیریت اتاقهای چت
- چت آنلاین و ارسال پیامها در زمان واقعی
- پنل مدیریت برای مدیریت کاربران و اتاقها
- قابلیت تنظیم زمان حذف اتاقها از طریق پنل تنظیمات
- طراحی مدرن و ریسپانسیو با استفاده از Bootstrap
---
## شروع سریع (Quick Start)
### پیشنیازها
- Python 3.8 یا بالاتر
- pip برای نصب پکیجها
---
### نصب و راهاندازی
1. مخزن پروژه را کلون کنید:
```bash
git clone <repository_url>
cd flask_chat_project
- نصب وابستگیها:
pip install -r requirements.txt
- اجرای پروژه در محیط محلی:
export FLASK_APP=app.py
export FLASK_ENV=development
flask run
یا
python app.py
- اطمینان حاصل کنید که
Procfile
شامل دستور زیر است:
web: gunicorn -k eventlet -w 1 app:app --bind 0.0.0.0:$PORT
- تنظیم متغیر محیطی
DATABASE_URL
در پنل رندر (برای اتصال به دیتابیس). - رندر خودش متغیر محیطی
PORT
را به برنامه میدهد و برنامه باید روی این پورت گوش دهد. - دقت کنید که در
app.py
پورت را اینگونه بگیرید:
import os
port = int(os.environ.get('PORT', 5000))
socketio.run(app, host='0.0.0.0', port=port)
flask_chat_project/
│
├── app.py # فایل اصلی برنامه و اجرای Socket.IO
├── models.py # مدلهای دیتابیس (User, Room, Message)
├── routes.py # تعریف تمام مسیرها و لاجیکهای Flask
│
├── templates/ # قالبهای HTML
├── static/ # فایلهای استایل و جاوااسکریپت
│
├── requirements.txt # پکیجهای مورد نیاز
├── Procfile # دستور اجرای برنامه روی Render
├── README.md # این فایل مستندات
- استفاده از دیتابیس: پروژه به یک دیتابیس متصل است که آدرس آن باید در متغیر محیطی
DATABASE_URL
تعریف شود. - پورت داینامیک: روی Render پورت به صورت داینامیک از متغیر محیطی
PORT
خوانده میشود. - Socket.IO: برای عملکرد صحیح وبسرویس باید از Gunicorn با worker
eventlet
استفاده شود (همانطور که در Procfile هست). - امنیت: در تولید از کلید محرمانه قوی (
SECRET_KEY
) استفاده کنید. - زمان حذف روم: از پنل مدیریت قابل تنظیم است.
- اضافه کردن امکانات بیشتر به پنل مدیریت
- بهینهسازی UI و UX
- پشتیبانی از پیامهای چندرسانهای
- اضافه کردن قابلیتهای امنیتی بیشتر
چگونه میتوانم دیتابیس را تغییر دهم؟
آدرس دیتابیس را در متغیر محیطی DATABASE_URL
تنظیم کنید.
آیا میتوانم پروژه را روی سرور دیگری اجرا کنم؟
بله، کافی است پورت را متناسب با سرور تنظیم کرده و Procfile
را با دستور مناسب اصلاح کنید.
اگر سوالی دارید یا به کمک نیاز دارید، خوشحال میشوم کمکتان کنم.
*موفق باشید!