uAdmin، فریم‌ورک وب نوشته‌شده با زبان Golang


۰


حدود دو سال پیش، دنبال یک فریم‌ورک وب مثل Django برای زبان Golang می‌گشتم اما جای تعجب داشت که حتی یک فریم‌ورک پایه‌ای که اصول اولیه رو پوشش بده پیدا نکردم. نیازهای من ساده بودند:

  • یک روش استاندارد برای ساخت مدل‌ها و مهاجرت اسکیمای پایگاه داده
  • چند ویژگی پایه UI مثل کلید خارجی (foreign key)، لیست‌های استاتیک، inlines و برخی اعتبارسنجی‌های سمت فرانت‌اند
  • رابط کاربری خودکار تولید شده که ظاهر خوبی داشته باشه برای پروتوتایپ کردن یک ایده و حتی قابل استفاده در محیط تولید

یادم افتاد Django چطور ساخته شد؛ وقتی توسعه‌دهندگانش دنبال چیزی مثل Ruby on Rails برای پایتون می‌گشتن و چیزی پیدا نمی‌کردن، خودشون Django رو ساختن. پس من هم ۱۳ روزی وقت گذاشتم و با کمک چند توسعه‌دهنده دیگه در زمینه UI، ریفلکشن در Golang، پایگاه داده و ...، یک نمونه اولیه تحت عنوان "eadmin" نوشتم. حاصل کار چیزی بود که حداقل کار می‌کرد. هیچکدوم از قابلیت‌های جذاب Django رو نداشت اما سریع و کاربردی بود. مهم‌ترین ویژگی که به دست آوردیم این بود که تونستیم به سرعت یه ایده رو پروتوتایپ کنیم و روی یه SCB (Single Board Computer) با پردازنده ARM و ۱۲۸-۲۵۶ مگابایت RAM اجرا کنیم.

الان، دو سال جلوتر، همین کتابخونه پایه تبدیل شده به یه لیست آرزوهای توسعه‌دهندگان. همه تو تیم کد اضافه کردند و کلی ویژگی‌هایی که کم بود رو بهش اضافه کردیم؛ از صادرات به Excel تا ابزار برش تصویر داخلی! این‌قدر جالب شده که نمیشه فقط در تیم خودمون نگهش داریم و باید اوپن‌سورسش کنیم. از مدیریت پرسیدم و برخلاف انتظار، مشکلی نداشتن. الان باید کد رو پاکسازی کنم از کدهای خاص محصول و ویژگی‌های عمومی جایگزین کنم. همچنین تصمیم گرفتیم اسم کتابخونه رو بذاریم uAdmin چون اون اسم روی Github آزاد بود و ما هم نتونستیم اسم جالب تری مثل Django پیدا کنیم.

حالا چی باعث شده uAdmin خاص باشه؟

  • بسیار سریع
  • قابل اجرا روی سخت‌افزارهای با حداقل منابع
  • ویژگی‌های امنیتی خوب مثل هش کردن با bcrypt و تایید هویت دو مرحله‌ای (2FA)
  • UI تمیز و جذاب
  • همه چیز دارای پیش‌فرض هست ولی نگران نباشید، می‌تونید همه چیز رو override کنید

پس بریم سراغ کد.

دریافت داستان‌های عبدالله الرشید در ایمیلتان

برای دریافت آپدیت‌ها از این نویسنده، در Medium ثبت‌نام کنید.

Subscribe


برای نصب uAdmin:

1go get github.com/uadmin/uadmin/...

حالا می‌تونید اولین پروژه‌تون رو ایجاد کنید:

1$ mkdir -p ~/go/src/github.com/your_name/todo  
2$ cd ~/go/src/github.com/your_name/todo  
3$ uadmin prepare

اجرای uadmin prepare یک سری فولدرهای جدید مثل templates، static و... برای شما ایجاد می‌کند. فعلا لازم نیست نگرانش باشید. بریم سراغ نوشتن کد. با هر ویرایشگر متنی که دوست دارید فایل main.go رو بسازید و این کد رو داخلش قرار بدید:

1package main
2
3import (  
4  "github.com/uadmin/uadmin"  
5  "time"  
6)
7
8type Todo struct {  
9  uadmin.Model  
10  Name        string  
11  Description string `uadmin:"html"`  
12  TargetDate  time.Time  
13  Progress    int `uadmin:"progress_bar"`  
14}
15
16func main() {  
17  uadmin.Register(Todo{})  
18  uadmin.StartServer()  
19}

برای اجرا:

1go build; ./todo

این کار پایگاه داده را ایجاد و مدل شما را مهاجرت می‌کند و چند مدل سیستم دیگه مثل احراز هویت، مجوزها و... هم می‌سازد. حالا می‌تونید پروژه‌تون رو در http://127.0.0.1:8080/ بررسی کنید.

با یوزرنیم admin و پسورد admin وارد شوید و داشبورد زیر را خواهید دید:

مدل TODO شما همین الان روی داشبورد وجود دارد. آن را باز کنید و یک تسک به لیست Todo خود اضافه کنید:

اپلیکیشن خود را به صورت آنلاین منتشر کنید (اختیاری):

اگر می‌خواهید اپلیکیشن خود را منتشر کنید، در uAdmin روندش راحت است. به پوشه اپلیکیشن رفته و این دستور را بزنید:

1$ uadmin publish

اگر می‌خواهید بیشتر درباره انتشار اپلیکیشن یاد بگیرید، سری نهم قسمت‌ها را ببینید.

همین بود! تبریک می‌گویم، اولین اپلیکیشن خود را با uAdmin ساختید. همه‌چیز قابل سفارشی‌سازی است و در قسمت دوم چند قابلیت بیشتر را بررسی خواهیم کرد.

golang
web-framework
web-apps
web-development
گو

۰


نظرات


author
نویسنده مقاله: امید پیردهی

کد با می متعهد است که بالاترین سطح کیفی آموزش را در اختیار شما بگذارد. هدف به اشتراک گذاشتن دانش فناوری اطلاعات و توسعه نرم افزار در بالاترین سطح ممکن برای درستیابی به جامعه ای توانمند و قدرتمند است. ما باور داریم هر کسی میتواند با استمرار در یادگیری برنامه نویسی چالش های خود و جهان پیرامون خود را بر طرف کند و به موفقیت های چشم گیر برسد. با ما در این مسیر همراه باشید. کد با می اجتماع حرفه ای برنامه نویسان ایرانی.

تمام حقوق این سایت متعلق به وبسایتcodebymeمیباشد.