Pillow Desk - a lightweight booking and stay management system built on the Strolch framework
  • Java 62.9%
  • HTML 34.4%
  • Shell 2.2%
  • Dockerfile 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Robert von Burg b84886c695
[Minor] Remove outdated secretKey and secretSalt mention in README
Removed outdated instructions related to `secretKey` and `secretSalt` from the README file. These parameters are no longer required, aligning the documentation with recent configuration changes for clarity and accuracy.
2026-09-29 11:52:20 +02:00
pillow-desk-core [Minor] Remove unused secretKey and secretSalt configurations 2026-09-29 11:51:33 +02:00
pillow-desk-rest [Minor] Remove unused secretKey and secretSalt configurations 2026-09-29 11:51:33 +02:00
pillow-desk-web [Major] Use environment variable for agent initialization fallback 2026-06-05 08:56:54 +02:00
runtime [Minor] Remove unused secretKey and secretSalt configurations 2026-09-29 11:51:33 +02:00
.gitignore [Project] ignoring sessions.dat 2026-05-23 22:36:07 +02:00
build-and-push-docker.sh [New] Add advanced Docker configuration and rebuild scripts 2026-07-31 10:11:09 +02:00
build-docker-image.sh ADMIN-468 [New] Add customer and environment support for Docker builds 2026-09-04 15:50:54 +02:00
docker-compose-dev.yml [New] Add advanced Docker configuration and rebuild scripts 2026-07-31 10:11:09 +02:00
docker-compose.yml [New] Enhance Docker setup for development and production 2026-07-31 10:51:19 +02:00
Dockerfile [New] Enhance Docker setup for development and production 2026-07-31 10:51:19 +02:00
LICENSE [Project] Add license file for PillowDesk 2026-05-23 22:35:08 +02:00
pom.xml [New] Add customizable build artifact names to Maven configuration 2026-06-08 08:10:37 +02:00
README.md [Minor] Remove outdated secretKey and secretSalt mention in README 2026-09-29 11:52:20 +02:00

🛋️ PillowDesk

PillowDesk is a lightweight booking and stay management system built on the Strolch framework. It is designed to manage hotel-like stays, rooms, and rates, providing essential reporting on revenue and occupancy.

🚀 Features

  • Stay Management: Complete lifecycle management of guest stays (Add, Edit, Remove).
  • Rate Overrides: Define date-specific rates that override the default base price for any given day. Supports managing overrides across multiple rate types.
  • Guest Search: Filter stays by guest name, check-in, and check-out dates.
  • Room & Rate Relations: Associate stays with specific rooms and pricing rates.
  • Reporting & Analytics:
    • Daily & Monthly Summary: Detailed breakdown of pro-rated daily revenue and tourist taxes.
    • Yearly Performance: Monthly overview of revenue, taxes, and occupancy rates.
    • Booking Distribution: Tracks Airbnb vs. Direct bookings.
  • Dynamic Pricing: Stay cost calculation automatically incorporates rate overrides for specific dates, allowing for seasonal or event-based pricing adjustments.
  • Authentication: Secure access powered by Strolch's privilege system.

🛠️ Tech Stack

  • Backend: Java 25, Strolch Framework, Jakarta REST (Jersey).
  • Frontend: Vanilla HTML5, CSS3, and JavaScript (SPA architecture).
  • Build Tool: Maven.

📁 Project Structure

  • pillow-desk-core: Contains the domain model, business logic, services, and policies.
  • pillow-desk-rest: Provides the Jakarta REST API endpoints for the web interface.
  • pillow-desk-web: The web application frontend (packaged as WAR).
  • runtime: Contains Strolch configuration and initial data model (Rooms, Rates, etc.).

🏁 Getting Started

Prerequisites

  • Java 25 or higher.
  • Maven 3.9+.

Build

To build the project, run:

mvn clean install

Running the Application

PillowDesk is a Strolch-based web application. It is packaged as a WAR file and can be deployed to any Jakarta EE compatible servlet container (e.g., Tomcat, Jetty).

For development, the project is configured with a local development profile that uses the runtime configuration in the runtime directory.

🐳 Running with Docker for DEV

To run PillowDesk using Docker, follow these steps:

  1. Build the project from the root:
    mvn clean package -DskipTests
    
  2. Start the application using Docker Compose:
    docker compose -f docker-compose-dev.yml up --build
    
  3. The application will be available at http://localhost:8080.

The Docker configuration uses the runtime directory for configuration and data. Any changes made to the runtime directory on your host will be reflected in the container.

Push to docker repository

Basic commands would be:

DOCKER_TAG="pillow-desk:latest"
TAG_PATH="${REGISTRY}/docker/${DOCKER_TAG}"
docker image build --load --pull -f Dockerfile --tag "${DOCKER_TAG}" .
docker tag "${DOCKER_TAG}" "${TAG_PATH}"
docker push "${TAG_PATH}"

But the following script will build and push the image to the specified repository and clean up the local images afterwards:

./build-docker-image.sh -p -c -r repo.strolch.li

Running with Docker for PROD

Create the following directories on your host:

mkdir pillow-desk
cd pillow-desk
mkdir tomcat-logs
mkdir runtime
mkdir runtime/{config,data,temp}

Copy the docker-compose.yml to your host.

Copy the following files from the runtime directory to the runtime directory:

  • config
  • data
  • temp

Then, start the application using Docker Compose:

docker compose up -d
docker compose logs -f

📄 License

PillowDesk is licensed under the GNU Affero General Public License v3.0.

Copyright © 2026 eitch - Robert von Burg