About This Project
Aktivitizer is a full-stack activity booking platform built solo for the "Web Applications 2" course at Hochschule Albstadt-Sigmaringen. It connects customers looking for local activities with companies offering them — customers can search, view, and book activities, while company accounts can list their own.
The frontend is plain HTML, CSS, and JavaScript with no framework, calling a REST API built on Node.js and Express. The backend is organized into a service and DAO (data-access-object) layer per resource, with a SQLite database via better-sqlite3.
Key Highlights
- Separate customer and company account types, each with their own registration, login, and account views
- JWT-based authentication with access and refresh tokens, and bcrypt password hashing
- Activity search by activity type, city, and date, backed by a dedicated search DAO
- End-to-end booking flow from activity listing to confirmed reservation
- Image upload for activity listings using express-fileupload
- Contact form with server-side validation
- REST API with consistent request validation and structured JSON error responses across every endpoint
Challenges & Solutions
Structuring the backend into separate service (routing/ validation) and DAO (database access) layers per resource — activities, customers, companies, search, contact form — kept the SQL isolated from request handling and made the API easier to extend as new features were added. Getting the JWT refresh-token flow right, so an expired access token could be renewed without forcing a re-login, required careful handling of token verification and error states in the authentication middleware.