Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Xây dựng Startup của bạn: Thiết lập bảng điều khiển

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Sending Reminders
Building Your Startup: Improving the Mobile Web

Vietnamese (Tiếng Việt) translation by Andrea Ho (you can also view the original English article)

Final product image
What You'll Be Creating

Hướng dẫn này là một phần của loạt bài Building Your Startup with PHP trên Envato Tuts+. Trong loạt bài này, tôi hướng dẫn bạn thông qua khởi phát một startup từ khái niệm đến thực tế bằng cách sử dụng ứng dụng Meeting Planner của tôi làm ví dụ thực tế. Ở mỗi giai đoạn, tôi sẽ phát hành code của Meeting Planner làm ví dụ dưới dạng mã nguồn mở để bạn có tham khảo. Tôi cũng sẽ giải quyết các vấn đề kinh doanh có liên quan đến startup khi phát sinh.

Khi Meeting Planner chuẩn bị khởi chạy bản alpha, chúng tôi cần một cách để giải quyết các yêu cầu hỗ trợ với người dùng và theo dõi hoạt động. Nói cách khác, chúng ta cần xây dựng một bảng điều khiển quản trị cùng với phần quản lý và báo cáo của người dùng. Khi thảo luận với một người cố vấn, chúng tôi đã bàn bạc rằng khi tôi tiếp cận các nhà đầu tư tiềm năng, tôi sẽ cần có dữ liệu tuyệt vời nêu chi tiết hành vi của người dùng và sự tăng trưởng của dịch vụ.

Trong phần hôm nay, chúng tôi sẽ xây dựng nền tảng cho bảng điều khiển quản trị của chúng tôi và tiếp tục và tạo một số báo cáo trực tiếp và lịch sử ban đầu. Ví dụ, chúng ta sẽ biết có bao nhiêu người đã đăng ký bất cứ lúc nào, có bao nhiêu cuộc họp đã được lên kế hoạch, và tỷ lệ phần trăm những người tham gia được mời yêu thích dịch vụ đủ để họ tiếp tục tổ chức cuộc họp riêng của chính họ. Thực sự khá thú vị khi xây dựng công cụ này và xem xét các dữ liệu, ngay cả khi chúng tôi đang giai đoạn trước khi phát hành.

Nếu bạn chưa thử Meeting Planner (và muốn tự hiển thị trong dữ liệu tổng hợp), hãy tiếp tục và lên lịch cuộc họp đầu tiên của bạn. Tôi luôn tham gia vào các chủ đề bình luận dưới đây, vì vậy hãy cho tôi biết những gì bạn nghĩ! Bạn cũng có thể liên hệ với tôi trên Twitter @reifman. Tôi đặc biệt quan tâm nếu bạn muốn đề xuất các tính năng hoặc chủ đề mới cho những hướng dẫn trong tương lai.

Xin nhắc lại, tất cả code cho Meeting Planner cuộc họp được viết bằng framework Yii2 cho PHP. Nếu bạn muốn tìm hiểu thêm về Yii2, hãy xem loạt bài song song Programming with Yii2 của chúng tôi.

Xây dựng nền tảng của trang bảng điều khiển

Template nâng cao của Yii

Yii2 cung cấp các trang cho người dùng và quản trị trong quá trình thiết lập ứng dụng nâng cao. Bạn có thể đọc thêm về điều này trong hướng dẫn Envato Tuts+ của tôi, How to Program With Yii2: Using the Advanced Application Template. Về cơ bản, trang front-end của template nâng cao cung cấp chức năng hướng mà người dùng đang sử dụng và trang back-end được xây dựng cho một trang quản trị và bảng điều khiển của một dịch vụ.

Để kích hoạt, tôi chỉ cần thiết lập các trang Apache trong môi trường máy chủ cục bộ MAMP và trên production server chạy Ubuntu của tôi. Ví dụ, đây là cấu hình Apache trên production server để nạp trang web /backend/web:

Cấu hình trang Back-End của chúng tôi

Tiếp theo, tôi đã tạo bố cục mới cho trang back-end dựa trên trang front-end, nhưng với các tùy chọn menu khác nhau. Tôi quyết định trang chủ sẽ chuyển hướng đến một trang thống kê theo thời gian thực. Và các menu sẽ cung cấp các liên kết đến dữ liệu thời gian thực, dữ liệu từ hôm qua vào nửa đêm và dữ liệu lịch sử. Tôi sẽ giải thích thêm một chút về điều này khi chúng tôi tiến hành.

Meeting Planner Dashboard - Menu Layout

Đây là \backend\views\layouts\main.php cùng với menu:

Xây dựng báo cáo ban đầu

Đối với báo cáo thống kê ban đầu, tôi tập trung vào dữ liệu thời gian thực đơn giản và dữ liệu lịch sử chi tiết. Ví dụ: dữ liệu thời gian thực sẽ cho bạn biết số lượng người dùng và cuộc họp được xây dựng trên hệ thống cho đến ngày và trạng thái của họ.

Dữ liệu lịch sử sẽ cho bạn biết số lượng người dùng và cuộc họp đã hoàn thành theo thời gian cũng như các dữ liệu thú vị khác — đặc biệt là các đường cong thể hiện tăng trưởng mà tôi và các nhà đầu tư tiềm năng có thể quan tâm.

Dữ liệu theo thời gian thực

Trang dữ liệu thời gian thực cần hiển thị ảnh chụp nhanh trực tiếp về những gì đang xảy ra trên trang. Ban đầu, tôi muốn biết:

  • Có bao nhiêu cuộc họp trong hệ thống?
  • Có bao nhiêu người dùng?
  • Tình trạng của họ là gì?

Để thực hiện điều này, tôi đã tạo ra một DataController.php và một model Data.php. Tôi cũng đã tiến một bước và thay vì tạo HTML thuần trong chế độ xem của mình để hiển thị, thì tôi đã tạo ActiveDataProviders từ các truy vấn của mình và đưa chúng vào các grid widget của Yii; kết quả có vẻ tốt hơn và đơn giản hơn cho việc xây dựng và bảo trì.

Code này truy vấn số lượng những cuộc họp trong hệ thống được tổng hợp theo trạng thái của chúng:

Code này nằm trong /backend/views/data/current.php hiển thị nó:

Dường như điều này (dữ liệu còn nhỏ vì website chưa khởi chạy thật sự!):

Meeting Planner Dashboard - Real Time Meeting Data

Sau đó, tôi đã tạo thêm một số truy vấn thời gian thực và phần còn lại của trang trông như sau:

Meeting Planner Dashboard - Real Time Data People and Places

Về cột mời People ActiveVia Invite ở phía trên, nếu bạn mời một người tham gia cuộc họp, chúng tôi sẽ tính họ là một User (người dùng) thông qua Invite cho đến khi họ tạo mật khẩu hoặc liên kết với tài khoản xã hội của họ. Cho đến lúc đó, quyền truy cập duy nhất của họ với Meeting Planner là thông qua liên kết lời mời qua email và id xác thực của lời mời đó.

Rõ ràng, tôi sẽ mở rộng các tùy chọn báo cáo thời gian thực khi dự án tăng trưởng.

Báo cáo dữ liệu lịch sử

Việc tạo báo cáo lịch sử các hoạt động trên toàn hệ thống đã được chứng minh có ảnh hưởng hơn. Tôi quyết định tạo một số layer để thu thập dữ liệu lệ thuộc.

Layer dưới cùng là bảng UserData tóm tắt trạng thái của hoạt động tài khoản trong lịch sử của một người lúc ở một ngày cụ thể vào lúc nửa đêm. Về cơ bản, chúng ta sẽ làm điều này mỗi đêm.

Layer trên cùng là bảng HistoryData xây dựng các phép tính của nó bằng cách sử dụng bảng UserData của đêm trước.

Tôi cũng cần viết code để xây dựng hai bảng từ đầu vì dịch vụ của chúng tôi đã hoạt động trong vài tháng.

Tôi sẽ hướng dẫn bạn cách tôi thực hiện điều này. Kết quả hóa ra khá tốt.

Xây dựng bảng migration (di chuyển dữ liệu)

Đây là bảng migration cho UserData — nó chứa dữ liệu tôi đã tính mỗi đêm để hỗ trợ cho việc tính toán lịch sử:

Ví dụ: count_meeting_participant_last30 là số lượng cuộc họp mà người này được mời tham gia trong 30 ngày qua.

Đây là bảng migration (di chuyển dữ liệu) cho HistoricalData — hầu hết tất cả các cột trong bảng này cần phải được tính toán từ các lớp dữ liệu khác nhau:

Khi thảo luận với người cố vấn của tôi, chúng tôi nhận ra rằng các nhà đầu tư tiềm năng sẽ muốn biết mọi người đang phản ứng như thế nào với website. Tôi đã tạo một phép đo cho một số liệu gọi là percent_invited_own_meeting, là viết ngắn gọn cho phần trăm người dùng được mời tham gia cuộc họp đầu tiên của họ, những người thích dịch vụ vừa đủ để sử dụng nó để lên lịch cuộc họp của riêng họ trong tương lai. Tôi sẽ xét thêm về các tính toán một chút ở bên dưới.

Tất cả những phần di chuyển dữ liệu nằm trong /console/migrations. Sẽ trông như thế này khi bạn triển khai phần di chuyển cơ sở dữ liệu.

Thu thập dữ liệu báo cáo

Vào nửa đêm mỗi buổi tối, một task background (công việc tự vận hành không đồng bộ) sẽ tính toán số liệu thống kê của đêm trước đó. Đây là phương thức để vận hành background:

Tôi thiết lập một cron job actionOvernight để thực thi vào lúc 1:15 sáng mỗi ngày. Lưu ý: Khi bạn tập trung chăm chú lập trình một startup cả ngày và đêm, một cron job là tất cả về actionOvernight bạn sẽ có được.

Để xây dựng lịch sử dữ liệu, tôi đã tạo một hàm recalc(). Hàm này xoá sạch các bảng và xây dựng mỗi bảng như thể nó xảy ra mỗi ngày tại một thời điểm.

Lưu ý: Thời gian after là giải pháp để loại trừ một số người dùng đầu tiên, đã đăng ký trước khi họ có thể lên lịch cuộc họp. Tôi muốn dữ liệu lịch sử để phản ánh một mô tả chính xác hơn về hoạt động gần đây (hiện tại có một vài trăm tài khoản cũ không có bất kỳ hoạt động nào). Tôi có thể sẽ xóa nó vào một ngày sau đó.

Tính toán cho bảng User Data

Dưới đây là phần code để đưa dữ liệu vào bảng UserData mỗi đêm:

Chủ yếu là tính tổng số người dùng của những cuộc họp, địa điểm, bạn bè và trong một số trường hợp ở trong phạm vi thời gian 30 ngày.

Dưới đây là code phát hiện liệu người dùng này đã chọn lên lịch cuộc họp bằng dịch vụ sau khi được mời hay chưa:

Tính toán HistorialData

Dưới đây là phần code tận dụng UserData để đưa vào HistoricalData:

Nó tóm tắt tổng số và tính toán tỷ lệ phần trăm và con số trung bình.

Sản phẩm hoàn chỉnh trông giống thế này đây:

Meeting Planner Dashboard - Final Historical Data

Mặc dù chúng ta đang thấy phần phân tích chỉ riêng việc sử dụng của phiên bản trước alpha, thì dữ liệu hấp dẫn và tiềm năng hữu ích của điều này cũng tỏ ra xuất sắc. Và tất nhiên, thật dễ dàng mở rộng việc thu thập và phân tích dữ liệu bằng cách sử dụng phần code cơ sở mà tôi đã chia sẻ với bạn ngày hôm nay.

Nhân tiện, tỷ lệ phần trăm người dùng được mời để tự thiết lập cuộc họp của riêng họ là khoảng 9% (nhưng đó là một tập dữ liệu nhỏ).

Có lẽ bạn đang tự hỏi liệu chúng ta có thể tạo biểu đồ cho các cột này không. Tôi hy vọng sẽ giải quyết vấn đề đó trong một bài hướng dẫn tiếp theo, điều này đòi hỏi sự tương tác với các nữ thần của nhóm biên tập. Chỉ là FYI (thông tin cho bạn), không phải ai cũng quay lưng lại với những cuộc đối thoại đó. Tôi cũng sẽ yêu cầu cô ấy cho phép tôi viết về các tính năng quản trị như vô hiệu hoá người dùng, gửi lại mật khẩu, v.v.

Meeting Planner Dashboard - Game of Thrones Melisandre

Nếu bạn không nghe gì từ tôi, thì nghĩa là Lord of Light (chúa tể của ánh sáng) đã giao việc cho tôi làm.

Tiếp theo là gì đây?

Như đã đề cập, hiện tôi đang làm việc ráo riết để chuẩn bị cho bản phát hành alpha của Meeting Planner. Tôi chủ yếu tập trung vào các cải tiến và tính năng quan trong để việc phát hành phiên bản alpha diễn ra suôn sẻ.

Hiện giờ tôi đang theo dõi mọi thứ qua Asana, tôi sẽ viết về điều đó trong bài hướng dẫn sắp tới; nó cực kỳ hữu ích. Ngoài ra còn có một số tính năng mới thú vị đang được thực hiện. (Là một giáo viên dạy yoga, tôi nghĩ Asana là tên sản phẩm tồi tệ nhất từ ​​trước tới nay. Về cơ bản, họ đã sử dụng một thuật ngữ phổ biến trong yoga được phát âm là āsana hoặc ah-sana và thay đổi cách phát âm thành a-sauna (phòng tắm hơi) - và đưa nó vào video giới thiệu của họ. Năm ngoái thật không dễ dàng gì với tôi khi nói chuyện với các thành viên của nhóm khách hàng về những gì họ đặt trong phòng tắm hơi và nói chuyện với những học viên yoga về āsana. Nhưng tôi lạc đề rồi.)

Tôi cũng bắt đầu tập trung hơn vào nỗ lực thu thập những khoản đầu tư sắp tới với Meeting Planner. Tôi chỉ mới bắt đầu thử nghiệm với WeFunder dựa trên việc thực hiện các quy tắc huy động vốn từ cộng đồng mới của SEC. Xin vui lòng cân nhắc theo hồ sơ của chúng tôi. Tôi cũng sẽ viết thêm về điều này trong một bài hướng dẫn trong tương lai.

Một lần nữa, trong khi bạn đang chờ đợi nhiều bài viết khác, hãy lên lịch cuộc họp đầu tiên của bạn và thử những template với bạn bè với hộp thư Gmail. Ngoài ra, tôi rất cảm kích nếu bạn chia sẻ trải nghiệm của bạn trong phần bình luận bên dưới, và tôi luôn quan tâm đến những đề xuất của bạn. Bạn cũng có thể liên hệ trực tiếp với tôi trên Twitter @reifman. Bạn cũng có thể đăng chúng tại trang hỗ trợ của Meeting Planner.

Đón xem những bài hướng dẫn sắp tới trong loạt bài Building Your Startup With PHP.

Những liên kết liên quan

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.