Projektwoche
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.
Viewing readonly version of main branch: v17View latest version
A dynamic project selection system where students can rank their preferences for different time slots.
- Dynamic Data Management: Timeslots and projects are stored in SQLite database
- Student Interface: Drag-and-drop interface for ranking project preferences
- Admin Panel: Web-based interface for managing timeslots, projects, and viewing responses
- Data Export: CSV export of student responses
- Responsive Design: Works on desktop and mobile devices
├── backend/
│ └── index.ts # Main backend with API routes and admin panel
├── schueler.html # Student-facing form (dynamically loads data)
└── README.md # This file
- Visit the main page to fill out project preferences
- Enter your name and drag projects to rank them for each timeslot
- Submit to save responses to database
- Visit
/adminto manage the system - Add/edit/deactivate timeslots and projects
- View all student responses
- Export responses as CSV
GET /- Student formGET /api/timeslots- Get all active timeslots with projectsPOST /api/responses- Submit student responses
GET /admin- Admin panel interfaceGET /api/debug/data- View all database dataGET /api/debug/reset- Reset database (development only)POST /api/admin/timeslots- Add new timeslotPOST /api/admin/projects- Add new projectPUT /api/admin/timeslots/:id- Update timeslotPUT /api/admin/projects/:id- Update projectDELETE /api/admin/timeslots/:id- Delete timeslotDELETE /api/admin/projects/:id- Delete projectGET /api/admin/export-csv- Export responses as CSV
id- Primary keytitle- Display title (e.g., "1. Dienstag 9:00-10:30 Uhr")time_description- Time descriptionorder_index- Display orderactive- Whether timeslot is activecreated_at- Creation timestamp
id- Primary keytimeslot_id- Foreign key to timeslotsproject_name- Project nameproject_description- Optional descriptionactive- Whether project is activecreated_at- Creation timestamp
id- Primary keystudent_name- Student's nametimeslot_id- Foreign key to timeslotsfirst_choice- First preferencesecond_choice- Second preferencethird_choice- Third preferencesubmitted_at- Submission timestamp
The system initializes with:
- 3 timeslots (Tuesday morning sessions)
- 8 projects (Projekt A through H) for each timeslot
You can customize the system by:
- Using the admin panel to add/modify timeslots and projects
- Modifying the CSS in
schueler.htmlfor styling changes - Updating the database schema in
backend/index.tsfor additional fields
To reset the database during development:
GET /api/debug/reset
This will drop all tables and recreate them with default data.