Ứng dụng quản lý sinh viên phi tập trung (DApp) được xây dựng trên Sui blockchain, cho phép quản lý hồ sơ sinh viên, điểm số và cấp chứng chỉ một cách minh bạch và bảo mật.
- 🎯 Quản lý sinh viên: Tạo và quản lý hồ sơ sinh viên trên blockchain
- 📊 Dashboard: Hiển thị thống kê tổng quan về sinh viên, điểm số
- 📜 Cấp chứng chỉ: Phát hành chứng chỉ cho sinh viên với xác thực blockchain
- 💾 Lưu trữ: Kết hợp localStorage và blockchain để đảm bảo dữ liệu
- 🔄 Đồng bộ blockchain: Tải dữ liệu từ blockchain events
- 🔐 Xác thực: Chỉ Admin có quyền thêm sinh viên và cấp chứng chỉ
- 📚 Quản lý điểm số: Thêm điểm cho sinh viên theo từng môn học
- 📈 Tính GPA: Tự động tính GPA dựa trên điểm số
- React 18 - UI framework
- Vite - Build tool
- TailwindCSS - Styling
- @mysten/dapp-kit - Sui wallet integration
- @mysten/sui/client - Sui blockchain interaction
- Lucide React - Icons
- Sui Move - Smart contract language
- Sui Testnet - Deployment network
tfoproject/
├── sources/ # Move smart contracts
│ ├── tfoproject.move # Main contract
│ └── tfoproject_tests.move # Contract tests
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/
│ │ │ └── StudentManagement.jsx
│ │ ├── hooks/
│ │ │ └── useSuiWallet.js
│ │ ├── utils/
│ │ │ └── suiClient.js
│ │ └── constants/
│ │ └── contracts.js
│ └── package.json
├── Move.toml # Move package config
└── README.md
- Node.js >= 18
- Sui CLI
- Git
git clone https://github.com/NvkhoaDev54/tfoproject.git
cd tfoprojectcd frontend
npm installnpm run devỨng dụng sẽ chạy tại: http://localhost:5173
PACKAGE_ID: "0x..." // Địa chỉ package sau khi deploy
ADMIN_CAP: "0x..." // Object ID của AdminCap
REGISTRY: "0x..." // Object ID của StudentRegistry
NETWORK: "testnet"- Build contract:
sui move build- Deploy lên testnet:
sui client publish --gas-budget 100000000- Cập nhật địa chỉ contract trong
frontend/src/constants/contracts.js
- Click nút "Connect Wallet" ở góc trên bên phải
- Chọn Sui Wallet và xác nhận kết nối
- Đảm bảo ví có Sui testnet tokens
- Chuyển sang tab "Students"
- Click "Add Student"
- Điền thông tin: Student ID, Name, Email, Major, Enrollment Year
- Click "Add Student" và xác nhận transaction trong ví
- Chuyển sang tab "Certificates"
- Click "Issue Certificate"
- Điền thông tin chứng chỉ
- Click "Issue Certificate" và xác nhận transaction
- Click nút "Refresh from Blockchain" để tải dữ liệu mới nhất từ blockchain
- Dữ liệu tự động load khi mở lại trang
Tạo hồ sơ sinh viên mới (chỉ Admin)
public entry fun create_student(
_: &AdminCap,
registry: &mut StudentRegistry,
student_id: String,
name: String,
email: String,
major: String,
enrollment_year: u64,
ctx: &mut TxContext
)Cấp chứng chỉ cho sinh viên (chỉ Admin)
public entry fun issue_certificate(
_: &AdminCap,
student_id: String,
certificate_name: String,
issued_by: String,
issue_date: u64,
description: String,
recipient: address,
ctx: &mut TxContext
)Thêm điểm cho sinh viên (chỉ Admin)
public entry fun add_grade(
_: &AdminCap,
student_id: String,
course_code: String,
course_name: String,
credits: u64,
grade: u64,
semester: String,
year: u64,
recipient: address,
ctx: &mut TxContext
)Contract phát sinh các events để frontend có thể theo dõi:
StudentCreated: Khi tạo sinh viên mớiCertificateIssued: Khi cấp chứng chỉGradeAdded: Khi thêm điểm số
- Đảm bảo đã cài đặt Sui Wallet extension
- Click "Connect Wallet" để kết nối
- Kiểm tra ví có đủ SUI tokens
- Đảm bảo Student ID chưa tồn tại
- Kiểm tra tất cả trường đã điền đầy đủ
- AdminCap phải thuộc về địa chỉ ví đang kết nối
- Liên hệ admin để transfer AdminCap
- Chỉ owner của AdminCap mới có quyền tạo sinh viên và cấp chứng chỉ
- Tất cả transactions đều được ký bởi ví người dùng
- Dữ liệu được lưu bất biến trên blockchain
MIT License - Xem file LICENSE để biết thêm chi tiết
Mọi đóng góp đều được chào đón! Vui lòng:
- Fork dự án
- Tạo branch mới (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Mở Pull Request
- GitHub: @NvkhoaDev54
- Project Link: https://github.com/NvkhoaDev54/tfoproject
⭐ Nếu dự án này hữu ích, hãy cho một star nhé!