Skip to content

AbdolHamidDev/Mobifone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mobifone Logo

Mobifone - Hệ thống Quản lý Viễn thông

Status Release License Laravel Tailwind MySQL

Live Demo CI/CD Tests


Giới thiệu

Mobifone là nền tảng thương mại điện tử viễn thông toàn diện mã nguồn mở, được xây dựng bằng Laravel 11 bởi sinh viên Trường Đại học An Giang (AGU). Hệ thống cho phép khách hàng tra cứu, đăng ký các gói cước di động, mua SIM số trực tuyến và quản lý dịch vụ viễn thông Mobifone. Dự án tích hợp đầy đủ hệ thống quản trị (Admin Panel) với phân quyền chi tiết, hỗ trợ quy trình nghiệp vụ từ tiếp thị, bán hàng đến chăm sóc khách hàng.

Mục tiêu

  • Xây dựng hệ thống quản lý dịch vụ viễn thông tập trung
  • Thay thế quy trình thủ công bằng nền tảng số hiện đại
  • Đảm bảo khả năng mở rộng cao và dễ sử dụng

Đơn vị thực hiện

  • Trường Đại học An Giang (AGU)
  • Đồ án tốt nghiệp - Hệ thống quản lý dịch vụ viễn thông Mobifone

Tác giả

AbdolHamidDev Abdol Hamid
Portfolio
LinkedIn
abdolhamid.dev@gmail.com
GitHub
Báo cáo thực tập (Ấn phẩm khoa học)

Nếu bạn thấy dự án hữu ích, hãy ủng hộ tôi một ly cà phê nhé:

Buy Me A Coffee


Demo trực tiếp

URL Production: https://mobifone.onrender.com


Công nghệ sử dụng

Danh mục Công nghệ
Backend Laravel 11, PHP 8.2+
Frontend Blade Templates, Tailwind CSS 3, DaisyUI, Alpine.js
Database MySQL 8 / MariaDB
Build Tool Vite 6
Xác thực Custom Login, OTP (SMS)
Phân quyền Spatie Laravel Permission (RBAC)
Real-time Pusher Channels (Chat)
Xuất/Nhập Maatwebsite/Laravel-Excel (XLSX, CSV)
Bảng dữ liệu Yajra Laravel DataTables
QR Code endroid/qr-code, SimpleSoftwareIO/simple-qrcode
HTTP Client GuzzleHTTP
Bản đồ JavaScript Map API
Cache Redis (predis)

Tính năng

Giao diện khách hàng

  • Trang chủ - Banner quảng cáo, gói cước nổi bật, tin tức, đăng ký nhanh
  • Gói cước di động - Tra cứu, lọc theo loại thuê bao (trả trước/trả sau), chi tiết, đăng ký online
  • Gói DATA - Tra cứu gói data 4G/5G với bộ lọc
  • Mua SIM số - Chọn theo kho số, lọc VIP/ thường, đặt mua 2 bước, QR code, tra cứu đơn hàng
  • Chuyển mạng giữ số (MNP) - Đăng ký chuyển mạng online
  • Dịch vụ quốc tế - Cước gọi quốc tế, roaming, VoIP, nhà khai thác
  • Cửa hàng - Tìm cửa hàng Mobifone gần nhất
  • Tin tức & KM - Bài viết khuyến mãi
  • Tuyển dụng - Việc làm, nộp CV online
  • Chat hỗ trợ - Hỗ trợ thời gian thực (cần OTP)
  • Xác thực OTP - Đăng nhập SMS, tra cứu gói, lịch sử hủy
  • Hồ sơ KH - Gói đã đăng ký, lịch sử hủy

Hệ thống quản trị

Module Mô tả Quyền
Quản lý nhân viên CRUD, gán vai trò quản lý nhân viên
Quản lý vai trò Tạo/sửa/xóa vai trò, phân quyền quản lý vai trò
Gói cước CRUD, Excel, quản lý trạng thái quản lý gói cước
Gói DATA CRUD, Excel import/export quản lý gói data
Số thuê bao Quản lý kho SIM, Excel quản lý số thuê bao
Tin tức & KM Đăng bài, kiểm duyệt, kích hoạt quản lý tin tức
Loại thuê bao Quản lý danh mục quản lý loại thuê bao
Dịch vụ Quản lý dịch vụ GTGT quản lý dịch vụ
Quốc gia Quản lý danh mục quốc gia quản lý quốc gia
Nhà khai thác Quản lý nhà khai thác quốc tế quản lý nhà khai thác
Cước quốc tế Bảng giá cước gọi quản lý cước quốc tế
VoIP Gói cước VoIP quản lý VoIP
Đăng ký gói Danh sách đăng ký quản lý đăng ký gói
Gói tự tạo Gói cước khách hàng tạo quản lý gói tự tạo
Đơn hàng Quản lý đăng ký, thanh toán, giao hàng quản lý đăng ký
Chuyển mạng Quản lý chuyển đổi mạng quản lý chuyển mạng
Tuyển dụng Quản lý tin tuyển dụng quản lý tuyển dụng
CV Quản lý CV ứng viên quản lý CV
Cửa hàng Quản lý danh sách quản lý cửa hàng
Liên hệ Yêu cầu liên hệ quản lý liên hệ
Hủy gói Lịch sử hủy gói quản lý hủy gói
Chat Quản lý tin nhắn quản lý chat

Cơ sở dữ liệu

Hệ thống gồm 25+ bảng chính:

Bảng Mô tả
users Người dùng (admin + khách hàng)
roles / permissions Phân quyền (Spatie)
goicuocs / goicuoc_details Gói cước thoại/SMS
goidatas / goidata_details Gói data
so_thue_bao Kho SIM
orders / temporary_orders Đơn hàng SIM
dang_ky_chuyen_doi_mang Chuyển mạng giữ số
subscription_types / loaithuebao Loại thuê bao
dichvus / dichvu_chitiet Dịch vụ GTGT
package_registrations Lịch sử đăng ký gói
package_cancellations Lịch sử hủy gói
custom_packages Gói tự tạo
quoc_gia / nha_khai_thac Quốc gia & nhà khai thác
gia_cuoc_quoc_te Cước quốc tế
goi_voip_cuoc_phi VoIP & cước phí
news Tin tức & khuyến mãi
tuyendung / cv Tuyển dụng & CV
stores Cửa hàng
contacts Liên hệ
conversations / messages Chat hỗ trợ

Demo

Lọc gói cước

Demo Gói cước
Mua SIM số

Demo SIM

Tra cứu đơn hàng

Demo Tra cứu

Cài đặt nhanh

Yêu cầu

  • PHP 8.2+
  • Composer 2.x
  • MySQL 8.0 / MariaDB 10+
  • Node.js 20+ (frontend)
  • Redis (tùy chọn)

Cài đặt

# 1. Clone repository
git clone https://github.com/AbdolHamidDev/Mobifone.git
cd Mobifone

# 2. Cài đặt PHP dependencies
composer install

# 3. Cấu hình môi trường
cp .env.example .env
php artisan key:generate

# 4. Thiết lập database
php artisan migrate
mysql -u root -p mobifone < database/sample/mobifone.sql

# 5. Cài đặt frontend
npm install
npm run build

# 6. Chạy server
php artisan serve

Quan trọng: File database/sample/mobifone.sql là bắt buộc để ứng dụng hoạt động.


Triển khai Production

Deploy trên Render

Dự án được deploy lên Render sử dụng Docker. Live demo: https://mobifone.onrender.com

Yêu cầu bắt buộc: File Dockerfile phải có ở root repository để Render có thể build và deploy.

Bước 1: Chuẩn bị Database trên Aiven

  1. Đăng ký / đăng nhập tại Aiven Console
  2. Tạo service mới → chọn MySQL (free tier)
  3. Chọn region gần Việt Nam, ví dụ: aws-ap-southeast-1 (Singapore)
  4. Sau khi service sẵn sàng, vào tab Connection information để lấy thông tin:
    • Host: mysql-xxxxx.aivencloud.com
    • Port: 3306
    • User: avnadmin
    • Password: (mật khẩu bạn đặt khi tạo service)
    • Database: defaultdb

Bước 2: Import dữ liệu mẫu vào Aiven

Trước khi deploy, cần import dữ liệu mẫu vào database Aiven:

Cách 1: Dùng Aiven Query Editor (khuyến nghị)

  • Vào MySQL service trên Aiven Console
  • Chọn tab Query editor
  • Mở file database/sample/mobifone.sql trong dự án
  • Copy toàn bộ nội dung và paste vào Query editor
  • Click Execute

Cách 2: Dùng MySQL CLI

mysql -h mysql-xxxxx.aivencloud.com -P 3306 -u avnadmin -p defaultdb < database/sample/mobifone.sql

Bước 3: Deploy Web Service trên Render

  1. Đảm bảo code đã push lên GitHub và có đủ các file sau ở root repository:
    • Dockerfile
    • render.yml
  2. Vào Render Dashboard
  3. Click New +Web Service
  4. Connect GitHub repository của bạn
  5. Cấu hình cơ bản:
    • Name: mobifone
    • Environment: Docker
    • Plan: Free (đủ cho demo) hoặc Starter
    • Region: chọn region gần Aiven database (ví dụ: Singapore)
  6. Render sẽ tự động đọc Dockerfilerender.yml cho build và deploy

Bước 4: Thêm Environment Variables trên Render

Vào tab Environment của Web Service, thêm các biến sau:

Key Value Ghi chú
APP_ENV production
APP_DEBUG false Tắt debug ở production
APP_URL https://mobifone.onrender.com Thay bằng domain thực tế
APP_KEY (Render tự generate) Hoặc chạy php artisan key:generate
DB_CONNECTION mysql
DB_HOST mysql-xxxxx.aivencloud.com Host từ Aiven
DB_PORT 3306
DB_DATABASE defaultdb Từ Aiven
DB_USERNAME avnadmin Từ Aiven
DB_PASSWORD your_password Password từ Aiven
SESSION_DRIVER cookie Render không hỗ trợ session database
CACHE_STORE file
QUEUE_CONNECTION sync
BROADCAST_DRIVER log Tắt Pusher realtime
MAIL_MAILER log Log mail thay vì gửi thật
TRUSTED_PROXIES * Cho phép Render proxy
  1. Click Create Web Service
  2. Đợi 5-10 phút để Render build Docker image và deploy

Cấu trúc render.yml

File render.yml ở root repository xử lý deploy với Docker:

services:
  - type: web
    name: mobifone
    env: docker
    dockerfilePath: ./Dockerfile
    dockerContext: .
    envVars:
      - key: APP_KEY
        generateValue: true
      - key: APP_ENV
        value: production
      - key: APP_DEBUG
        value: false
      - key: APP_URL
        value: https://mobifone.onrender.com
      - key: TRUSTED_PROXIES
        value: "*"
      - key: DB_CONNECTION
        value: mysql
      - key: DB_HOST
        sync: false
      - key: DB_PORT
        sync: false
      - key: DB_DATABASE
        sync: false
      - key: DB_USERNAME
        sync: false
      - key: DB_PASSWORD
        sync: false
      - key: SESSION_DRIVER
        value: cookie
      - key: CACHE_STORE
        value: file
      - key: QUEUE_CONNECTION
        value: sync
      - key: BROADCAST_DRIVER
        value: log
      - key: MAIL_MAILER
        value: log

Lưu ý:

  • env: docker bắt buộc để Render sử dụng Docker build
  • dockerfilePath: ./Dockerfile chỉ định đường dẫn đến Dockerfile
  • Các biến DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD được đánh dấu sync: false nghĩa là bạn cần nhập thủ công trên Render Dashboard

Cấu hình

Environment Variables

# Application
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:YOUR_APP_KEY
APP_DEBUG=true
APP_URL=http://localhost

# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mobifone
DB_USERNAME=root
DB_PASSWORD=

# Real-time (Pusher)
PUSHER_APP_ID=your_app_id
PUSHER_APP_KEY=your_app_key
PUSHER_APP_SECRET=your_app_secret
PUSHER_APP_CLUSTER=ap1
BROADCAST_DRIVER=pusher

# Cache (Redis - optional)
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

Kiểm thử

# Chạy toàn bộ test suite
php artisan test

# Hoặc dùng PHPUnit
./vendor/bin/phpunit

Tài liệu tham khảo


Đóng góp

Chúng tôi hoan nghênh mọi đóng góp! Vui lòng:

  1. Fork dự án
  2. Tạo branch: git checkout -b feature/ten-tinh-nang
  3. Commit: git commit -m 'Thêm tính năng mới'
  4. Push: git push origin feature/ten-tinh-nang
  5. Mở Pull Request

Lời cảm ơn

Giảng viên hướng dẫn - Trường Đại học An Giang

  • Người hướng dẫn: Huỳnh Thanh Việt
  • Cố vấn học tập, Tiến sĩ Giảng viên: Huỳnh Lý Thanh Nhàn

Hội đồng bảo vệ

  • Nguyễn Hoàng Tùng
  • Nguyễn Văn Đông

Mentor thực tập

  • Mentor tại Mobifone: Lê Đường

Cảm ơn chung

  • Trường Đại học An Giang (AGU) đã tạo điều kiện và hỗ trợ
  • Mobifone đã cung cấp API và hỗ trợ
  • Laravel framework mạnh mẽ
  • Cộng đồng open source với các thư viện tuyệt vời

Giấy phép

Dự án được cấp phép MIT License. Xem LICENSE để biết thêm.


Ủng hộ

Nếu dự án hữu ích, hãy ủng hộ tôi một ly cà phê!

Buy Me A Coffee


Liên hệ

Kênh Link
Portfolio https://hamid.id.vn
LinkedIn linkedin.com/in/hamidabdol
GitHub github.com/AbdolHamidDev
Email abdolhamid.dev@gmail.com
Báo cáo thực tập Ấn phẩm VNULIB

Đồ án tốt nghiệp - Trường Đại học An Giang (AGU)
Hệ thống quản lý dịch vụ viễn thông Mobifone
Xây dựng với Laravel

GitHub stars GitHub forks

About

Đồ án tốt nghiệp - Nền tảng thương mại điện tử viễn thông mã nguồn mở xây dựng bằng Laravel 11. Quản lý gói cước Mobifone, mua SIM số, chuyển mạng MNP, dịch vụ quốc tế, VoIP. Hệ thống Admin Panel đầy đủ với phân quyền RBAC, chat real-time Pusher, import/export Excel. Dành cho sinh viên CNTT.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Sponsor this project

Packages

 
 
 

Contributors