پروژه آزاد API چند زبانه سایت فروشگاهی دارای بلاگ با Next.js
NexShop را برای این ساختم که یک بکاند آماده و قابل توسعه برای پروژههایی داشته باشم که هم بخش محتوا دارند و هم فروشگاه.
در پروژههای مختلف، بخش زیادی از کار همیشه تکراری است؛ احراز هویت، مدیریت کاربران و دسترسیها، مقاله و دستهبندی، محصولات و برندها، کامنتها، آپلود فایل و مدیریت دیتابیس. هدفم از ساخت NexShop این بود که این قسمتها یک بار به شکل تمیز و قابل استفاده پیادهسازی شوند و بعد بتوانم روی خود محصول تمرکز کنم.
NexShop یک Headless Backend است که با Next.js 16، TypeScript، Prisma و PostgreSQL ساخته شده و APIهای موردنیاز یک وبلاگ و فروشگاه را در اختیار فرانتاند یا اپلیکیشنهای مختلف قرار میدهد.
پشتیبانی از محتوای چندزبانه برای وبلاگ، محصولات و دستهبندیها
مدیریت مقاله، slug، تصویر شاخص، دستهبندی و تعداد بازدید
سیستم وضعیت مقاله (pending، approved و rejected)
مدیریت محصول، برند، تصاویر، مشخصات و اطلاعات
کامنتهای تو در تو و امکان پاسخ به کامنتها
سیستم تأیید و رد کامنتها و صف مدیریت برای ادمین
احراز هویت با Better Auth
Role-Based Authorization و دسترسیهای جداگانه برای کاربران و ادمین
آپلود فایل روی MinIO/S3 با Presigned URL
اعتبارسنجی درخواستها با Zod
Pagination برای APIهای لیستی
پاسخهای یکپارچه برای APIها و مدیریت متمرکز خطاها
Docker Compose برای اجرای سریع PostgreSQL و MinIO در محیط توسعه
یکی از چیزهایی که سعی کردم در طراحی پروژه رعایت کنم این است که routeهای API بیش از حد شلوغ نشوند. کنترلرها بیشتر مسئول HTTP هستند و منطق اصلی پروژه را در lib/api جدا کردهام تا اضافه کردن قابلیتهای جدید و نگهداری پروژه راحتتر باشد.
برای چندزبانه بودن هم بهجای قرار دادن ترجمهها داخل خود مدل اصلی، از translation table استفاده کردم. بنابراین میشود با ?lang=fa یا زبانهای دیگر محتوای موردنظر را دریافت کرد و اگر ترجمه موجود نباشد، سیستم به زبان پیشفرض و سپس اولین ترجمه موجود fallback میکند.
NexShop برای من فقط یک تمرین یا نمونه کد نیست؛ بخشهایی از آن بر اساس نیازهای واقعی یک backend قابل استفاده ساخته شدهاند.
با این حال، قطعاً کامل نیست و جا برای بهتر شدن دارد. یکی از دلایل اصلی انتشارش بهصورت متنباز همین است که بتوانم بازخورد توسعهدهندههای دیگر را هم ببینم.
اگر پروژه را بررسی کردید، نظرتان را برایم بنویسید. مخصوصاً اگر فکر میکنید معماری، APIها، ساختار دسترسیها یا هر بخش دیگری میتواند بهتر طراحی شود.
اگر از NexShop در پروژه خودتان استفاده کردید، خوشحال میشوم تجربهتان را با من و بقیه به اشتراک بگذارید.
⭐ اگر پروژه برایتان مفید بود، یک امتیاز یا Star میتواند حمایت خوبی از ادامه توسعه پروژه باشد.
💬 اگر ایرادی پیدا کردید یا قابلیت خاصی به نظرتان میرسد که باید اضافه شود، در کامنتها بنویسید.
🐛 باگها را هم حتماً گزارش کنید.
و اگر دوست داشتید مستقیماً در توسعه پروژه مشارکت کنید، میتوانید repository را Fork کنید و Pull Request بفرستید.
برای اینکه بتوانید نظرتان را درباره این پروژه ثبت کنید، باید وارد حساب کاربری خود شوید.
برای ادامه، وارد حساب خود شوید
بعد از ورود، دوباره به همین صفحه برمیگردید و میتوانید کامنتتان را ثبت کنید.
تجربهها و دیدگاههایی که بقیه دربارهی این پروژه ثبت کردهاند.
هنوز دیدگاهی برای این پروژه ثبت نشده — اولین نفر باش!