283 lines
7.8 KiB
Markdown
283 lines
7.8 KiB
Markdown
|
|
# Hesabix - سیستم حسابداری جامع
|
|||
|
|
|
|||
|
|
Hesabix یک سیستم حسابداری کامل و مدرن است که شامل یک API قدرتمند (FastAPI + SQLAlchemy) و رابط کاربری زیبا (Flutter) میباشد. این سیستم برای مدیریت مالی کسبوکارهای کوچک و متوسط طراحی شده است.
|
|||
|
|
|
|||
|
|
## ویژگیهای اصلی
|
|||
|
|
|
|||
|
|
### 🚀 API Backend (hesabixAPI)
|
|||
|
|
- **FastAPI** - فریمورک مدرن و سریع برای ساخت API
|
|||
|
|
- **SQLAlchemy** - ORM قدرتمند برای مدیریت پایگاه داده
|
|||
|
|
- **MySQL** - پایگاه داده رابطهای قابل اعتماد
|
|||
|
|
- **Alembic** - مدیریت migration های پایگاه داده
|
|||
|
|
- **Pydantic** - اعتبارسنجی و سریالیزاسیون دادهها
|
|||
|
|
- **JWT Authentication** - سیستم احراز هویت امن
|
|||
|
|
- **Multi-language Support** - پشتیبانی از چندین زبان (فارسی/انگلیسی)
|
|||
|
|
- **Jalali Calendar** - تقویم شمسی برای کاربران ایرانی
|
|||
|
|
|
|||
|
|
### 📱 Frontend (hesabixUI)
|
|||
|
|
- **Flutter** - فریمورک کراسپلتفرم برای موبایل، وب و دسکتاپ
|
|||
|
|
- **Material Design** - رابط کاربری مدرن و زیبا
|
|||
|
|
- **Responsive Design** - سازگار با تمام اندازههای صفحه
|
|||
|
|
- **Multi-platform** - اجرا روی Android، iOS، Web و Desktop
|
|||
|
|
- **Persian Font Support** - پشتیبانی کامل از فونت فارسی (Vazirmatn)
|
|||
|
|
|
|||
|
|
## ساختار پروژه
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
hesabix/
|
|||
|
|
├── hesabixAPI/ # Backend API (FastAPI)
|
|||
|
|
│ ├── app/ # کد اصلی اپلیکیشن
|
|||
|
|
│ ├── adapters/ # لایههای دسترسی به داده
|
|||
|
|
│ ├── migrations/ # فایلهای migration پایگاه داده
|
|||
|
|
│ └── tests/ # تستهای واحد
|
|||
|
|
├── hesabixUI/ # Frontend (Flutter)
|
|||
|
|
│ └── hesabix_ui/ # پروژه Flutter اصلی
|
|||
|
|
├── docs/ # مستندات پروژه
|
|||
|
|
└── scripts/ # اسکریپتهای کمکی
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## پیشنیازها
|
|||
|
|
|
|||
|
|
### برای Backend (API)
|
|||
|
|
- Python 3.11+
|
|||
|
|
- MySQL 8.0+
|
|||
|
|
- pip (Python package manager)
|
|||
|
|
|
|||
|
|
### برای Frontend (UI)
|
|||
|
|
- Flutter SDK 3.9.2+
|
|||
|
|
- Dart SDK
|
|||
|
|
- Git
|
|||
|
|
|
|||
|
|
### برای Linux Desktop
|
|||
|
|
- GTK+ 3.0 development libraries
|
|||
|
|
- CMake
|
|||
|
|
- Ninja build system
|
|||
|
|
- C++ compiler (clang++ یا gcc)
|
|||
|
|
|
|||
|
|
## نصب و راهاندازی
|
|||
|
|
|
|||
|
|
### 1. کلون کردن پروژه
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git clone <repository-url>
|
|||
|
|
cd hesabix
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. راهاندازی Backend (API)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# ورود به دایرکتوری API
|
|||
|
|
cd hesabixAPI
|
|||
|
|
|
|||
|
|
# ایجاد محیط مجازی
|
|||
|
|
python3 -m venv .venv
|
|||
|
|
source .venv/bin/activate # در Windows: .venv\Scripts\activate
|
|||
|
|
|
|||
|
|
# نصب وابستگیها
|
|||
|
|
pip install -e .[dev]
|
|||
|
|
|
|||
|
|
# کپی کردن فایل تنظیمات
|
|||
|
|
cp env.example .env
|
|||
|
|
|
|||
|
|
# ویرایش فایل .env و تنظیم اطلاعات پایگاه داده
|
|||
|
|
# DB_USER=root
|
|||
|
|
# DB_PASSWORD=your_password
|
|||
|
|
# DB_HOST=localhost
|
|||
|
|
# DB_PORT=3306
|
|||
|
|
# DB_NAME=hesabixpy
|
|||
|
|
|
|||
|
|
# اجرای migration ها
|
|||
|
|
alembic upgrade head
|
|||
|
|
|
|||
|
|
# اجرای سرور API
|
|||
|
|
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. راهاندازی Frontend (UI)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# ورود به دایرکتوری UI
|
|||
|
|
cd hesabixUI/hesabix_ui
|
|||
|
|
|
|||
|
|
# نصب وابستگیها
|
|||
|
|
flutter pub get
|
|||
|
|
|
|||
|
|
# اجرای اپلیکیشن
|
|||
|
|
flutter run
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## اسکریپتهای کمکی
|
|||
|
|
|
|||
|
|
پروژه شامل چندین اسکریپت کمکی برای سهولت در استفاده است:
|
|||
|
|
|
|||
|
|
### اجرای API محلی
|
|||
|
|
```bash
|
|||
|
|
./run_local.sh serve # اجرای سرور API
|
|||
|
|
./run_local.sh migrate # اجرای migration ها
|
|||
|
|
./run_local.sh test # اجرای تستها
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### اجرای Flutter Web
|
|||
|
|
```bash
|
|||
|
|
./run_web.sh # اجرای وب اپلیکیشن
|
|||
|
|
./run_web.sh --port 8081 # اجرا روی پورت مشخص
|
|||
|
|
./run_web.sh --mode debug # اجرا در حالت debug
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### اجرای Flutter Linux Desktop
|
|||
|
|
```bash
|
|||
|
|
./run_linux.sh # اجرای دسکتاپ اپلیکیشن
|
|||
|
|
./run_linux.sh --mode release # اجرا در حالت release
|
|||
|
|
./run_linux.sh --clean # پاک کردن build و اجرای مجدد
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## تنظیمات محیط
|
|||
|
|
|
|||
|
|
### متغیرهای محیطی API (.env)
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# تنظیمات عمومی
|
|||
|
|
APP_NAME=Hesabix API
|
|||
|
|
ENVIRONMENT=development
|
|||
|
|
DEBUG=true
|
|||
|
|
API_V1_PREFIX=/api/v1
|
|||
|
|
APP_VERSION=0.1.0
|
|||
|
|
|
|||
|
|
# پایگاه داده
|
|||
|
|
DB_USER=root
|
|||
|
|
DB_PASSWORD=your_password
|
|||
|
|
DB_HOST=localhost
|
|||
|
|
DB_PORT=3306
|
|||
|
|
DB_NAME=hesabixpy
|
|||
|
|
SQLALCHEMY_ECHO=false
|
|||
|
|
|
|||
|
|
# لاگگیری
|
|||
|
|
LOG_LEVEL=INFO
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### تنظیمات Flutter
|
|||
|
|
|
|||
|
|
برای تنظیم آدرس API در Flutter، از متغیر محیطی استفاده کنید:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
flutter run --dart-define API_BASE_URL=http://localhost:8000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## API Endpoints
|
|||
|
|
|
|||
|
|
### احراز هویت
|
|||
|
|
- `POST /api/v1/auth/login` - ورود کاربر
|
|||
|
|
- `POST /api/v1/auth/register` - ثبت نام کاربر
|
|||
|
|
- `POST /api/v1/auth/refresh` - تمدید توکن
|
|||
|
|
|
|||
|
|
### سلامت سیستم
|
|||
|
|
- `GET /api/v1/health` - بررسی وضعیت API
|
|||
|
|
|
|||
|
|
### کسبوکار
|
|||
|
|
- `GET /api/v1/businesses` - لیست کسبوکارها
|
|||
|
|
- `POST /api/v1/businesses` - ایجاد کسبوکار جدید
|
|||
|
|
- `PUT /api/v1/businesses/{id}` - ویرایش کسبوکار
|
|||
|
|
|
|||
|
|
### محصولات
|
|||
|
|
- `GET /api/v1/products` - لیست محصولات
|
|||
|
|
- `POST /api/v1/products` - ایجاد محصول جدید
|
|||
|
|
- `PUT /api/v1/products/{id}` - ویرایش محصول
|
|||
|
|
|
|||
|
|
### فاکتورها و پرداختها
|
|||
|
|
- `GET /api/v1/receipts` - لیست فاکتورها
|
|||
|
|
- `POST /api/v1/receipts` - ایجاد فاکتور جدید
|
|||
|
|
- `GET /api/v1/payments` - لیست پرداختها
|
|||
|
|
|
|||
|
|
## ویژگیهای خاص
|
|||
|
|
|
|||
|
|
### تقویم شمسی
|
|||
|
|
سیستم از تقویم شمسی پشتیبانی کامل میکند و تمام تاریخها به صورت خودکار تبدیل میشوند.
|
|||
|
|
|
|||
|
|
### چندزبانه
|
|||
|
|
- پشتیبانی از زبانهای فارسی و انگلیسی
|
|||
|
|
- امکان اضافه کردن زبانهای جدید
|
|||
|
|
- ترجمه خودکار رابط کاربری
|
|||
|
|
|
|||
|
|
### امنیت
|
|||
|
|
- احراز هویت JWT
|
|||
|
|
- رمزگذاری رمز عبور با Argon2
|
|||
|
|
- اعتبارسنجی ورودیها
|
|||
|
|
- محافظت در برابر SQL Injection
|
|||
|
|
|
|||
|
|
## توسعه و مشارکت
|
|||
|
|
|
|||
|
|
### اجرای تستها
|
|||
|
|
```bash
|
|||
|
|
# تستهای Backend
|
|||
|
|
cd hesabixAPI
|
|||
|
|
pytest
|
|||
|
|
|
|||
|
|
# تستهای Frontend
|
|||
|
|
cd hesabixUI/hesabix_ui
|
|||
|
|
flutter test
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### کد استایل
|
|||
|
|
```bash
|
|||
|
|
# Backend
|
|||
|
|
black .
|
|||
|
|
ruff check .
|
|||
|
|
|
|||
|
|
# Frontend
|
|||
|
|
flutter analyze
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### ساخت برای تولید
|
|||
|
|
```bash
|
|||
|
|
# ساخت API
|
|||
|
|
cd hesabixAPI
|
|||
|
|
pip install -e .
|
|||
|
|
|
|||
|
|
# ساخت Flutter
|
|||
|
|
cd hesabixUI/hesabix_ui
|
|||
|
|
flutter build web
|
|||
|
|
flutter build linux
|
|||
|
|
flutter build apk
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## عیبیابی
|
|||
|
|
|
|||
|
|
### مشکلات رایج
|
|||
|
|
|
|||
|
|
1. **خطای اتصال به پایگاه داده**
|
|||
|
|
- بررسی تنظیمات .env
|
|||
|
|
- اطمینان از اجرای MySQL
|
|||
|
|
- بررسی دسترسیهای کاربر
|
|||
|
|
|
|||
|
|
2. **مشکلات Flutter**
|
|||
|
|
- اجرای `flutter clean`
|
|||
|
|
- حذف پوشه build
|
|||
|
|
- اجرای مجدد `flutter pub get`
|
|||
|
|
|
|||
|
|
3. **مشکلات Linux Desktop**
|
|||
|
|
- نصب وابستگیهای مورد نیاز
|
|||
|
|
- استفاده از اسکریپت `run_linux.sh`
|
|||
|
|
|
|||
|
|
### لاگها
|
|||
|
|
- API logs: در کنسول سرور نمایش داده میشوند
|
|||
|
|
- Flutter logs: با `flutter logs` قابل مشاهده است
|
|||
|
|
|
|||
|
|
## مجوز
|
|||
|
|
|
|||
|
|
این پروژه تحت مجوز [MIT License](LICENSE) منتشر شده است.
|
|||
|
|
|
|||
|
|
## پشتیبانی
|
|||
|
|
|
|||
|
|
برای گزارش باگ یا درخواست ویژگی جدید، لطفاً issue جدیدی در repository ایجاد کنید.
|
|||
|
|
|
|||
|
|
## تیم توسعه
|
|||
|
|
|
|||
|
|
- **Backend**: FastAPI + SQLAlchemy + MySQL
|
|||
|
|
- **Frontend**: Flutter + Material Design
|
|||
|
|
- **DevOps**: Docker + Scripts
|
|||
|
|
- **Documentation**: Markdown + Persian
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Hesabix** - سیستم حسابداری مدرن برای کسبوکارهای ایرانی 🇮🇷
|