پرش به محتویات

نحوه کارکرد پن‌پاتیفای

در این بخش می‌آموزید که پن‌پاتیفای چگونه کار می‌کند و چه تکنولوژی‌هایی استفاده می‌کند.

معماری کلی

پن‌پاتیفای بر اساس Penpot ساخته شده که یک ابزار طراحی اوپن‌سورس است. ما آن را با استفاده از Docker بسته‌بندی کرده‌ایم تا نصب و راه‌اندازی آسان شود.

معماری Docker

Penpot با Docker کار می‌کند. یعنی همه چیز داخل کانتینرهای جداگانه اجرا می‌شود:

┌─────────────────────────────────────┐
│         Docker Compose              │
├─────────────────────────────────────┤
│  ┌──────────┐  ┌──────────┐        │
│  │ Frontend │  │ Backend  │        │
│  │ (React)  │  │(Clojure) │        │
│  └──────────┘  └──────────┘        │
│                                     │
│  ┌──────────┐  ┌──────────┐        │
│  │PostgreSQL│  │  Redis   │        │
│  │ Database │  │  Cache   │        │
│  └──────────┘  └──────────┘        │
│                                     │
│  ┌──────────────────────────────┐   │
│  │      Storage Volumes         │   │
│  │   (داده‌های شما)            │   │
│  └──────────────────────────────┘   │
└─────────────────────────────────────┘

اجزای اصلی

۱. Frontend (رابط کاربری)

  • تکنولوژی: React + ClojureScript
  • وظیفه: رابط کاربری که شما می‌بینید
  • پورت: 9001
  • کانتینر: penpot-frontend

این همان چیزی است که در مرورگر می‌بینید — ابزار طراحی، منوها، و همه چیز.

۲. Backend (سرور)

  • تکنولوژی: Clojure
  • وظیفه: پردازش درخواست‌ها، مدیریت داده‌ها
  • کانتینر: penpot-backend

تمام منطق برنامه، API، و پردازش داده‌ها در اینجا انجام می‌شود.

۳. PostgreSQL (پایگاه داده)

  • وظیفه: ذخیره اطلاعات کاربران، پروژه‌ها، تنظیمات
  • کانتینر: penpot-postgres

تمام داده‌های ساختاریافته (مثل اطلاعات کاربر، پروژه‌ها) در اینجا ذخیره می‌شود.

۴. Redis (کش)

  • وظیفه: ذخیره موقت داده‌ها برای سرعت بیشتر
  • کانتینر: penpot-redis

برای بهبود عملکرد و سرعت، برخی داده‌ها در Redis ذخیره می‌شوند.

۵. Storage Volumes (ذخیره‌سازی)

  • وظیفه: ذخیره فایل‌های طراحی، تصاویر، و داده‌های بزرگ
  • مکان: پوشه volumes روی کامپیوتر شما

تمام فایل‌های طراحی شما در اینجا ذخیره می‌شوند.

جریان کار

۱. راه‌اندازی

وقتی docker compose up -d را اجرا می‌کنید:

  1. Docker ایمیج‌ها را دانلود می‌کند (اگر موجود نباشند)
  2. کانتینرها را می‌سازد
  3. شبکه داخلی بین کانتینرها برقرار می‌کند
  4. سرویس‌ها را راه‌اندازی می‌کند
  5. همه چیز آماده استفاده می‌شود

۲. دسترسی کاربر

وقتی به http://localhost:9001 می‌روید:

  1. مرورگر → درخواست به Frontend می‌فرستد
  2. Frontend → درخواست را به Backend می‌فرستد
  3. Backend → داده‌ها را از PostgreSQL می‌خواند
  4. Backend → پاسخ را به Frontend برمی‌گرداند
  5. Frontend → صفحه را نمایش می‌دهد

۳. ذخیره پروژه

وقتی یک پروژه را ذخیره می‌کنید:

  1. Frontend → داده‌های پروژه را به Backend می‌فرستد
  2. Backend → اطلاعات را در PostgreSQL ذخیره می‌کند
  3. Backend → فایل‌های بزرگ را در Storage Volumes ذخیره می‌کند
  4. Backend → تأیید را به Frontend برمی‌گرداند
  5. Frontend → پیام "ذخیره شد" را نمایش می‌دهد

مزایای این معماری

✅ نصب آسان

  • فقط یک دستور: docker compose up -d
  • همه چیز خودکار نصب می‌شود
  • نیازی به تنظیمات پیچیده نیست

✅ به‌روزرسانی ساده

docker compose pull
docker compose up -d

همه چیز به‌روز می‌شود!

✅ داده‌ها امن و محلی

  • تمام داده‌ها روی کامپیوتر شماست
  • هیچ داده‌ای به اینترنت ارسال نمی‌شود
  • کنترل کامل روی داده‌هایتان دارید

✅ کاملاً آفلاین

  • بعد از نصب اولیه، نیازی به اینترنت نیست
  • حتی می‌توانید از بسته آفلاین استفاده کنید
  • کار می‌کند حتی اگر اینترنت کاملاً قطع باشد

✅ قابل حمل

  • می‌توانید volumes را کپی کنید
  • روی هر کامپیوتری کار می‌کند
  • می‌توانید به سرور دیگر منتقل کنید

✅ ایزوله و امن

  • هر سرویس در کانتینر جداگانه است
  • اگر یک سرویس مشکل داشته باشد، بقیه کار می‌کنند
  • امنیت بیشتر

نحوه ذخیره‌سازی داده‌ها

داده‌های ساختاریافته

در PostgreSQL ذخیره می‌شوند: - اطلاعات کاربران - پروژه‌ها و فولدرها - تنظیمات - کامنت‌ها و بازخوردها

فایل‌های بزرگ

در Storage Volumes ذخیره می‌شوند: - فایل‌های طراحی - تصاویر و دارایی‌ها - اکسپورت‌ها

داده‌های موقت

در Redis ذخیره می‌شوند: - session ها - کش داده‌ها - داده‌های موقت

عملکرد و بهینه‌سازی

کش‌گذاری

  • داده‌های پرکاربرد در Redis کش می‌شوند
  • سرعت دسترسی بیشتر می‌شود

بهینه‌سازی پایگاه داده

  • PostgreSQL برای داده‌های ساختاریافته بهینه است
  • Index ها برای جستجوی سریع

مدیریت حافظه

  • هر کانتینر حافظه محدود دارد
  • می‌توانید محدودیت‌ها را تنظیم کنید

امنیت

ایزوله‌سازی

  • هر سرویس در کانتینر جداگانه است
  • دسترسی محدود بین کانتینرها

شبکه داخلی

  • کانتینرها از طریق شبکه داخلی Docker ارتباط برقرار می‌کنند
  • فقط پورت 9001 به بیرون باز است

داده‌های محلی

  • تمام داده‌ها روی کامپیوتر شماست
  • هیچ داده‌ای به اینترنت ارسال نمی‌شود

مقیاس‌پذیری

برای استفاده شخصی

  • یک کانتینر از هر سرویس کافی است
  • نیاز به منابع کم

برای تیم

  • می‌توانید منابع را افزایش دهید
  • می‌توانید چند instance از Backend اجرا کنید
  • می‌توانید از load balancer استفاده کنید

عیب‌یابی

بررسی وضعیت

docker compose ps

بررسی لاگ‌ها

docker compose logs

بررسی استفاده از منابع

docker stats

خلاصه

پن‌پاتیفای با استفاده از Docker و Penpot، یک راه‌حل قدرتمند و آفلاین برای طراحی ارائه می‌دهد. معماری مبتنی بر کانتینر باعث می‌شود که:

  • نصب و راه‌اندازی آسان باشد
  • به‌روزرسانی ساده باشد
  • داده‌ها امن و محلی باشند
  • کاملاً آفلاین کار کند
  • قابل حمل و مقیاس‌پذیر باشد

سوالی دارید؟ به بخش سوالات متداول یا عیب‌یابی مراجعه کنید.