توسعه بکاند وبسایت رادین صفری

توسعه زیرساخت بکاند، طراحی APIهای اختصاصی و پیادهسازی سیستم مدیریت محتوا
معرفی کوتاه
Radin Safari یک پلتفرم وب برای معرفی نمونهکارهای ویدیویی، ارائه محتوای آموزشی، انتشار مقالات تخصصی و مدیریت محتوای دیجیتال است. هدف این پروژه، ایجاد بستری یکپارچه برای مدیریت محتوا، کاربران، دورههای آموزشی و نمونهکارها از طریق یک زیرساخت اختصاصی و قابل توسعه بود.
در این پروژه، مسئولیت توسعه بکاند را بر عهده داشتم و بخشهای اصلی سرور، مدلهای پایگاه داده و APIهای موردنیاز وبسایت را پیادهسازی کردم.
وبسایت پروژه: radinsafari.ir
چالشهای پروژه
توسعه یک پلتفرم محتوایی با بخشهای مختلف، نیازمند طراحی ساختاری بود که بتواند دادهها و ارتباط میان ماژولها را بهصورت منظم مدیریت کند.
مهمترین چالشهای فنی عبارت بودند از:
- مدیریت دادههای مرتبط: طراحی روابط میان دورهها، فصلها، قسمتهای آموزشی، مقالات، مشتریان و نمونهکارها.
- کنترل دسترسی کاربران: پیادهسازی احراز هویت و تفکیک دسترسیها بر اساس نقش کاربران.
- مدیریت فایلهای حجیم: فراهمکردن امکان آپلود ویدیو و تصاویر با کنترل مصرف حافظه و اعتبارسنجی فایلها.
- مدیریت محتوای پویا: ایجاد APIهای لازم برای مدیریت بخشهای مختلف صفحه اصلی بدون نیاز به تغییر مستقیم کدهای فرانتاند.
- نگهداری و توسعهپذیری: مدیریت تغییرات پایگاه داده و اطمینان از عملکرد صحیح APIها با استفاده از تستهای خودکار.
راهکارهای پیادهسازیشده
۱. طراحی و توسعه RESTful API
با استفاده از FastAPI، APIهای موردنیاز برای مدیریت کاربران، دورههای آموزشی، وبلاگ، اعضای تیم، مشتریان، نمونهکارهای ویدیویی و محتوای صفحه اصلی توسعه داده شدند.
همچنین با تجمیع اطلاعات موردنیاز صفحه اصلی در یک endpoint، تعداد درخواستهای لازم برای دریافت این دادهها کاهش یافت.
۲. طراحی پایگاه داده
ساختار پایگاه داده با PostgreSQL و SQLAlchemy 2 طراحی شد. روابط میان موجودیتها و ساختار مدلها بهگونهای پیادهسازی شدند که مدیریت دادهها و توسعه قابلیتهای جدید سادهتر باشد.
برای مدیریت نسخههای ساختار دیتابیس و اعمال تغییرات آن نیز از Alembic استفاده شد.
۳. احراز هویت و کنترل دسترسی
سیستم احراز هویت مبتنی بر JWT پیادهسازی شد و قابلیت مدیریت کاربران، هش رمزهای عبور و کنترل دسترسی بر اساس نقشها در نظر گرفته شد.
۴. سیستم مدیریت محتوا و دورههای آموزشی
APIهای لازم برای مدیریت مقالات، دستهبندیها، تگها، دورهها، فصلها و قسمتهای آموزشی توسعه داده شدند. همچنین امکان مدیریت اعضای تیم، برندهای همکار و نمونهکارهای ویدیویی فراهم شد.
۵. آپلود امن فایلها
زیرساخت آپلود تصاویر و ویدیوها با پردازش جریانی فایلها توسعه داده شد تا از بارگذاری یکجای فایلهای حجیم در حافظه جلوگیری شود.
اعتبارسنجی نوع واقعی فایل و کنترل مسیر ذخیرهسازی نیز برای کاهش خطر فایلهای نامعتبر و حملات Path Traversal در نظر گرفته شدند.
۶. تست و کنترل کیفیت
برای بررسی عملکرد APIها و کاهش احتمال بروز خطا، مجموعهای شامل ۱۰۲ تست خودکار با Pytest و HTTPX تهیه شد. همچنین تغییرات ساختار دیتابیس با استفاده از مایگریشنهای Alembic مدیریت شدند.
تکنولوژیها و ابزارها
- Python و FastAPI: توسعه منطق بکاند و APIها
- PostgreSQL: ذخیرهسازی و مدیریت دادهها
- SQLAlchemy 2: مدلسازی و ارتباط با پایگاه داده
- Alembic: مدیریت مایگریشنهای دیتابیس
- Pydantic v2: اعتبارسنجی و ساختاردهی دادهها
- JWT و Bcrypt: احراز هویت و هش رمزهای عبور
- Pytest و HTTPX: تست خودکار APIها
- Git و GitHub: مدیریت نسخههای کد
نتیجه پروژه
با پیادهسازی زیرساخت بکاند، بخشهای اصلی مدیریت کاربران، محتوا، دورههای آموزشی، وبلاگ، نمونهکارها و فایلها در قالب APIهای اختصاصی فراهم شدند.
این ساختار، بستری منظم برای اتصال فرانتاند به سرویسهای بکاند ایجاد میکند و امکان نگهداری و توسعه قابلیتهای جدید را در آینده فراهم میسازد.
نقش من در پروژه: Backend Developer — طراحی پایگاه داده، توسعه APIها، پیادهسازی احراز هویت، توسعه سیستم آپلود و تست خودکار.
لینک پروژه: https://radinsafari.ir/