ให้บริการไซต์ของคุณและขายหลักสูตรด้วยเซิร์ฟเวอร์ที่โฮสต์เอง
sserver เป็นเซิร์ฟเวอร์แบบไม่มีส่วนหัวธรรมดาสำหรับการโฮสต์หลักสูตรและบล็อก/เนื้อหาคงที่ที่เกี่ยวข้องจากพื้นที่เก็บข้อมูล GitHub ส่วนตัวโดยมีค่าใช้จ่ายน้อยที่สุด
โดยให้ https ทันที ดังนั้นคุณจึงไม่จำเป็นต้องจัดการกับการติดตั้ง/การจัดการใบรับรอง มันจะซิงค์เนื้อหาโดยอัตโนมัติจาก GitHub ดังนั้นคุณจึงไม่จำเป็นต้องอัปโหลดเนื้อหาของคุณไปยังเซิร์ฟเวอร์ นอกจากนี้ยังรองรับเนื้อหาพรีเมียมด้วยไฟล์การกำหนดค่าง่ายๆ โดยไม่กระทบต่อเวิร์กโฟลว์เนื้อหาของคุณ เช่น หากคุณใช้โปรแกรมสร้างไซต์แบบคงที่เช่น Hugo คุณสามารถซ่อนเนื้อหาพรีเมียมไม่ให้เปิดเผยต่อสาธารณะได้โดยระบุเนื้อหานั้นในไฟล์กำหนดค่า มีการผสานรวมแบบแถบเพื่อให้คุณสามารถขายเนื้อหาพรีเมียมของคุณได้ มีการจัดการผู้ใช้ในตัวเพื่อเพิ่ม/ตรวจสอบผู้ใช้ นอกจากนี้ยังมี Admin API เพื่อให้คุณสามารถตรวจสอบคำสั่งซื้อ/ผู้ใช้เว็บไซต์ของคุณได้
นี่คือตัวอย่างบางส่วนของวิธีการใช้งาน โปรดตรวจสอบให้แน่ใจว่าได้ตั้งค่าตัวแปรสภาพแวดล้อม SS_<> ก่อนที่จะลองใช้ เช่น
export SS_GITHUB_TOKEN=<github_token>
export SS_STRIPE_TOKEN=<stripe_token>
export SS_SMTP_FROM=<email_id>
export SS_SMTP_USER=<smtp_username>
export SS_SMTP_PWD=<smtp_password>
export SS_SMTP_HOST=<smtp_host_address>
export SS_SMTP_PORT=<smtp_port>
export SS_ADMIN_EMAIL=<admin_email>
export SS_ADMIN_PWD=<admin_password_for_sserver>
./sserver -repo "https://github.com/newbeelearn/sserver.git"
พื้นที่เก็บข้อมูลควรมี index.html และ ssconfig.toml ในไดเร็กทอรีราก หากใช้ Hugo/jekyll ฯลฯ เช่น เครื่องมือสร้างไซต์แบบคงที่ พื้นที่เก็บข้อมูลควรมีไซต์ที่สร้างขึ้น (โดยค่าเริ่มต้นจะมี index.html อยู่ในรูท)
./sserver -repo "https://github.com/newbeelearn/sserver.git?folder=public"
พื้นที่เก็บข้อมูลควรมีindex.htmlในโฟลเดอร์ที่คุณต้องการให้บริการเนื้อหา โดยทั่วไปจะเป็นสาธารณะหากใช้hugo/jekyll ฯลฯ เครื่องมือสร้างไซต์แบบคงที่ ควรมี ssconfig.toml อยู่ในไดเรกทอรีราก
./sserver -repo "https://github.com/newbeelearn/sserver.git?ref=test-config"
Branch ควรมี index.html และ ssconfig.toml ในไดเร็กทอรีราก หากใช้ Hugo/jekyll ฯลฯ เช่น โปรแกรมสร้างไซต์แบบคงที่ สาขาควรมีไซต์ที่สร้างขึ้น (โดยค่าเริ่มต้นจะมี index.html อยู่ในรูท)
./sserver -repo "https://github.com/newbeelearn/sserver.git?domain=example.com"
พื้นที่เก็บข้อมูลควรมี index.html และ ssconfig.toml ในไดเรกทอรีราก การเข้าถึงโดเมนที่ไซต์ให้บริการ เซิร์ฟเวอร์ ควรมีสิทธิ์ในการผูกกับพอร์ต 443 ซึ่งสามารถทำได้ด้วยคำสั่งต่อไปนี้
sudo setcap 'cap_net_bind_service=+ep' sserver
./sserver -repo "file:///workspace/projects/newbeelearn.com/sserver"
พื้นที่เก็บข้อมูลควรมี index.html และ ssconfig.toml ในไดเรกทอรีราก สามารถระบุตัวเลือกทั้งหมด เช่น โฟลเดอร์/โดเมน ฯลฯ ในกรณีของไฟล์ในเครื่องได้เช่นกัน
ตัวอย่าง ssconfig.toml สามารถพบได้ด้านล่าง
# specify the site
[site]
# period to check for new content
syncinterval = "@every 12h"
# product/course details
[[site.prod]]
name = "course1"
# path from root, this will be accessible to users who have bought the course
path = "courses/course1"
# can be draft/active, buying functionality will be enabled when status is active
status = "active"
# unique identifier for the course
sku = "prod-course-1"
# price in cents
price = 10000
# currency
currency = "USD"
server สร้างไดเร็กทอรี "wwwss" จากตำแหน่งที่รัน
drwxrwxr-x 2 test test 4096 Nov 30 17:04 a
drwxrwxr-x 8 test test 4096 Nov 30 17:04 b
drwxrwxr-x 2 test test 4096 Nov 30 17:04 certs
drwxrwxr-x 2 test test 4096 Nov 30 17:04 logs
-rw-rw-r-- 1 test test 527483 Nov 30 17:04 tmp.zip
-rw-rw-r-- 1 test test 49152 Nov 30 17:05 ssapp.db
ไฟล์การกำหนดค่าใช้เพื่อระบุผลิตภัณฑ์/หลักสูตรที่คุณต้องการขาย รวมถึงพารามิเตอร์เซิร์ฟเวอร์บางอย่าง เช่น ความถี่ในการซิงค์ไซต์ เป็นต้น
ตัวอย่างไฟล์ ssconfig.toml แสดงอยู่ด้านล่าง
#specify the site
[site]
#period to check for new content default is 12 hours
syncinterval = "@every 12h"
[[site.prod]]
name = "course1"
path = "courses/course1"
status = "active"
sku = "prod-course-1"
price = 10000
currency = "USD"
จุดสิ้นสุด API ทั้งหมดสัมพันธ์กับโดเมนที่ใช้สำหรับการให้บริการเนื้อหา เช่น หากโดเมนคือ example.com และ API คือ /api/v1/product/list
คำขอจะเป็น https://example.com/api/v1/product/list
ลำดับชั้นของบทบาทเป็นเหมือนผู้ดูแลระบบ> ผู้ใช้> แขก API ใด ๆ ที่แขกสามารถเข้าถึงได้ก็สามารถเข้าถึงได้โดยผู้ใช้และ API ใด ๆ ที่ผู้ใช้สามารถเข้าถึงได้ก็สามารถเข้าถึงได้โดยผู้ดูแลระบบเช่นกัน สำหรับการเข้าถึงคุกกี้เซสชันของผู้ใช้ / ผู้ดูแลระบบ api ที่ได้รับหลังจากเข้าสู่ระบบจะต้องจัดเตรียมมาพร้อมกับคำขอแต่ละรายการใน การปฏิบัตินี้จะได้รับการดูแลโดยเบราว์เซอร์
คำอธิบาย | ขอ | บทบาท |
---|---|---|
ลงทะเบียนผู้ใช้ | โพสต์ /api/v1/user/register | แขก |
ผู้ใช้เข้าสู่ระบบ | โพสต์ /api/v1/user/login | แขก |
ผู้ใช้ออกจากระบบ | รับ /api/v1/user/logout | แขก |
ยืนยันผู้ใช้ | รับ /api/v1/user/verify/:id | แขก |
รีเซ็ตรหัสผ่านผู้ใช้ | POST /api/v1/user/reset | แขก |
รับรายการสินค้า | รับ /api/v1/product/list | แขก |
สร้างคำสั่งซื้อ | POST /api/v1/order/id | แขก |
ปรับเปลี่ยนคำสั่งซื้อ | ใส่ /api/v1/order/id | ผู้ใช้ |
สั่งซื้อชำระเงิน | POST /api/v1/order/checkout | ผู้ใช้ |
รับคำสั่งซื้อตามรหัสคำสั่งซื้อ | รับ /api/v1/order/id/:id | ผู้ใช้ |
รับคำสั่งซื้อทั้งหมดตามผู้ใช้ | รับ /api/v1/order/id/list | ผู้ใช้ |
เปลี่ยนรหัสผ่านผู้ใช้ | โพสต์ /api/v1/user/changepwd | ผู้ใช้ |
รับทุกออเดอร์. | รับ /api/v1/order/list | ผู้ดูแลระบบ |
รับผู้ใช้ทั้งหมด | รับ /api/v1/user/list | ผู้ดูแลระบบ |
ลงทะเบียนผู้ใช้ใหม่ด้วยอีเมลและรหัสผ่าน ส่งอีเมลไปยังอีเมลที่ใช้ในการลงทะเบียนด้วยรหัสยืนยัน หากมีการตั้งค่าการกำหนดค่าเซิร์ฟเวอร์ SMTP
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/user/register'
-H 'Content-Type: application/x-www-form-urlencoded'
-X POST
--data-raw 'email=stripe%40newbeelearn.com&password=test&confirm-password=test&remember=on'
ตัวอย่างการตอบกลับ
{"status":"success"}
เข้าสู่ระบบผู้ใช้ด้วยอีเมลและรหัสผ่าน ส่งคืน json หากไม่ได้ตั้งค่าฟิลด์ "postlogin" ในไฟล์ปรับแต่ง มิฉะนั้นจะเปลี่ยนเส้นทางไปยังหน้าที่ระบุใน "postlogin"
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/user/login'
-H 'Content-Type: application/x-www-form-urlencoded'
-X POST
--data-raw 'email=admin%40example.com&password=admin'
ตัวอย่างการตอบกลับ
{
"data": {
"user_id": "1",
"username": ""
},
"msg": "user found",
"status": "success"
}
ออกจากระบบผู้ใช้ที่เข้าสู่ระบบและเปลี่ยนเส้นทางไปยังหน้าแรก
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/user/logout'
-H 'Cookie: session_id=9e8b22a3-15ac-442f-bf65-15c37dbfc889; max-age=300; path=/; secure; SameSite=Lax'
ตัวอย่างการตอบกลับ
<!doctype html>
<html lang="en">
<head>
</head>
<body>
</body>
</html>
ตรวจสอบอีเมลของผู้ใช้ที่ลงทะเบียนโดยส่ง url หากมีการตั้งค่าโดเมนหรือรหัสที่ควรต่อท้ายหลังจากตรวจสอบ API หากไม่ได้ตั้งค่าโดเมน
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/user/verify/cafj5grn0gpog1j3a0m0'
ตัวอย่างการตอบกลับ
{"status":"success"}
รีเซ็ตรหัสผ่านผู้ใช้และส่งรหัสชั่วคราวใหม่เพื่อเข้าสู่ระบบ ผู้ใช้จำเป็นต้องใช้รหัสนี้ในการเข้าสู่ระบบครั้งถัดไปและเปลี่ยนรหัสผ่าน
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/user/reset'
-H 'Content-Type: application/x-www-form-urlencoded'
-X POST
--data-raw 'email=stripe%40newbeelearn.com'
ตัวอย่างการตอบกลับ
{
"data": null,
"msg": "password reset successful",
"status": "success"
}
รับผลิตภัณฑ์ทั้งหมดที่แสดงการขายบนเว็บไซต์ ใช้ "limit" และ "offset" เป็นแบบสอบถาม หากไม่ได้ตั้งค่าแบบสอบถาม ค่าเริ่มต้นของขีดจำกัดจะตั้งค่าเป็น 10 และออฟเซ็ตเป็น 0
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/product/list?limit=1&offset=0'
ตัวอย่างการตอบกลับ
{
"data": [
{
"prd_id": 1,
"prd_name": "course1",
"sku": "prod-course-1",
"permalink": "users/list/",
"price": 10000,
"currency": "USD",
"period": 365,
"status": "active"
}
],
"msg": "Order found",
"status": "success"
}
สร้างคำสั่งซื้อใหม่ด้วยผลิตภัณฑ์ที่ระบุไว้ในช่อง "line_item"
คำขอควรเป็น json ที่ถูกต้อง ฟิลด์ order_id/user_id
ฯลฯ จริงจะถูกเติมโดยเซิร์ฟเวอร์ ค่าจำลองใดๆ ก็ตามที่สามารถส่งผ่านได้
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/order/id'
-H 'Content-Type: application/json; charset=utf-8'
-H 'Cookie: session_id=cad8439e-dcc4-475e-94fc-12b75f85bb20; max-age=300; path=/; secure; SameSite=Lax'
-X POST
--data-raw ' {
"order_id": 1,
"user_id": 3,
"currency": "USD",
"line_items": [
{
"sku": "prod-course-1"
},
{
"sku": "prod-course-3"
}
]
}'
ตัวอย่างการตอบกลับ
{
"data": {
"order_id": 1,
"user_id": 3,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"status": "active",
"currency": "USD",
"order_number": "cafjktbn0gpp5hq3dt4g",
"grand_total": 11000,
"line_items": [
{
"line_id": 1,
"order_id": 1,
"prd_id": 1,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"grand": 10000,
"enabled": true,
"sku": "prod-course-1"
},
{
"line_id": 2,
"order_id": 1,
"prd_id": 2,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"grand": 1000,
"enabled": true,
"sku": "prod-course-3"
}
]
},
"msg": "Order found",
"status": "success"
}
แก้ไขคำสั่งซื้อที่มีอยู่โดยการเพิ่ม/ลบสินค้าในช่อง line_item
ผู้ใช้จะต้องเข้าสู่ระบบเพื่อแก้ไขคำสั่งซื้อและคำสั่งซื้อควรอยู่ในสถานะใช้งานอยู่ ใช้การตอบกลับก่อนหน้าของการสร้างคำสั่งซื้อหรือรับคำสั่งซื้อเพื่อเพิ่ม/ลบสินค้า
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/order/id'
-H 'Content-Type: application/json; charset=utf-8'
-H 'Cookie: session_id=cad8439e-dcc4-475e-94fc-12b75f85bb20; max-age=300; path=/; secure; SameSite=Lax'
-X PUT
--data-raw ' {
"order_id": 1,
"user_id": 3,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"status": "active",
"currency": "USD",
"order_number": "cafjktbn0gpp5hq3dt4g",
"grand_total": 11000,
"line_items": [
{
"line_id": 2,
"order_id": 1,
"prd_id": 2,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"grand": 1000,
"enabled": true,
"sku": "prod-course-3"
}
]
}'
ตัวอย่างการตอบกลับ
{
"data": {
"order_id": 1,
"user_id": 3,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:48:05.425488765 +0000 UTC",
"status": "active",
"currency": "USD",
"order_number": "cafjktbn0gpp5hq3dt4g",
"grand_total": 1000,
"line_items": [
{
"line_id": 2,
"order_id": 1,
"prd_id": 2,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:48:05.425488765 +0000 UTC",
"grand": 1000,
"enabled": true,
"sku": "prod-course-3"
}
]
},
"msg": "Order found",
"status": "success"
}
รับแถบ URL สำหรับการชำระเงินตามคำสั่งซื้อที่สร้างโดยการสร้าง API คำสั่งซื้อ ใช้การตอบกลับจาก create order/modify order/get order api เพื่อส่งคำขอ อย่าแก้ไขการตอบสนองในคำขอนี้ เพราะจะส่งผลให้เกิดความล้มเหลว
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/order/checkout'
-H 'Content-Type: application/json; charset=utf-8'
-H 'Cookie: session_id=2f1be070-7256-4e84-a4ef-c14754cabcdb; max-age=300; path=/; secure; SameSite=Lax'
-X POST
--data-raw ' {
"order_id": 1,
"user_id": 3,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"status": "active",
"currency": "USD",
"order_number": "cafjktbn0gpp5hq3dt4g",
"grand_total": 11000,
"line_items": [
{
"line_id": 2,
"order_id": 1,
"prd_id": 2,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"grand": 1000,
"enabled": true,
"sku": "prod-course-3"
}
]
}'
ตัวอย่างการตอบกลับ
{
"data": {
"url": "https://checkout.stripe.com/pay/cs_test_a17D2l74NsKMv29YJ1c5rSBPx7BGSsNAsObGAsOanEJqyFNXKEYDLji4BZ#fidkdWxOYHwnPyd1blpxYHZxWjA0TlVKPHNMaW9vYEd1YmhdUWQ3UUJqSEpMYTMza11ObGAyXDFPcXA8bz1yY1VicVZVdDN8c1NkaUZEazxIQWdjM04wdz1DTmF3PXxHaVE9bTVuZz1pUWw3NTUybHZLZldgaicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBabHFgaCcpJ2BrZGdpYFVpZGZgbWppYWB3dic%2FcXdwYHgl"
},
"msg": "Order found",
"status": "success"
}
รับรายละเอียดการสั่งซื้อตามหมายเลขคำสั่งซื้อ
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/order/id/cafjktbn0gpp5hq3dt4g'
-H 'Content-Type: application/json; charset=utf-8'
-H 'Cookie: session_id=fe9b9fff-c5c0-4745-becf-ecb0e5abca81; max-age=300; path=/; secure; SameSite=Lax'
ตัวอย่างการตอบกลับ
{
"data": {
"order_id": 1,
"user_id": 3,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:48:05.425488765 +0000 UTC",
"status": "active",
"currency": "USD",
"order_number": "cafjktbn0gpp5hq3dt4g",
"grand_total": 1000,
"line_items": [
{
"line_id": 2,
"order_id": 1,
"prd_id": 2,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:48:05.425488765 +0000 UTC",
"grand": 1000,
"enabled": true
}
]
},
"msg": "Order found",
"status": "success"
}
รับคำสั่งซื้อทั้งหมดตามผู้ใช้ รับขีดจำกัดและออฟเซ็ตเนื่องจากค่าเริ่มต้นของพารามิเตอร์เคียวรีคือ 10 และ 0 ตามลำดับ
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/order/id/list?limit=1&offset=0'
-H 'Content-Type: application/json; charset=utf-8'
-H 'Cookie: session_id=fe9b9fff-c5c0-4745-becf-ecb0e5abca81; max-age=300; path=/; secure; SameSite=Lax'
ตัวอย่างการตอบกลับ
{
"data": [
{
"order_id": 1,
"user_id": 3,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:48:05.425488765 +0000 UTC",
"status": "active",
"currency": "USD",
"order_number": "cafjktbn0gpp5hq3dt4g",
"grand_total": 1000
}
],
"msg": "Order found",
"status": "success"
}
เปลี่ยนรหัสผ่านผู้ใช้ ผู้ใช้จะต้องเข้าสู่ระบบเพื่อส่งคำขอนี้
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/user/changepwd'
-H 'Content-Type: application/x-www-form-urlencoded'
-H 'Cookie: session_id=fe9b9fff-c5c0-4745-becf-ecb0e5abca81; max-age=300; path=/; secure; SameSite=Lax'
-X POST
--data-raw 'oldpassword=cafjjjbn0gpp5hq3dt40&password=test123'
ตัวอย่างการตอบกลับ
{
"data": null,
"msg": "password change successful",
"status": "success"
}
รับคำสั่งซื้อทั้งหมดที่สร้างขึ้นในร้านค้า รับขีดจำกัดและออฟเซ็ตเนื่องจากค่าเริ่มต้นของพารามิเตอร์การสืบค้นคือ 10 และ 0 ตามลำดับ มีให้สำหรับผู้ใช้ที่เป็นผู้ดูแลระบบเท่านั้น รับทุกออเดอร์.
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/order/list?limit=1&offset=0'
-H 'Content-Type: application/json; charset=utf-8'
-H 'Cookie: session_id=e4ecd3a4-b8be-493e-a33d-518ab11c65e8; max-age=300; path=/; secure; SameSite=Lax'
ตัวอย่างการตอบกลับ
{
"data": [
{
"order_id": 1,
"user_id": 3,
"created_at": "2022-06-07 11:45:57.601996759 +0000 UTC",
"modified_at": "2022-06-07 11:48:05.425488765 +0000 UTC",
"status": "active",
"currency": "USD",
"order_number": "cafjktbn0gpp5hq3dt4g",
"price_total": 1000,
"discount_total": 0,
"sub_total": 1000,
"taxes_total": 0,
"grand_total": 1000,
"refunds_total": 0,
"created_channel": "",
"payment_provider": ""
}
],
"msg": "Order found",
"status": "success"
}
รับผู้ใช้ทั้งหมดที่ลงทะเบียนบนเว็บไซต์ รับขีดจำกัดและออฟเซ็ตเนื่องจากค่าเริ่มต้นของพารามิเตอร์การสืบค้นคือ 10 และ 0 ตามลำดับ มีให้สำหรับผู้ใช้ที่เป็นผู้ดูแลระบบเท่านั้น
ตัวอย่างคำขอ
curl 'http://localhost:54545/api/v1/user/list?limit=1&offset=0'
-H 'Content-Type: application/json; charset=utf-8'
-H 'Cookie: session_id=e4ecd3a4-b8be-493e-a33d-518ab11c65e8; max-age=300; path=/; secure; SameSite=Lax'
ตัวอย่างการตอบกลับ
{
"data": [
{
"user_id": 1,
"email": "[email protected]",
"created_at": "2022-06-07 10:53:00.480128762 +0000 UTC",
"username": "",
"last_password_set": "2022-06-07 10:53:00.480128762 +0000 UTC",
"last_login": "2022-06-07 10:53:00.480128762 +0000 UTC",
"verified": 0,
"reset": 0,
"user_role": "admin"
},
{
"user_id": 2,
"email": "[email protected]",
"created_at": "2022-06-07 10:53:00.532691788 +0000 UTC",
"username": "",
"last_password_set": "2022-06-07 10:53:00.532691788 +0000 UTC",
"last_login": "2022-06-07 10:53:00.532691788 +0000 UTC",
"verified": 0,
"reset": 0,
"user_role": "guest"
},
{
"user_id": 3,
"email": "[email protected]",
"created_at": "2022-06-07 11:13:06.947313364 +0000 UTC",
"username": "",
"last_password_set": "2022-06-07 11:13:06.947313364 +0000 UTC",
"last_login": "2022-06-07 11:13:06.947313364 +0000 UTC",
"verified": 2,
"reset": 1,
"user_role": "user"
}
],
"msg": "Order found",
"status": "success"
}
ไม่ มีเพียงไบนารีเท่านั้นที่เผยแพร่และไซต์ใช้สำหรับการสนทนาเกี่ยวกับผลิตภัณฑ์
ฟังก์ชันการทำงานอยู่ในช่วงอัลฟ่าเสร็จสมบูรณ์แล้ว แต่อาจมีข้อบกพร่องอยู่
สิ่งนี้ถูกสร้างขึ้นเนื่องจากความจำเป็นในการเป็นเจ้าภาพหลักสูตร
ยังไม่ใช่ในขณะนี้เนื่องจากไม่รองรับการสมัครสมาชิก แต่เป็นผลิตภัณฑ์ดิจิทัลแบบครั้งเดียวเท่านั้น นอกจากนี้ยังไม่มีฟังก์ชันการส่งต่อเส้นทางที่สามารถเสียบ Saas ของคุณเองได้ อย่างไรก็ตาม การเปลี่ยนแปลงเหล่านี้สามารถเพิ่มได้ หากมีความสนใจเพียงพอ โปรดเริ่มการสนทนา หากคุณต้องการมีคุณลักษณะเหล่านี้ ณ ขณะนี้ ยังไม่อยู่ในแผนงาน
สามารถใช้สำหรับการโฮสต์หลักสูตรและบล็อกที่เกี่ยวข้อง บล็อกที่มีจดหมายข่าว บล็อกที่มีเนื้อหาระดับพรีเมียม หน้า Landing Page ของการเริ่มต้นและบล็อกที่เกี่ยวข้อง ขายธีม ฯลฯ
รองรับ linux และ macos ทันที ผู้ใช้ Windows สามารถใช้ WSL ได้ แต่ยังไม่ได้ทดสอบ
สร้างปัญหาและแท็กด้วยคุณสมบัติ
ยังไม่มีการตัดสินใจ ณ ขณะนี้เปิดให้ใช้งานได้ฟรี สินค้าที่ต้องชำระเงินหากมีจะใช้ช่องทางแยก ดังนั้นหากคุณดาวน์โหลดจาก GitHub release มันจะฟรีตลอดไป ช่วยเราในการตัดสินใจ บอกเราว่าคุณจะจ่ายเงินจำนวนเท่าใดในกระดานสนทนา