۵ ماه پیش از شغلم استعفا دادم تا ایده خودم اجرا کنم (با این تفکر که ۲۵ سال بیشتر ندارم و اگه الآن شکست بخورم نهایتا شغلم از دست دادم نه بیشتر)
برای شروع نه تیمی داشتم نه سرمایهای، پس باید همه کارا خودم انجام میدادم، قسمت سخت ماجرا این بود که برای اجرایی شدن این ایده نیاز به اپ دسکتاپ و موبایل داشتم و من فقط یه PHP دولوپر ساده بودم، یک هفتهای برای کم هزینهترین استراتژی موجود گشتم، درنهایت تصمیم گرفتم بکاند رستفول بزنم و فرانتاند با Js بنویسم و برای همه پلتفرمها توی وبویو نمایش بدم، البته همه چیز به همین سادگی پیش نرفت و چالشهای کوچیک و بزرگ زیادی وسط کار داشتم، سعی میکنم تو چندتا پست همه توضیح بدم.
استاندارد API از RestFul پیروی کردم (فوق العاده سادس و اکثرا نیاز به داکیومنت ندارید).
برای داکیومنت API از apiDoc استفاده کردم (با هر کامیت داکیومنت آپدیت میشه و برای هر اِندپوینت تست داره و برای تمام زبانهای برنامه نویسی قابل اجراس).
برای بکاند تصمیم گرفتم از GoLang استفاده کنم (به دلیل سادگیش و جمع و جور بودنش).
از Glide به عنوان پیکج منیجر برای گو استفاده میکنم (باید مطمئن میشدم ورژن پکیجهای محیط توسعه و پروداکت یکی باشن)
از Gin به عنوان فریمورک استفاده کردم (سریعه، سادس، میدلور های زیادی داشت).
از JWT برای هویت سنجی کاربرها استفاده میکنم (سشن و کوکی تو رستفول کارایی لازم نداره).
از فایل .env برای متغیرهای اپ تو محیط توسعه، تست و پروداکشن استفاده میکنم.
از upper.io برای ORM استفاده میکنم (به نظرم فوق العاده تمیز و کاربردی پیاده شده).
از rubenv/sql-migrate برای مایگریشن و سید دیتابیس استفاده میکنم (البته با ۲ کانفیگ متفاوت).
برای تست اپ از Gitlab-Ci استفاده میکنم (رایگانه و ساده، همچنین اگه از سرعتش راضی نیستید میتونید گیت لب رانر رو سرورتون نصب کنید تا تستها با سرعت زیاد رو سرور خودتون اجرا بشه).
در آخر باید بگم پروژه داکرایز کردم و رو سرویس کلاد با قابلیت اتواسکیل اجرا کردم تا هیچوقت درگیر سرور نشم و فقط به اضافه کردن اندپوینت فکر کنم، در مرحله اول ممکنه فکر کنید اینا اضافه کاریه و کلی وقتتون میگیره، ولی اگه یک دفعه این کار انجام داده باشید میتونید نهایتا یک هفتهای یه استراکچر استاندارد داشته باشید و تمام وقتتون صرف دولوپ کنید تا هرفعه درگیر سرور و مشکلاتش نشید، مخصوصا اگه تنها کار میکنید این شیوه بسیار کاربردیه.
تو قسمت بعد درباره فرانتاند (وب، موبایل و دسکتاپ) توضیح میدم.
درضمن اگر شما شیوه بهتری برای اجرا درنظر دارید خوشحال میشم تو کامنت بگید.