درسهای آموختهشده در ساخت POS Lite
من ساخت POS Lite را تمام کردم؛ یک سیستم کامل (full stack) نقطه فروش برای کسبوکارهای کوچک. قبلاً معماری و نحوه استقرار (deployment) آن را به اشتراک گذاشتم. حالا میخواهم آنچه یاد گرفتهام را به اشتراک بگذارم.
ساخت یک پروژه واقعی با دنبال کردن یک آموزش متفاوت است. آموزشها تصمیمات را برای شما میگیرند. پروژههای واقعی شما را مجبور به انتخاب کردن میکنند.
شما باید تصمیم بگیرید:
- چگونه کد را ساختاردهی کنید
- کدام ویژگیها را ابتدا بسازید
- چگونه فرانتاند (frontend) با بکاند (backend) ارتباط برقرار میکند
- چگونه احراز هویت (authentication) را مدیریت کنید
- چگونه دادهها را ذخیره کنید
- چگونه اپلیکیشن را مستقر (deploy) کنید
در اینجا نکات اصلی من آمده است:
کمالگرایی سرعت شما را کم میکند منتظر یک معماری یا UI بینقص نباشید. با یک نسخه قابل اجرا شروع کنید. مرحله به مرحله آن را بهبود ببخشید. برای مثال، ابتدا ماژول محصول را راه بیندازید. سپس اعتبارسنجی (validation) را اضافه کنید. سپس موجودی کالا (inventory) را متصل کنید. پیروزیهای کوچک منجر به یک محصول نهایی میشوند.
با رشد پروژه، ساختار اهمیت پیدا میکند مدیریت یک بکاند کوچک آسان است. یک بکاند بزرگ به سازماندهی نیاز دارد. من از یک ساختار لایهای برای منظم ماندن استفاده کردم:
- Controller: مدیریت درخواستهای HTTP
- Service: شامل منطق تجاری (business logic)
- Repository: ارتباط با پایگاه داده
احراز هویت پیچیده است احراز هویت چیزی فراتر از یک فرم ورود است. این فرآیند شامل اعتبارسنجی مدارک، تولید توکنها، محافظت از مسیرها (routes) و مدیریت دسترسی کاربران است. استفاده از JWT به من کمک کرد تا ببینم امنیت چگونه فرانتاند را به بکاند متصل میکند.
UX یعنی کاربردی بودن فرانتاند فقط مربوط به ظاهر نیست. کاربران نیاز دارند محصولات را جستجو کنند، فروش را ثبت کنند و گزارشها را سریع مشاهده کنند. یک رابط کاربری کاربردی بهتر از یک رابط کاربری زیباست.
استقرار (Deployment) یک مهندسی است انتقال از توسعه محلی (local development) به ابر (cloud)، مشکلات جدیدی را آشکار میکند. شما با خطاهای CORS، مشکلات متغیرهای محیطی (environment variables) و وظایف تنظیم DNS مواجه خواهید شد. استقرار یک مرحله نهایی نیست، بلکه بخش اصلی فرآیند است.
اشتباهات، درس هستند خطاهای کوچک، درسهای بزرگی میآموزند. یک متغیر محیطی مفقود شده یا یک پورت اشتباه میتواند همه چیز را از کار بیندازد. این باگها به من یاد دادند که با دقت بیشتری عیبیابی (debug) کنم.
توصیه من برای پروژه خودتان:
- چیزی واقعبینانه بسازید
- کوچک شروع کنید
- یک نسخه قابل اجرا را تمام کنید
- آن را ذره ذره بهبود ببخشید
- آن را مستقر کنید
- فرآیند خود را مستند کنید
یک پروژه تمامشده و مستقرشده، بسیار بیشتر از یک ایده بینقص و ناتمام میآموزد.