Nền tảng kết nối doanh nghiệp với các nhóm sinh viên. Dự án sử dụng Next.js App Router, TypeScript, Tailwind CSS, shadcn/ui, Auth.js và Prisma với SQLite.
npm install
cp .env.example .env
Trước khi chạy seed, hãy đổi SEED_USER_PASSWORD trong .env thành mật khẩu phát triển riêng của bạn.
npm run db:migrate -- --name init
npm run db:seed
Seed có tính lặp lại an toàn và tạo:
APPROVED để kiểm thử luồng sinh viên và gợi ý theo từng nhóm.Các tài khoản seed dùng chung mật khẩu được cấu hình qua SEED_USER_PASSWORD; mật khẩu được băm trước khi lưu.
Email đăng nhập mẫu:
admin@unibridge.localbusiness1@unibridge.local, business2@unibridge.local, business3@unibridge.localstudent1@unibridge.local đến student4@unibridge.localnpm run dev
Mở http://localhost:3000. Đăng ký tài khoản Doanh nghiệp hoặc Sinh viên, hoặc đăng nhập bằng tài khoản seed.
SEED_USER_PASSWORD trong .env, chạy npm run db:seed; tất cả tài khoản seed dùng cùng mật khẩu này.business1@unibridge.local và mật khẩu seed; xác nhận trang /business hiển thị điều hướng Doanh nghiệp.student1@unibridge.local; xác nhận trang /student hiển thị điều hướng Sinh viên.admin@unibridge.local; xác nhận trang /admin hiển thị điều hướng Quản trị viên./business, /student và /admin; mỗi đường dẫn phải chuyển đến /dang-nhap. Sau khi đăng nhập, chuyển hướng về đường dẫn được yêu cầu nếu đúng vai trò.admin@unibridge.local, mở /admin/problems và xác nhận bài toán mẫu đang chờ duyệt xuất hiện. Mở chi tiết, kiểm tra đủ thông tin doanh nghiệp và 8 trường bài toán; tải Du-lieu-kiem-duyet.csv.APPROVED và biến mất khỏi danh sách mặc định.student1@unibridge.local, mở /student/problems và xác nhận bài vừa duyệt xuất hiện; mở chi tiết và tải tài liệu đính kèm.student1@unibridge.local, mở /student/team, sửa hồ sơ nhóm và lưu. Kiểm tra thành viên/chuyên ngành, kỹ năng, kinh nghiệm/dự án, sản phẩm, thành tích và lĩnh vực quan tâm được lưu sau khi tải lại trang. Mở /student để kiểm tra “Gợi ý cho nhóm bạn”, lý do gợi ý và thứ tự theo điểm; student2 đến student4 có lịch sử và Reputation khác nhau để so sánh./student/problems; thử tìm theo từ khóa và lọc lần lượt lĩnh vực, kỹ năng, thời lượng, khoảng ngân sách. Lưu một bài toán, xác nhận nó xuất hiện ở /student/saved-problems, rồi bỏ lưu và xác nhận nó biến mất. Bài toán mẫu đã lưu ban đầu là “Làm mới nhận diện thương hiệu An Nhiên”.Xây dựng website bán hàng cho thực phẩm địa phương; kiểm tra form Approach có đủ sáu phần, thời gian và chi phí. Sửa hồ sơ mẫu của NextGen Digital và mở /student/applications để kiểm tra trạng thái. Tạo một tài khoản sinh viên mới, chưa tạo hồ sơ nhóm, thử gửi hồ sơ; thao tác phải bị từ chối ở server.business1@unibridge.local, mở bài toán bán hàng và chọn “So sánh nhóm ứng tuyển”. Kiểm tra hồ sơ nhóm, từng thành viên/chuyên ngành, kỹ năng, kinh nghiệm, sản phẩm, thành tích, lĩnh vực quan tâm, các phần Approach, thời gian và chi phí đề xuất. Mở một hồ sơ sinh viên vừa sửa và tải lại trang so sánh để xác nhận doanh nghiệp thấy dữ liệu mới nhất.student1@unibridge.local, rút hồ sơ NextGen Digital cho bài toán bán hàng. Đăng nhập doanh nghiệp và xác nhận hồ sơ rút không còn trong bảng so sánh; chọn một nhóm còn SUBMITTED. Đăng nhập sinh viên và xác nhận hồ sơ rút vẫn là WITHDRAWN, nhóm được chọn là SELECTED, các hồ sơ SUBMITTED còn lại thành REJECTED, và hồ sơ WITHDRAWN không bị đổi trạng thái.student1@unibridge.local; đăng nhập doanh nghiệp sở hữu bài toán và xác nhận chuông thông báo có liên kết tới danh sách hồ sơ ứng tuyển.ViewLog sau khi xem chi tiết, SearchLog sau khi tìm/lọc và SavedProblem sau khi lưu bài toán.npm run lint: kiểm tra ESLint.npm run build: kiểm tra build Next.js.npm test: chạy unit test cho bộ chấm điểm Recommendation.npm run db:generate: sinh Prisma Client.npm run db:studio: mở Prisma Studio.