Báo cáo project

UEconnect.

Mạng xã hội học thuật đã xác thực dành cho sinh viên, cựu sinh viên và cố vấn trường HCMUE, phát triển trên nền tảng Laravel 13 & Livewire 4.

Nhóm 5 thành viênLaravel 13Livewire 4PHP 8.3Reverb/EchoQdrant/BGE-M3Cloudinary/R2Docker/Azure
Cuộn xuống để khám phá

Chức năng chính

Tách rõ account và trạng thái verified để sinh viên, mentor, alumni, advisor có quyền truy cập phù hợp.

AI xác minh thẻ sinh viên

Luồng camera/web upload phân tích thẻ bằng OCR, matching thông tin và fallback Gemini/OpenRouter khi cần review.

Microsoft SSO & email

Hỗ trợ Microsoft OAuth theo domain HCMUE và SmartMailer chọn Resend/Outlook theo loại email.

Mentor & Alumni access

Có luồng yêu cầu mentor, phê duyệt, thu hồi quyền, discovery và nhắn tin theo quan hệ hợp lệ.

Community & club operations

Community có thành viên, manager, join request, resource review, suggestion review và moderation riêng.

Realtime bằng Reverb/Echo

Message, conversation update, notification và presence được thiết kế bằng Laravel Broadcasting/Reverb/Echo.

HCMUE RAG chatbot

Ingestion PDF, chunking, Qdrant vector search, BGE-M3 embedding, citation guard và fallback LLM.

Media storage & quota

Routing media local/R2/Cloudinary, private signed URL, WebP variant job và quota theo user/global.

Admin vận hành

Admin quản lý verification, users, mentor access, reports, communities, media, audit logs, AI logs và settings.

Docker/Azure deployment

Commit history ghi nhận Docker, Azure VM, Nginx reverse proxy, queue worker, Reverb và smoke test assets.

Situation - Bối cảnh

Tôi đặt UEconnect trong bối cảnh sinh viên HCMUE cần một nơi hỏi đáp, kết nối mentor/alumni và theo dõi cộng đồng với danh tính có kiểm chứng.

Nhiều nhóm người dùng

Dự án bao gồm sinh viên, mentor, alumni, advisor, club/community manager, moderator và admin, mỗi nhóm có trách nhiệm khác nhau.

Không chọn bài social app dễ

Tôi chọn bài toán trust, verification và governance vì đây là phần làm một mạng xã hội học thuật khác với một feed demo thông thường.

Laravel modular monolith

Source chia theo Actions, DTOs, Enums, Events, Jobs, Policies, Services, Support và Models để giữ domain lớn nhưng vẫn theo dõi được.

AI có dữ liệu trường học

Thay vì chatbot trả lời chung chung, dự án có pipeline import tài liệu học thuật, chương trình đào tạo, handbook và Qdrant index.

Email và domain thực tế

Mailer có route riêng cho email HCMUE và email phổ thông, trong đó Resend dùng domain gửi `send.ueconnect.io.vn` với DKIM-style setup.

Hạ tầng nhiều process

Deployment không chỉ là `php artisan serve`; repo có Docker, Nginx, PHP-FPM, queue worker, scheduler, Reverb và smoke test cho asset build.

Mục tiêu học fullstack nghiêm túc

UEconnect giúp tôi luyện cả product thinking, database modeling, auth/permission, realtime, AI integration và DevOps thay vì chỉ tập trung UI.

Task - Nhiệm vụ

Nếu chỉ kiểm tra email trường, tài khoản vẫn có thể thiếu thông tin vai trò; vì vậy hệ thống cần verification request, evidence, review action và audit trail.

Role matrix phức tạp

Sinh viên, mentor, alumni, advisor, admin và community manager không thể dùng chung một permission model cho post, report, community và verification.

AI verification có rủi ro sai

OCR có thể đọc thiếu dấu, ảnh mờ, sai MSSV hoặc thiếu font/language pack; code phải có risk flags, fallback và trạng thái manual review.

RAG dễ trả lời ảo

Chatbot học thuật phải biết khi nào dùng database structured query, khi nào dùng Qdrant retrieval, khi nào từ chối câu ngoài phạm vi và khi nào cần citation guard.

Realtime cần đúng quyền

Messaging chỉ nên chạy trong conversation hợp lệ; nếu channel/private event lỏng, người dùng có thể nhận tin hoặc notification không thuộc về mình.

Media vừa công khai vừa riêng tư

Avatar/community cover có thể public qua Cloudinary, nhưng evidence, attachment riêng tư và media nhạy cảm cần signed URL/policy.

Admin dễ bị quá tải

Nếu verification, reports, mentors, media, AI logs và community request dồn chung một màn hình, admin khó xử lý và dễ bỏ sót việc quan trọng.

Deploy Laravel không chỉ copy code

Commit history cho thấy phải xử lý Vite manifest, Nginx reverse proxy, websocket smoke test, queue/reverb worker và quyền file build assets.

Bug thật từ media/community

Có commit sửa conflict upload avatar community, lỗi xóa media, CSS/JS asset không serve đúng và Livewire multiple-root element.

Test evidence chưa nằm trong snapshot

Commit message ghi nhận PHPUnit/build smoke test và nhiều lỗi test từng được sửa, nhưng snapshot local hiện không còn thư mục test để chạy lại trực tiếp.

Action - Quyết định & Thực thi

Tôi gom logic vào Actions/Services/DTOs để controller và Livewire component không ôm quá nhiều nghiệp vụ verification, mentor, media và admin.

Xây verification pipeline

Tôi xử lý evidence bằng capture session, upload validation, OCR/local analyzer, matching service, risk flag và admin review action.

Bảo vệ private flows

Middleware `verified.identity`, policies, permission grants và admin gates được dùng để chặn người chưa đủ điều kiện vào app/admin/action nhạy cảm.

Tổ chức RAG theo nhiều lớp

Tôi tách ingestion, chunking, embedding, Qdrant vector store, query router, structured retrieval, answer composer và citation verifier để dễ debug.

Thiết kế LLM fallback

LlmGateway hỗ trợ Gemini, Ollama, OpenRouter/OpenAI và key rotation để giảm phụ thuộc vào một provider khi quota hoặc endpoint gặp lỗi.

Dùng Reverb/Echo cho realtime

Messaging, conversation update, notification broadcast và presence được đặt trên Laravel Broadcasting thay vì tự viết socket server riêng.

Xử lý media bằng router

MediaStorageRouter chọn local/R2/Cloudinary theo loại media; Cloudinary chỉ dùng public delivery, private media đi qua controller/policy/signed URL.

Thêm admin vận hành

AdminNavigation chia nhóm People & Access, Content & Safety, System để xử lý verification, reports, communities, mentors, media, AI logs và settings rõ hơn.

Sửa lỗi deploy có bằng chứng

Commit history ghi lại các lần sửa Docker/Nginx/Vite manifest, smoke test tài sản build, websocket timeout và reverse proxy cho Reverb.

Giữ tài liệu theo sản phẩm

Docs không chỉ liệt kê công nghệ mà có problem statement, domain overview, requirement, API, database, security, DevOps và chatbot system.

Result - Kết quả đạt được

Source có hơn 10 domain rõ ràng: identity, verification, profile, feed, community, mentor, messaging, notification, report, admin, media, AI và DevOps.

Admin scope khá đầy

Admin routes bao phủ dashboard, verification queue, users, mentors, reports, communities, announcements, media, audit logs, AI chat logs và settings snapshot.

AI có hai nhánh thực tế

Dự án có cả AI verification cho thẻ sinh viên và HCMUE chatbot/RAG, mỗi nhánh có service, provider, fallback và dữ liệu riêng.

Realtime đúng với Laravel stack

Repo dùng Laravel Reverb/Echo, phù hợp với app Laravel có private channel, broadcast events và quyền truy cập theo user/conversation.

Media có vận hành và quota

Không chỉ upload ảnh; code có variant processing, Cloudinary fallback/status, quota service, admin media console và private/public delivery split.

Có dấu vết debug thật

Commit history ghi lại lỗi community avatar, ViteManifestNotFoundException, websocket smoke test treo, Nginx asset serving, verification WebP và idempotent job retry.

Có dấu vết CI/CD

Các commit deploy cho thấy GitHub Actions, Docker, Azure VM, Nginx reverse proxy, post-build guards và smoke tests được chỉnh nhiều lần để chạy ổn hơn.

Kỹ năng tôi chứng minh được

UEconnect cho thấy tôi có thể đọc bài toán sản phẩm lớn, tách domain, xử lý auth/permission, realtime, AI pipeline, media và deployment.

Limitation thật

Snapshot local hiện không có test suite để chạy lại; AI/RAG phụ thuộc Qdrant/BGE/Gemini/Ollama/OpenRouter và cần giám sát quota/latency khi có nhiều người dùng.

Hướng phát triển tiếp

Tôi muốn hoàn thiện demo account an toàn, uptime/status page, e2e smoke test production, metrics cho AI/realtime/media và dashboard multi-community tốt hơn.

Điều tôi rút ra

UEconnect làm tôi hiểu rằng một social product đáng tin không nằm ở feed đẹp, mà ở identity, permission, moderation, audit, media policy và khả năng vận hành khi deploy thật.

Điểm cần làm rõ khi demo

Khi trình bày, tôi nên demo theo 3 luồng: xác minh danh tính, mentor/community interaction và admin xử lý verification/report/media để người xem thấy hệ thống liền mạch.

Preview & Trải nghiệm thực tế

Mỗi màn hình đi kèm phần mô tả chi tiết để làm rõ luồng hoạt động và trải nghiệm người dùng thực tế.

Project preview
Xem toàn màn hình
01

Project preview

Ảnh này dùng làm bằng chứng cho flow UEconnect. Màn hình "Project preview" giúp giải thích rõ trạng thái UI, dữ liệu hiển thị và thao tác người dùng ở bước đó.

Mã nguồn & Demo

Trải nghiệm dự án
Source Code & Demo

Xem toàn bộ mã nguồn trên GitHub hoặc mở bản demo hoạt động thực tế.

DỰ ÁN TIẾP THEO
Sẵn sàng cho cơ hội mới

Cùng hợp tác nhé.

Tôi đang tìm kiếm những thử thách mới và cơ hội hợp tác. Nếu bạn có câu hỏi hoặc chỉ muốn chào hỏi, tôi sẽ phản hồi sớm nhất có thể.