shiping
면접·시험 도우미, AI가 실시간으로 풀이 아이디어를 제공
중학생을 위한 픽셀 아트 도시형 자연과학 학습 세계로, 도서관·퀴즈 아케이드·오류 수정 스테이션·STEM 실험실을 제공합니다
Thế giới học tập Khoa học tự nhiên dạng thành phố pixel-art dành cho học sinh THCS: thư viện, Quiz Arcade, trạm sửa lỗi, phòng STEM.
교육TypeScript · HTMLGitHub @TangXuanTuyen온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Eduverse
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Nền tảng học Khoa học Tự nhiên (KHTN) lớp 6-9 dạng thành phố pixel-art. Học sinh khám phá thành phố, vào các địa điểm để học bài, làm bài tập, chơi game ôn tập và nhận huy hiệu.
# Node 24 LTS (nếu cài tại ~/.local/node)
export PATH="$HOME/.local/node/bin:$PATH"
# Clone & cài đặt
git clone https://github.com/TangXuanTuyen/Eduverse.git
cd Eduverse
npm install
# Tạo file biến môi trường
cp .env.example .env.local
# Sửa .env.local: thêm Supabase URL, anon key, service role key, Gemini API key
| Biến | Mô tả | Bắt buộc |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | URL project Supabase | ✅ |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Anon key (công khai) | ✅ |
SUPABASE_SERVICE_ROLE_KEY | Service role key (chỉ server) | ✅ |
SUPABASE_DB_URL | Database URL (cho migration) | ✅ |
GEMINI_API_KEY | Google Gemini API key (chỉ server) | Cho AI |
⚠️
SUPABASE_SERVICE_ROLE_KEYvàGEMINI_API_KEYKHÔNG BAO GIỜ có tiền tốNEXT_PUBLIC_.
npm run dev # http://localhost:3000
npm run build # Build production
npm run typecheck # Kiểm tra TypeScript
npm test # Vitest unit tests (132 tests)
npm run db:push # Đẩy migration lên Supabase (cần SUPABASE_DB_URL)
npm run seed # Tạo dữ liệu giả (2 GV, 10 HS, 39 câu hỏi, 3 bài giao...)
Seed tạo:
.seed-credentials.local.md sau khi chạyapp/
(auth)/ # Đăng nhập, onboarding
student/(city)/ # Khu vực học sinh (bản đồ thành phố)
library/ # Thư viện học trực quan
arcade/ # Arcade (Thử thách nhanh, Đấu trùm)
review/ # Trạm sửa lỗi
stem/ # Phòng thí nghiệm STEM
assignments/ # Bài giao
achievements/ # Thành tích
tutor/ # AI Tutor (trang đầy đủ)
teacher/ # Khu vực giáo viên
parent/ # Khu vực phụ huynh
api/ # API routes
components/
city/ # Bản đồ, HUD, điều khiển
character/ # Chọn & tuỳ chỉnh nhân vật
companion/ # Chatbot Vina (áo dài pixel-art)
games/ # Boss Battle, Drag-drop Lab
learning/ # Modal học tập
tutor/ # Chat AI Tutor
ui/ # DialogFrame, BreakReminder, AnswerMark
game/engine/ # Va chạm, tìm đường, dữ liệu bản đồ
lib/
ai/ # Provider, safety, system prompts
auth/ # Session, roles, identifier
supabase/ # Client, admin, proxy
services/ # Logic server: XP, grading, AI tutor, reports
supabase/migrations/ # 14 migration files
tests/
unit/ # Vitest: grading, XP, safety, auth
db/ # RLS tests (PGlite)
| Vai trò | Mô tả |
|---|---|
admin | Quản trị hệ thống |
teacher | Giáo viên: tạo phòng, câu hỏi, bài giao, xem báo cáo |
student | Học sinh: học bài, làm bài, chơi game, hỏi AI |
parent | Phụ huynh: xem báo cáo con em |
Quyền đọc từ public.profiles (server), KHÔNG từ metadata người dùng. Mọi ghi đi qua service role.
question_answersanon không có quyền trên bất kỳ bảng/hàm nàoauthenticated chỉ SELECT hàng của mìnhnpm run db:push để áp dụng migration mớinpm run seed để tạo dữ liệu demo