Mạng xã hội dành riêng cho lập trình viên — nơi chia sẻ code, tìm mentor, và cộng tác dự án cùng nhau. Xây dựng bằng Flutter (ứng dụng di động) + NestJS (máy chủ API) + Trí tuệ nhân tạo.
Nhấn vào bất kỳ màn hình nào để xem chi tiết kỹ thuật và các tính năng liên quan
Toàn bộ hệ thống được chia thành 4 phần chính, hoạt động phối hợp với nhau
Flutter 3.x + Dart
NestJS + TypeScript
PostgreSQL + MongoDB + Redis
Proxy AI open-source + SVD (scipy)
Ứng dụng Flutter → Máy chủ NestJS API → PostgreSQL (dữ liệu chính)
↕ ↕ MongoDB (dữ liệu chat)
Socket.io Tác vụ nền BullMQ Redis (bộ nhớ đệm)
↕ ↕ VPS Storage (ảnh/video, chia thư mục)
Thời gian thực Firebase FCM Proxy AI open-source (AI đánh giá code)
Áp dụng cho toàn bộ hệ thống, không riêng tính năng nào
Không tải hết dữ liệu — chỉ lấy 20 mục mỗi lần. Cuộn xuống → tự tải thêm. Dùng "con trỏ" thay vì số trang để tránh lặp dữ liệu.
Lấy 21 dòng, hiện 20, dòng 21 = biết còn tiếp hay không
Chống spam và tấn công — mỗi IP chỉ được gửi tối đa 100 yêu cầu/phút. Đăng nhập sai: tối đa 5 lần/phút. Đăng bài: 10 lần/phút.
Vượt giới hạn → trả lỗi 429 "Quá nhiều yêu cầu"
Dữ liệu hay truy cập được lưu tạm trong Redis (bộ nhớ siêu nhanh). Lần sau truy cập → trả ngay từ Redis, không cần hỏi database.
Có trong cache → trả ngay | Không có → hỏi DB → lưu cache
Khi bấm "Thích" hay "Theo dõi" → giao diện thay đổi NGAY LẬP TỨC, không đợi máy chủ. Nếu máy chủ báo lỗi → tự hoàn tác.
Bấm Like → trái tim đỏ ngay → API chạy nền → lỗi? → hoàn tác
WebSocket giữ kênh mở liên tục — tin nhắn mới, thông báo, trạng thái online đều cập nhật tức thì, không cần tải lại trang.
Mất kết nối → tự kết nối lại: 1s → 2s → 4s → tối đa 30s
Ảnh upload → tự nén và tạo 2 phiên bản: ảnh nhỏ (xem nhanh trong danh sách) + ảnh gốc (xem chi tiết). Lưu trên VPS theo thư mục.
Upload → nén 1200px → tạo thumb 300px + gốc → lưu /uploads/
14 công nghệ production-grade cho nền tảng mạng xã hội lập trình viên
| Công nghệ | Phân loại | Vai trò | Chi tiết sử dụng |
|---|---|---|---|
| Flutter 3.x | Giao diện | Ứng dụng di động | Viết 1 lần chạy cả Android + iOS. Quản lý trạng thái Riverpod, gọi API qua Dio, ảnh tự cache |
| Dart | Giao diện | Ngôn ngữ lập trình | Ngôn ngữ của Flutter, hỗ trợ null safety, xử lý bất đồng bộ tốt |
| NestJS | Máy chủ | API + WebSocket | Framework phía máy chủ, kiến trúc module. Guards (bảo vệ), Pipes (kiểm tra dữ liệu), WebSocket Gateway |
| TypeScript | Máy chủ | Ngôn ngữ lập trình | JavaScript nâng cao, kiểm tra kiểu dữ liệu tại lúc viết code, giảm lỗi runtime |
| PostgreSQL | CSDL | Cơ sở dữ liệu chính | Lưu người dùng, bài viết, theo dõi, tương tác, thông báo. Tìm kiếm full-text (tsvector + GIN). ORM Prisma |
| MongoDB | CSDL | Cơ sở dữ liệu chat | Lưu hội thoại + tin nhắn. Schema linh hoạt (text/ảnh/code/reactions). Tối ưu ghi nhanh liên tục |
| Redis | CSDL | Bộ nhớ đệm + thời gian thực | Cache feed (5 phút), profile (10 phút). Đếm giới hạn truy cập. Lưu trạng thái online |
| VPS Storage | Lưu trữ | Lưu trữ file trên VPS | Avatar, ảnh bài viết. Chia thư mục: /uploads/avatars/, /uploads/posts/, /uploads/chat/. Tạo 2 phiên bản: thumb + gốc. Nginx phục vụ file tĩnh |
| Proxy AI open-source | AI | Trí tuệ nhân tạo | Đánh giá code (chấm điểm 1-10, tìm lỗi), giải thích code (3 cấp độ), ghép mentor. Miễn phí: 15 yêu cầu/phút |
| Firebase FCM | Dịch vụ | Thông báo đẩy | Gửi thông báo khi người dùng offline. Hỗ trợ Android + iOS. Badge đếm số, nhấn vào → mở đúng bài viết |
| Docker | Vận hành | Đóng gói ứng dụng | Gói toàn bộ hệ thống vào container, chạy ở đâu cũng được. Compose: API, PostgreSQL, MongoDB, Redis |
| BullMQ | Máy chủ | Hàng đợi tác vụ | Xử lý nền: tái tính feed (15 phút), SVD (6 giờ), gửi email, gộp thông báo, dọn dẹp ảnh lẻ |
| scipy (SVD) | AI | Thuật toán gợi ý | Phân tích hành vi người dùng (xem/thích/lưu) → tìm bài viết phù hợp. Kết hợp: SVD 50% + nội dung 30% + mới 10% + bạn bè 10% |
| Judge0 API | Dịch vụ | Chạy code trực tuyến | Sân chơi code an toàn — chạy Python, JS, Dart, C++. Cách ly hoàn toàn (không mạng, giới hạn RAM). Miễn phí 50 lần/ngày |
Mỗi tính năng ghi rõ: cách hoạt động, luồng xử lý, API, cơ sở dữ liệu, tình huống đặc biệt