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.

Project Info

  • Category: Full-Stack Web App
  • Year: 2023
  • Status: Completed
View on GitHub

Technologies Used

JavaScript Node.js Express SQLite JWT Auth HTML CSS