Dự án môn Hệ thống Kinh doanh Thông minh: xây dựng hệ thống quản lý chi tiêu cá nhân cho sinh viên.
Hỗ trợ quản lý ví/tài khoản, ghi nhận giao dịch thu–chi, phân loại danh mục, báo cáo thống kê và phân quyền Admin/User.
- 1. Công nghệ sử dụng
- 2. Yêu cầu môi trường
- 3. Cài đặt và chạy project (Local)
- 4. Cấu hình Database
- 5. Migrate + Seed database
- 6. Cài frontend (Breeze UI) và chạy dự án
- 7. Tài khoản demo Admin
- 8. RBAC: Phân quyền Admin/User
- 9. Routes quan trọng
- 10. Cấu trúc thư mục
- 11. Lưu ý khi push GitHub
- 12. Troubleshooting
- 13. Roadmap
- 14. Thông tin dự án
- Backend: Laravel 11, PHP (CLI)
- Auth UI: Laravel Breeze (Blade)
- Database (dev): SQLite (
database/database.sqlite) - Frontend bundler: Vite (cần Node.js + npm để build assets)
- PHP >= 8.2 (khuyến nghị 8.2+)
- Composer
- Git
- Node.js + npm (khuyến nghị Node 18+)
- Mặc định: SQLite (dễ chạy local)
- Tuỳ chọn: MySQL
git clone https://github.com/dinhno12313/HTKDTM.git
cd HTKDTMcomposer installcp .env.example .env
php artisan key:generate- Tạo file SQLite:
touch database/database.sqlite- Mở
.envvà chỉnh:
DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/HTKDTM/database/database.sqliteGợi ý: lấy đường dẫn tuyệt đối bằng
pwdrồi thay vàoDB_DATABASE.
Chỉnh .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=htkdtm
DB_USERNAME=root
DB_PASSWORD=Tạo database htkdtm trước trong MySQL.
Lưu ý: SQLite không hỗ trợ FULLTEXT như MySQL, migration đã có điều kiện để tránh lỗi khi chạy SQLite.
Chạy:
php artisan migrate:fresh --seedLệnh này sẽ:
- Tạo toàn bộ bảng theo schema (migrations)
- Seed dữ liệu RBAC:
- Roles:
admin,user - Permissions: 6 quyền cơ bản
- Roles:
- Tạo user admin mẫu và gán role
admin
Mac (Homebrew):
brew install node
node -v
npm -vnpm install
npm run devphp artisan serveCác đường dẫn thường dùng:
- Trang chủ:
http://127.0.0.1:8000 - Login:
http://127.0.0.1:8000/login - Dashboard:
http://127.0.0.1:8000/dashboard - Admin:
http://127.0.0.1:8000/admin(chỉ Admin truy cập)
Sau khi seed:
- Email:
admin@example.com - Password:
Admin@12345(hoặc mật khẩu bạn set trong seeder)
php artisan tinkeruse Illuminate\Support\Facades\Hash;
DB::table('users')
->where('email', 'admin@example.com')
->update(['password' => Hash::make('Admin@12345')]);
exit;rolespermissionsrole_has_permissionsmodel_has_roles
Seeder tự tạo role admin và gán các permission:
manage_usersmanage_transactionsview_reports_allapprove_student_verificationmanage_plansmanage_system_categories
Route admin được bảo vệ bởi middleware:
auth(phải đăng nhập)admin(phải có role admin)
Ví dụ:
Route::middleware(['auth', 'admin'])->get('/admin', function () {
return 'Admin OK';
});/: welcome/login,/register,/logout: auth (Breeze)/dashboard: dashboard (Breeze)/profile: profile (Breeze)/admin: trang admin (role admin)
Kiểm tra danh sách route:
php artisan route:listdatabase/migrations/: migrations tạo schemadatabase/seeders/: seed roles/adminDatabaseSeeder.phpRolesAndPermissionsSeeder.phpAdminUserSeeder.php
app/Http/Middleware/IsAdmin.php: kiểm tra role adminroutes/web.php: routes webroutes/auth.php: routes auth (Breeze)
- KHÔNG commit
.env - KHÔNG commit database local
database.sqlite(đã ignore)
Kiểm tra file sqlite có bị track không:
git ls-files | grep database.sqliteNếu có:
git rm --cached database/database.sqlite
git commit -m "Remove local sqlite database"
git pushBạn đang đứng sai thư mục. Hãy cd vào thư mục project có file artisan.
Bạn chưa cài Node.js:
brew install nodeĐảm bảo routes/web.php có route profile và có dòng:
require __DIR__.'/auth.php';- 401: chưa login
- 403: login rồi nhưng không có role
admin
- Tích hợp tự động ghi nhận giao dịch từ email (
email_sources,email_messages) - Báo cáo thống kê chi tiêu theo thời gian/danh mục
- Tích hợp thanh toán (PayOS), xác minh sinh viên (giảm giá)
- Tích hợp chatbot tư vấn tài chính
- Môn: Hệ thống Kinh doanh Thông minh
- Đề tài: Hệ thống quản lý chi tiêu cá nhân
- Nhóm: Nhóm 10_Cụm3 – 64HTTT4