แอปมือถือ + แดชบอร์ดผู้ดูแล
nobo
โซเชียลเน็ตเวิร์กและแอปติดตามฟิตเนสในแอปเดียว สองแอปสโตร์ที่ต้องผ่าน และธุรกิจที่ต้องเห็นว่าเกิดอะไรขึ้นจริงๆ ข้างใน
อัปเดต

ปัญหา
โจทย์แอปโซเชียลส่วนใหญ่จริงๆ แล้วคือสองผลิตภัณฑ์ที่แกล้งทำเป็นหนึ่งเดียว ส่วนแรกคือสิ่งที่สมาชิกใช้ ฟีด โปรไฟล์ บันทึกการออกกำลังกาย ส่วนที่สองคือสิ่งที่ธุรกิจต้องการ: คิวตรวจสอบเนื้อหา เครื่องมือซัพพอร์ต การส่งแคมเปญ และคำตอบที่ตรงไปตรงมาว่าทั้งหมดนี้ได้ผลหรือไม่ nobo มีภาพร่างของส่วนแรก แต่ไม่มีส่วนที่สองเลย แอปยังต้องทำสิ่งที่แอปส่วนใหญ่ไม่ค่อยทำได้สำเร็จ: เป็นทั้งโซเชียลเน็ตเวิร์กจริงและแอปติดตามฟิตเนสจริงในเวลาเดียวกัน บนสองระบบปฏิบัติการที่ API ด้านสุขภาพและการเคลื่อนไหวทำงานไม่เหมือนกันเลย ด้วยทีมที่เล็กพอที่ทุกชั่วโมงที่ใช้ไล่หาข้อมูลเองในคอนโซลฐานข้อมูล คือชั่วโมงที่ไม่ได้ใช้กับตัวผลิตภัณฑ์
สิ่งที่เราสร้าง
แอป Flutter ระดับโปรดักชันที่เผยแพร่บน App Store และ Google Play มีแบ็กเอนด์ Firebase และ Google Cloud อยู่เบื้องหลัง และแพลตฟอร์มผู้ดูแลที่สร้างด้วย React ซึ่งเป็นที่ที่ใช้บริหารธุรกิจจริงๆ
ตัวแอป
ห้าส่วนหลัก: ฟีดโซเชียลที่มีโพสต์ สตอรี่ และเพจ การวางแผนออกกำลังกายและเซสชันที่มีโค้ช การบันทึกอาหาร การออกกำลังกาย และชาเลนจ์ ส่วนค้นพบที่รวมคอมมูนิตี้ ลีดเดอร์บอร์ด และชาเลนจ์ และโปรไฟล์ส่วนตัวที่มีไดอารี ความคืบหน้า และการตั้งค่าความเป็นส่วนตัว การส่งข้อความส่วนตัวและในคอมมูนิตี้ใช้ได้ทั่วทั้งแอป
ส่วนฟิตเนสที่ทำอย่างถูกต้อง
การนับก้าวคือส่วนที่ทุกคนประเมินต่ำไป iOS และ Android ใช้เซนเซอร์คนละแบบกันโดยสิ้นเชิง และวิธีง่ายๆ อย่างการเอาตัวนับมาลบค่าฐานที่เก็บไว้ จะให้ตัวเลขผิดไปมากทันทีที่ช่วงเวลาของแพลตฟอร์มเลื่อนไป เราสร้างใหม่โดยใช้ API ดั้งเดิมของแต่ละแพลตฟอร์ม ใช้การดึงข้อมูลรายวันแทนการคำนวณต่อจากค่าเดิม และเขียนกฎไว้เพื่อไม่ให้ใครนำบั๊กนี้กลับมาอีกในภายหลัง
แบ็กเอนด์
ใช้ Firebase และ Google Cloud ทั้งหมด: Firestore สำหรับข้อมูล และ Cloud Functions สำหรับตรรกะที่ปล่อยให้ฝั่งไคลเอนต์ทำไม่ได้ ได้แก่ การซิงก์การติดตามและการเชื่อมต่อ การกระจายฟีด ความถูกต้องของตัวนับ การล้างสื่อเมื่อถูกลบ ลีดเดอร์บอร์ดชาเลนจ์ และทริกเกอร์การแจ้งเตือน รวมถึงบริการ Cloud Run สำหรับการอ่านฟีด การควบคุมสิทธิ์อยู่ใน security rules ที่มีเอกสารและผ่านการทดสอบ ไม่ใช่ทำแบบด้นสด
แพลตฟอร์มผู้ดูแล
พื้นที่ทำงานที่สร้างด้วย React และ TypeScript ซึ่งเป็นที่ที่ใช้บริหารธุรกิจจริงๆ: ข้อมูลสมาชิกและการช่วยเหลือบัญชี การตรวจสอบฟีด คิวรายงานและความปลอดภัย การเป็นเจ้าของและยืนยันเพจ คิวตรวจงานที่ส่งเข้ามา บันทึกการตรวจสอบของการกระทำสำคัญของผู้ดูแล และเครื่องมืองานและปฏิทินภายใน โครงสร้างตั้งใจทำให้เหมือนแอป เพื่อให้คนที่ตอบอีเมลซัพพอร์ตเห็นผลิตภัณฑ์ในรูปแบบเดียวกับที่สมาชิกเห็น
ส่วนข้อมูล
สองชั้น โดยตั้งใจ ตัวรวบรวมข้อมูลใน Firestore สร้างตัวเลขที่รวดเร็วสำหรับใช้ในผลิตภัณฑ์ ส่วนการส่งออกข้อมูลจาก Firebase ไป BigQuery แบบดั้งเดิม ให้ทีมมีช่องทาง SQL สำหรับคำถามที่แดชบอร์ดไม่เคยคาดไว้: เวลาจากการสมัครจนถึงโพสต์แรก ขั้นตอนเริ่มต้นใช้งานขั้นไหนที่ทำให้คนหลุด แท็บแรกที่คนเปิดบอกได้ไหมว่าเขาจะใช้ต่อ ทั้งสองอย่างอยู่ในโปรเจกต์คลาวด์ของลูกค้าเอง และไม่มีผู้ประมวลผลการวิเคราะห์ข้อมูลภายนอกเข้ามาเกี่ยวข้อง ทำให้เรื่องความเป็นส่วนตัวเรียบง่าย
การสื่อสาร
อีเมลแคมเปญอยู่ในแพลตฟอร์มผู้ดูแล มีบันทึกการส่งของผู้รับแต่ละราย การส่งเป็นชุดย่อยเพื่อไม่ให้การส่งถึงกลุ่มใหญ่หยุดกลางทางโดยไม่มีใครรู้ และมีตัวป้องกันที่ไม่ยอมส่งแคมเปญที่ยังมีข้อความตัวอย่างค้างอยู่ ข้อสุดท้ายนี้มีขึ้นเพราะเคยเกิดขึ้นมาแล้วครั้งหนึ่ง และจะเกิดขึ้นอีกไม่ได้
ส่วนที่มองไม่เห็น
ก่อนเปิดตัว เราตรวจความพร้อมทั้งหมดของขั้นตอนการสมัคร แบ็กเอนด์ของฟีด และทริกเกอร์การกระจายข้อมูล และตรวจทุกข้อที่พบซ้ำกับการตั้งค่าที่ใช้งานจริง แทนที่จะเชื่อตามที่เอกสารบอก บางอย่างผิดจริง และการแก้ก่อนผู้ใช้หลั่งไหลเข้ามาช่วงเปิดตัวถูกกว่าแก้ระหว่างนั้น แนวคิดเดียวกันนี้อยู่ในทุกส่วน: security rules ที่วางผังและมีเอกสาร แผนกู้คืนระบบที่เขียนเป็นคู่มือปฏิบัติงาน เหตุการณ์ที่เกิดขึ้นถูกบันทึกพร้อมกฎที่ได้จากเหตุการณ์นั้น และชุดทดสอบครอบคลุมตรรกะแบ็กเอนด์ที่สำคัญ
- ใช้งานจริงบน App Store และ Google Play และอัปเดตสม่ำเสมอ
- ห้าส่วนหลักในแอป โค้ด Flutter ชุดเดียว ทั้งสองสโตร์
ใช้งานจริงบนทั้งสองสโตร์และอัปเดตสม่ำเสมอ แพลตฟอร์มผู้ดูแลถูกใช้ทุกวัน และเว็บไซต์การตลาดสร้างเสร็จแล้ว รอเปิดตัว
สิ่งที่พิสูจน์ได้
ผลิตภัณฑ์ใดก็ตามที่สิ่งที่สมาชิกใช้กับสิ่งที่ผู้ดำเนินการต้องการ จริงๆ แล้วเป็นงานสร้างสองชิ้น: คอมมูนิตี้ที่ต้องตรวจสอบเนื้อหา มาร์เก็ตเพลสที่ต้องยุติข้อพิพาท ธุรกิจสมาชิกที่มีโปรแกรมพ่วงมาด้วย แอปคือสิ่งที่คนเห็น แพลตฟอร์มผู้ดูแลคือสิ่งที่ตัดสินว่าทีมเล็กๆ จะบริหารได้เองโดยไม่ต้องมีนักพัฒนาสแตนด์บาย และเป็นครึ่งที่แทบไม่เคยถูกเขียนสเปกไว้เลย