• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
chriseidhof

chriseidhof

Projektwoche

Public
Like
Projektwoche
Home
Code
4
backend
1
README.md
main.ts
schueler.html
Branches
1
Pull requests
Remixes
History
Environment variables
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.
Sign up now
Code
/
/
x
/
chriseidhof
/
Projektwoche
/
branch
/
main
/
version
/
18
/
code
/
README.md
/
README.md
Code
/
/
x
/
chriseidhof
/
Projektwoche
/
branch
/
main
/
version
/
18
/
code
/
README.md
/
README.md
Search
11/12/2025
Viewing readonly version of main branch: v18
View latest version
README.md

Projektauswahl System

A dynamic project selection system where students can rank their preferences for different time slots.

Features

  • 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

Structure

├── backend/
│   └── index.ts          # Main backend with API routes and admin panel
├── schueler.html         # Student-facing form (dynamically loads data)
└── README.md            # This file

Usage

Student Interface

  • 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

Admin Interface

  • Visit /admin to manage the system
  • Add/edit/deactivate timeslots and projects
  • View all student responses
  • Export responses as CSV

API Endpoints

Public Endpoints

  • GET / - Student form
  • GET /api/timeslots - Get all active timeslots with projects
  • POST /api/responses - Submit student responses

Admin Endpoints

  • GET /admin - Admin panel interface
  • GET /api/debug/data - View all database data
  • GET /api/debug/reset - Reset database (development only)
  • POST /api/admin/timeslots - Add new timeslot
  • POST /api/admin/projects - Add new project
  • PUT /api/admin/timeslots/:id - Update timeslot
  • PUT /api/admin/projects/:id - Update project
  • DELETE /api/admin/timeslots/:id - Delete timeslot
  • DELETE /api/admin/projects/:id - Delete project
  • GET /api/admin/export-csv - Export responses as CSV

Database Schema

Timeslots Table

  • id - Primary key
  • title - Display title (e.g., "1. Dienstag 9:00-10:30 Uhr")
  • time_description - Time description
  • order_index - Display order
  • active - Whether timeslot is active
  • created_at - Creation timestamp

Projects Table

  • id - Primary key
  • timeslot_id - Foreign key to timeslots
  • project_name - Project name
  • project_description - Optional description
  • active - Whether project is active
  • created_at - Creation timestamp

Responses Table

  • id - Primary key
  • student_name - Student's name
  • timeslot_id - Foreign key to timeslots
  • first_choice - First preference
  • second_choice - Second preference
  • third_choice - Third preference
  • submitted_at - Submission timestamp

Default Data

The system initializes with:

  • 3 timeslots (Tuesday morning sessions)
  • 8 projects (Projekt A through H) for each timeslot

Customization

You can customize the system by:

  1. Using the admin panel to add/modify timeslots and projects
  2. Modifying the CSS in schueler.html for styling changes
  3. Updating the database schema in backend/index.ts for additional fields

Development

To reset the database during development:

GET /api/debug/reset

This will drop all tables and recreate them with default data.

FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.