Reuben
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data β all from the browser, and deployed in milliseconds.
A comprehensive Learning Management System featuring course management, online examinations, and automated grading capabilities.
- User Management: Student and instructor registration/authentication
- Course Management: Create, edit, and manage courses
- Content Delivery: Upload and organize course materials
- Progress Tracking: Monitor student progress through courses
- Exam Creation: Multiple question types (multiple choice, true/false, short answer)
- Auto-Grading: Automatic scoring for objective questions
- Time Management: Configurable exam duration and deadlines
- Anti-Cheating: Basic measures like time limits and question randomization
- Results & Analytics: Detailed performance reports
- Multiple Choice (auto-graded)
- True/False (auto-graded)
- Short Answer (manual grading required)
- Essay Questions (manual grading required)
βββ backend/
β βββ database/
β β βββ migrations.ts # Database schema setup
β β βββ queries.ts # Database query functions
β βββ routes/
β β βββ auth.ts # Authentication endpoints
β β βββ courses.ts # Course management
β β βββ exams.ts # Exam management
β β βββ submissions.ts # Exam submissions
β β βββ static.ts # Static file serving
β βββ index.ts # Main API server
βββ frontend/
β βββ components/
β β βββ App.tsx # Main application
β β βββ Dashboard.tsx # User dashboard
β β βββ CourseList.tsx # Course listing
β β βββ ExamTaker.tsx # Exam interface
β β βββ GradeBook.tsx # Grades and results
β βββ index.html # Main HTML template
β βββ index.tsx # Frontend entry point
β βββ style.css # Styling
βββ shared/
βββ types.ts # Shared TypeScript types
- The system will automatically set up the database on first run
- Register as an instructor to create courses and exams
- Students can register and enroll in available courses
- Take exams and view results in real-time
- Backend: Hono.js API framework
- Database: SQLite with automatic migrations
- Frontend: React with TypeScript
- Styling: TailwindCSS
- Authentication: Session-based auth with secure cookies
POST /api/auth/register
- User registrationPOST /api/auth/login
- User loginPOST /api/auth/logout
- User logoutGET /api/auth/me
- Get current user
GET /api/courses
- List all coursesPOST /api/courses
- Create new course (instructors only)GET /api/courses/:id
- Get course detailsPOST /api/courses/:id/enroll
- Enroll in course
GET /api/courses/:id/exams
- List course examsPOST /api/courses/:id/exams
- Create new examGET /api/exams/:id
- Get exam detailsPOST /api/exams/:id/submit
- Submit exam answers
GET /api/exams/:id/submissions
- Get exam submissions (instructors)GET /api/submissions/:id
- Get specific submission details