vernova/INSTALL.md
2026-07-26 19:58:27 +03:30

8.3 KiB
Raw Blame History

🏗️ Projectra - راهنمای نصب و راه‌اندازی

پیش‌نیازها

قبل از شروع، مطمئن شوید این نرم‌افزارها روی سیستم شما نصب هستند:

نرم‌افزار حداقل نسخه بررسی
PHP 8.2+ php -v
Composer 2.x composer --version
Node.js 18+ node -v
npm/bun هر دو قابل استفاده‌اند npm -v
MySQL 8.0+ / MariaDB 10.6+ mysql --version
Git 2.x git --version

اکستنشن‌های PHP مورد نیاز:

php -m | grep -E "intl|pdo|mbstring|xml|curl|openssl|fileinfo"

باید شامل: intl, pdo_mysql, mbstring, simplexml, curl, openssl, fileinfo


مرحله ۱: ساخت پروژه Laravel

# ساخت پروژه جدید Laravel
composer create-project laravel/laravel projectra
cd projectra

مرحله ۲: کپی فایل‌های Projectra

فایل‌های ZIP دانلود شده را Extract کنید و فقط پوشه‌ها و فایل‌های زیر را در پروژه Laravel کپی کنید:

فایل‌های ریشه (جایگزین کنید):

composer.json
package.json
vite.config.js
tailwind.config.js
postcss.config.js
.env.example

پوشه app/ (جایگزین کنید):

app/Http/Controllers/
app/Http/Middleware/
app/Http/Requests/
app/Http/Kernel.php
app/Models/
app/Helpers/
app/Policies/
app/Providers/AppServiceProvider.php
app/Providers/BladeServiceProvider.php

پوشه‌های دیگر:

config/projectra.php
config/projectra_app_additions.php
database/migrations/
database/seeders/
resources/views/
resources/lang/
resources/css/
resources/js/
routes/web.php
routes/api.php
public/logo.svg

مرحله ۳: نصب وابستگی‌ها

# نصب پکیج‌های PHP
composer install

# نصب پکیج‌های Frontend
npm install

مرحله ۴: تنظیم محیط

# کپی فایل env
cp .env.example .env

# ساخت کلید اپلیکیشن
php artisan key:generate

فایل .env را باز کنید و تنظیمات دیتابیس را وارد کنید:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=projectra
DB_USERNAME=root
DB_PASSWORD=your_password

مرحله ۵: تنظیمات اضافی config/app.php

فایل config/app.php را باز کنید و تغییرات زیر را اعمال کنید:

اضافه کردن Providers:

'providers' => [
    // ... existing providers ...
    
    // Projectra additions
    Spatie\Permission\PermissionServiceProvider::class,
    Morilog\Jalali\JalaliServiceProvider::class,
    Maatwebsite\Excel\ExcelServiceProvider::class,
    Barryvdh\DomPDF\ServiceProvider::class,
    App\Providers\BladeServiceProvider::class,
],

اضافه کردن Aliases:

'aliases' => [
    // ... existing aliases ...
    
    // Projectra additions
    'Jalali' => Morilog\Jalali\JalaliFacade::class,
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
    'PDF' => Barryvdh\DomPDF\Facade\Pdf::class,
],

تنظیم locale پیش‌فرض:

'locale' => env('APP_LOCALE', 'fa'),
'fallback_locale' => 'en',

مرحله ۶: تنظیم composer.json

فایل composer.json را باز کنید و در بخش autoload اضافه کنید:

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Database\\Factories\\": "database/factories/",
        "Database\\Seeders\\": "database/seeders/"
    },
    "files": [
        "app/Helpers/helpers.php"
    ]
},

سپس:

composer dump-autoload

مرحله ۷: ساخت دیتابیس

# ورود به MySQL
mysql -u root -p

# ساخت دیتابیس
CREATE DATABASE projectra CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EXIT;

مرحله ۸: اجرای Migration و Seeder

# اجرای Migrationها
php artisan migrate

# اجرای Seeder (داده نمونه)
php artisan db:seed

مرحله ۹: ساخت Assetها

# ساخت CSS/JS برای توسعه
npm run dev

# یا برای تولید
npm run build

مرحله ۱۰: اجرای پروژه

php artisan serve

پروژه در آدرس http://localhost:8000 در دسترس خواهد بود.


👤 حساب‌های پیش‌فرض (بعد از db:seed)

نقش ایمیل رمز عبور Tenant
Super Admin admin@projectra.ir password -
Admin (سازندگی سپید) admin@sepideh.ir password سازندگی سپید
Project Manager manager@sepideh.ir password سازندگی سپید
Admin (Global) admin@global.com password Global Construction

⚠️ رمز عبور‌ها را حتماً بعد از نصب تغییر دهید!


📁 ساختار پوشه‌ها

projectra/
├── app/
│   ├── Http/
│   │   ├── Controllers/     ← ۸ کنترلر
│   │   ├── Middleware/       ← ۳ میدلور (SetTenant, SetLocale, TenantScope)
│   │   ├── Requests/         ← ۴ Form Request
│   │   └── Kernel.php
│   ├── Models/              ← ۱۹ مدل Eloquent
│   ├── Helpers/             ← ۵ فایل Helper (Jalali, Number, Currency, Calendar, helpers)
│   ├── Policies/            ← ۴ Policy
│   └── Providers/           ← AppServiceProvider + BladeServiceProvider
├── config/
│   └── projectra.php        ← تنظیمات اختصاصی Projectra
├── database/
│   ├── migrations/          ← ۲۰ Migration
│   └── seeders/             ← ۹ Seeder
├── resources/
│   ├── views/               ← ۱۸ Blade Template
│   │   ├── layouts/         ← app, sidebar, header
│   │   ├── dashboard/       ← داشبورد اصلی
│   │   ├── projects/        ← لیست، فرم، جزئیات
│   │   ├── tasks/           ← لیست، فرم
│   │   ├── employees/       ← لیست، فرم
│   │   ├── expenses/        ← لیست، فرم
│   │   ├── auth/            ← صفحه ورود
│   │   └── components/      ← status-badge, localized-date, currency-display, priority-badge
│   ├── lang/
│   │   ├── fa.json          ← ۱۱۲ کلید فارسی
│   │   └── en.json          ← ۱۱۲ کلید انگلیسی
│   ├── css/
│   └── js/
└── routes/
    ├── web.php              ← مسیرهای وب
    └── api.php              ← مسیرهای API

🔧 قابلیت‌های بین‌المللی‌سازی (i18n)

Blade Directiveها:

@localizeNumber(1234567)           ← ۱,۲۳۴,۵۶۷ (فارسی) / 1,234,567 (انگلیسی)
@localizeDate($date)               ← ۱۴۰۴/۰۳/۰۵ (شمسی) / 2025/05/26 (میلادی)
@localizeCurrency(45000000, 'IRR') ← ۴۵,۰۰۰,۰۰۰ ﷼
@direction                         ← rtl یا ltr
@isRtl ... @endIsRtl              ← بلوک شرطی RTL

Helper Functionها:

jalali_date($date)              // تبدیل به شمسی
persian_num(12345)              // ۱۲۳۴۵
format_currency(45000000, 'IRR')// ۴۵,۰۰۰,۰۰۰format_number(1234567)          // ۱,۲۳۴,۵۶۷
calendar_date($date)            // تاریخ بر اساس تقویم فعلی
get_direction()                 // 'rtl' یا 'ltr'

اولویت زبان/تقویم:

کاربر (User) → Tenant → Session → مرورگر → پیش‌فرض سیستم

مشکلات رایج

1. خطای "Class not found"

composer dump-autoload

2. خطای permission در storage

chmod -R 775 storage bootstrap/cache

3. خطای اکستنشن intl

# Ubuntu
sudo apt-get install php8.2-intl

# macOS
brew install php@8.2

4. مشکل Vite

npm install && npm run build

📞 پشتیبانی

  • مستندات پروژه: پوشه upload/ (اسناد ۱ تا ۱۱)
  • لاگ تغییرات: worklog.md

نسخه: MVP (Phase 0)
تاریخ: ۱۴۰۴/۰۳/۰۶
تکنولوژی: Laravel 11 + Blade + Tailwind CSS + Alpine.js