این پروژه، یک پروژه تمرینی برای یادگیری فریم ورک NestJs است و هدف از ساخت این پروژه، ساخت یک API برای یک بلاگ بود.
تقریبا تمام ویژگی هایی که از یک بلاگ ساده انتظار میرود در این پروژه پیاده سازی شده است و همچنین تا جایی که ممکن بود سعی شده نکات امنیتی مربوط به بکاند در این پروژه رعایت شود.
-
سیستم Authentication و Authorizatoin
-
دریافت اطلاعات مقاله ها همراه با دسته بندی های مربوطه و اطلاعات نویسنده آن
-
داشتن سیسستم RBAC برای کنترل بیشتر بر نقش ها و دسترسی های مختلف
-
رعایت کردن best practice ها و داشتن کدی بهینه
-
NestJs - یک چارچوب پیشرو Node.js برای ساخت برنامههای کاربردی، قابل اعتماد و مقیاسپذیر.
-
Prisma - Prisma سطح جدیدی از تجربه توسعه دهندگان را هنگام کار با پایگاه داده فراهم میکند
-
AccessControl - کنترل دسترسی مبتنی بر نقش و ویژگی برای Node.js
-
Typescript - TypeScript یک زبان برنامه نویسی استاتیک تایپ است که بر اساس جاوا اسکریپت ساخته شده است
ابتدا باید یک فایل به نام .env
در روت پروژه ساخته شود و پس از آن، متغیر هایی که در فایل .env.example
مشخص شده است را با مقادیر مناسب پر کنید
یک مثال واقعی از مقدار هایی که میتوان در فایل .env
وجود داشته باشد در زیر آمده است:
MYSQL_ROOT_PASSWORD = test
POSTGRES_USER = root
POSTGRES_PASSWORD = test
DATABASE_URL = mysql://root:test@localhost:3307/nest-blog?connect_timeout=300
ADMIN_USERNAME = admin
ADMIN_EMAIL = example@example.com
ADMIN_PASSWORD = 123456
نکته: این مقادیر فقط برای تست هستند و شما میتوانید این مقادیر را به دلخواه خودتان تغییر دهید
۱- حالت توسعه ۲- حالت پروداکشن
برای حالت توسعه نیاز است که بخش api از فایل docker-compose.yml
همانگونه که در زیر مشخص شده است کامنت شود.
اما برای حالت پروداکشن نیازی به کامنت کردن این بخش نیست
services:
# api:
# build:
# dockerfile: Dockerfile
# context:
# depends_on:
# - mysql
# environment:
# DATABASE_URL: ${DATABASE_URL}
# NODE_ENV: development
# PORT: 3000
# ports:
# - "5000:3000"
حال میتوانیم با اجرا کردن دستور docker-compose up
در ترمینال خود در حالی که در روت پروژه خود قرار داریم پروژه را ران کنیم.
اگر حالت پروداکشن را انتخاب نمودید و بخش api را از فایل docker-compose.yml
کامنت نکردید ، میتوانید این مرحله را نادیده بگیرید.
در غیر این صورت نیاز است که ترمینال دیگری در روت پروژه خود باز کنید و دستور yarn start:dev
را اجرا کنید.
-
Author - Mohammad Rezaei
-
Website - Moonfo.com
-
Twitter - @mmdrz003