از صفر تا فیلیمو
چطور یک پلتفرم VOD حرفهای بسازیم؟
داستان تجربه من در ساخت یک پلتفرم فیلم و سریال مدرن — فراتر از وردپرس، با ساختاری قابل توسعه و سریع
داستان این پروژه
درود به همه! 👋
این مقاله داستان تجربه من در سال ۲۰۲۵ هست، زمانی که تصمیم گرفتم یه پلتفرم فیلم و سریال حرفهای و مدرن راه بندازم.
چرا؟ چون دیگه از دردسرهای همیشگی وردپرس خسته شده بودم... از افزونههای کند و ناسازگار، از محدودیتهای بیپایان، از کدهای کثیف PHP که هر روز بدتر میشد.
"اگر میخوای یه چیز درست بسازی، باید از اول شروع کنی"
اینجا یاد میگیرید چطور مثل فیلیمو، فیلمنت یا ۳۰نما، یک VOD واقعی بسازید.
من از همون اول میدونستم که فقط ساخت یه وبسایت فیلم مدنظرم نیست. هدفم این بود که یه زیرساخت مستقل برای فیلم و سریال درست کنم، تا بعدش بتونم هرچندتا سایت فیلم که بخوام، روی این دیتا سوار کنم.
یکی از اصلیترین مشکلات وردپرس این بود که برای هر پروژه جدید، باید از صفر شروع میکردم. ولی با این رویکرد، یهبار زیرساخت میسازم و میتونم برای مشتریهام VOD بسازم بدون نیاز به تکرار کد.
سیستم پشتی، اسکرایپر، پنل ادمین و همهچیز رو قابلتوسعه نگه میدارم. این یعنی وقتی یه ویژگی جدید اضافه میکنم، همه پروژههام از اون بهرهمند میشن.
چشمانداز پروژه
یک بار بساز، همیشه استفاده کن
🤖 جمعآوری هوشمند اطلاعات با Scraper
یکی از جذابترین قسمتهای این مسیر، ساختن یک Scraper Bot بود. رباتی که از IMDb یا TMDB اطلاعات فیلمها رو بگیره، و حتی بتونه لینکهای download از سایتهای مختلف رو جمع کنه.
چه اطلاعاتی جمعآوری میکنه؟
نه نیازی به نویسندهست، نه به کپیپیست کردن. یکبار براش زحمت میکشی، همیشه برات کار میکنه. دقیقاً مثل یه دستیار هوشمند که هیچوقت خسته نمیشه.
با استفاده از Playwright و Node.js، این ربات میتونه روزانه صدها فیلم رو پردازش کنه و اطلاعاتشون رو توی پایگاهداده ذخیره کنه. حتی میتونه به صورت خودکار فیلمهای جدید رو شناسایی کنه و اضافه کنه.
تکنولوژیهای استفاده شده
ابزارهای مدرن ۲۰۲۵ که واقعاً کار میکنن
Next.js 15
فریمورک SSR برای ساخت سریع سایت
TypeScript
ایمنی در کد و توسعه بلندمدت
PostgreSQL
پایگاهداده قدرتمند و قابل اعتماد
Tailwind CSS
UI ساده، قابل توسعه و مدرن
Playwright
ربات هوشمند جمعآوری اطلاعات
React
کتابخانه UI مدرن و انعطافپذیر
🧠 دیتابیس و ORM: قلب پروژه
برای دیتابیس، من همیشه طرفدار PostgreSQL بودم. چرا؟ چون قدرتمنده، مقیاسپذیره، و برای پروژههای بزرگ مناسبه. به خصوص وقتی صحبت از پلتفرم VOD میشه که ممکنه هزاران فیلم و کاربر داشته باشه.
و به جای Prisma، از DrizzleORM استفاده کردم. چون سبکتر، سریعتر و سادهتره، مخصوصاً برای پروژههایی که بهینه بودن براشون مهمه. Plus اینکه TypeScript support عالیای داره.
ساختار جداول اصلی:
یکی از مزایای DrizzleORM اینه که Type Safety کاملی داره. یعنی اگه توی کوئریهات اشتباه کنی، قبل از اجرا خبرت میده. این باعث میشه کد خیلی مطمئنتر و قابل اعتمادتر باشه.
مراحل پیادهسازی
از طراحی تا استقرار، قدم به قدم
طراحی معماری
ساختار Monorepo با TurboRepo و تفکیک پروژهها
پایگاهداده
طراحی جداول فیلم، کاربر، اشتراک با Drizzle ORM
Scraper Bot
ربات جمعآوری اطلاعات فیلم از منابع معتبر
پلیر ویدیو
ساخت پلیر کاستوم با react-player و کنترلهای پیشرفته
احراز هویت
سیستم عضویت، اشتراک، و کنترل دسترسی
استقرار
آپلود روی Vercel یا سرور اختصاصی
ساختار پروژه
معماری Monorepo با TurboRepo
apps/ ├── vod-main/ # سایت اصلی پخش فیلم ├── vod-admin/ # پنل مدیریت └── vod-other/ # میتونید بیش از یک سایت راه بندازید packages/ ├── db/ # پایگاهداده و Schema ├── bots/grabber/ # ربات جمعآوری اطلاعات ├── actions/ # عملیات مشترک └── auth/ # احراز هویت components/ ├── player/ # پلیر ویدیو ├── ui/ # رابط کاربری └── forms/ # فرمهای مشترک
📺 ساخت پلیر حرفهای و پخش آنلاین
برای پخش آنلاین فیلمها از react-player استفاده کردم. این کتابخانه فوقالعاده راحت میتونه MP4 پخش کنه، زیرنویس SRT لود کنه، و توی همه دیوایسها (موبایل، تبلت، دسکتاپ) بدرستی اجرا بشه.
ویژگیهای پلیر:
نیاز نیست حتماً استریم کنی. برای شروع، ساده پخش کردن MP4 از یه هاست معمولی هم جواب میده. ولی اگه خواستی حرفهایتر بشی، میتونی با FFmpegویدیوها رو به فرمت HLS تبدیل کنی و استریم کنی.
یکی از چیزهایی که خیلی مهمه، کنترل دسترسی به ویدیوهاست. یعنی فقط کاربرایی که اشتراک دارن بتونن فیلم ببینن. این رو میتونی با JWT token و middleware پیادهسازی کنی.
💾 فایلهای ویدیویی رو کجا نگه داریم؟
یکی از مهمترین تصمیماتی که باید بگیری، اینه که فایلهای ویدیو رو کجا نگه داری. من تجربه کردم و میتونم بگم که دو گزینه اصلی داری:
سرور اختصاصی
لینکهای خارجی
برای شروع، توصیهام استفاده از لینکهای خارجی هست. میتونی از CDNهای رایگان مثل "uprola"، تلگرام، یا حتی سایتهای فایلشرینگ استفاده کنی. بعداً که پروژهت رشد کرد، میتونی به سرور اختصاصی مهاجرت کنی.
🔐 احراز هویت و مدیریت کاربران
بخش احراز هویت یکی از حساسترین قسمتهای هر VOD است. باید اطمینان داشته باشی که فقط کاربران مجاز میتونن به محتوای پولی دسترسی داشته باشن. من از NextAuth و JWT استفاده کردم.
سیستم احراز هویت:
مراحل ثبتنام:
سطوح دسترسی:
نکته مهم اینه که برای هر فیلم یه middleware بنویسی که چک کنه کاربر اجازه دیدن اون فیلم رو داره یا نه. این کار باعث میشه امنیت سایتت بالا بره و فیلمهای پولی تو به صورت مستقیم قابل دسترسی نباشن.
همچنین یه سیستم گزارشگیری هم پیادهسازی کردم که نشون میده هر کاربر چند تا فیلم دیده، چقدر وقت آنلاین بوده، و کدام فیلمها رو بیشتر میبینه. این آمارها برای بهبود محتوا و درک رفتار کاربرا خیلی مفیده.
🚀 استقرار و راهاندازی نهایی
وقتی که کدنویسی تموم شد، نوبت میرسه به استقرار پروژه. برای چیزموو من از چند پلتفرم مختلف استفاده کردم و تجربهشون رو باهات به اشتراک میذارم:
Vercel (فرانتاند)
Railway (دیتابیس)
نکات مهم deploy:
در آخر، حتماً یه سیستم monitoring راهاندازی کن تا بدونی سایتت چطور کار میکنه. من از Google Analytics و Sentry استفاده کردم تا هم ترافیک رو رصد کنم و هم errorها رو بگیرم.
⚡ سئو و بهینهسازی سرعت
VOD پلتفرم موفق اونیه که تو گوگل پیدا بشه و سریع لود بشه. برای همین خیلی روی SEO و Performance کار کردم.
🔍 بهینهسازی SEO
⚡ بهینهسازی سرعت
نتایج بهینهسازی:
این نتایج باعث شد که چیزموو تو گوگل رتبه بالایی بگیره و کاربرا سریع تر بتونن فیلمها رو ببینن. یادت باشه که تو دنیای VOD، سرعت لود و SEO خیلی مهمه چون رقابت شدیده.
چرا این پروژه رو ساختم؟
چون باور دارم که هر کسی باید بتونه رویای خودش رو محقق کنه. بدون محدودیت، بدون وابستگی، بدون دردسر.
این پروژه نهتنها یه راهحل فنی هست، بلکه یه رویکرد جدید به ساخت پلتفرمهای مدرن. کدی که میفهمیش، تکنولوژی که بهش اعتماد داری، و نتیجهای که براش ارزش داری.
آمادهای شروع کنی؟
اگه جاییش براتون پیچیده بود، یا خواستید کمک بگیرید، من اینجام.
بیاید با هم یه چیز واقعی بسازیم.