Skip to main content
The desktop application is a native Java 21 / JavaFX 21 client targeting cinema operators and administrators. It bundles the full Rakcha feature set — cinema management, film and series catalogs, an e-commerce module, and user administration — into a single distributable that runs on Windows, macOS, and Linux.

Prerequisites

  • Java JDK 21 or later
  • Maven 3.6+
  • A supported database: MySQL 8.0+, PostgreSQL, SQLite (no setup needed for development), or H2
  • An IDE with JavaFX support (IntelliJ IDEA, Eclipse, or VS Code) — optional for running via Maven

Installation and running locally

1

Configure environment variables

Copy the example environment file and fill in your credentials:
cd apps/desktop
cp .env.example .env
Key variables:
# Database — SQLite requires no user/password
DB_URL=jdbc:sqlite:./data/rakcha.db
DB_USER=
DB_PASSWORD=

# OAuth (optional)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
MICROSOFT_CLIENT_ID=your_microsoft_client_id
MICROSOFT_CLIENT_SECRET=your_microsoft_client_secret

# Payments (optional)
STRIPE_API_KEY=your_stripe_key
PAYPAL_CLIENT_ID=your_paypal_client_id
PAYPAL_CLIENT_SECRET=your_paypal_secret

# Media
CLOUDINARY_URL=cloudinary://api_key:api_secret@cloud_name
YOUTUBE_API_KEY=your_youtube_api_key
2

Build the project

mvn clean install -DskipTests
3

Run the application

mvn javafx:run
SQLite is the easiest way to get started locally — no database server required. The database file is created automatically at ./data/rakcha.db on first launch.

Building a distributable

The Maven build produces native installers via jpackage for each platform:
mvn clean install
Installers are output to target/:
PlatformFormat
Windows.msi installer
macOS.pkg installer
Linux.deb package + portable archive
Installers are also built automatically by the build-and-deploy.yml GitHub Actions workflow when a release tag is pushed.

Running tests

mvn test
For CI environments (headless mode):
mvn test -Dtestfx.robot=glass -Dtestfx.headless=true
Generate a JaCoCo coverage report alongside tests:
mvn test jacoco:report
Tests are written with JUnit Jupiter and TestFX, with AssertJ for assertions.

Key functional areas

Controllers live under src/main/java/com/esprit/controllers/ and are organized by domain:
ModuleControllersDescription
cinemas/11 controllersCinema venues, halls, seating, and movie session scheduling
films/8 controllersFilm catalog, actor management, ticket booking, IMDB import, trailers
series/9 controllersTV series catalog, seasons, episodes, favorites, and watch progress
products/12 controllersProduct catalog, shopping cart, checkout, order tracking, QR codes
users/21 controllersRole-based access (Client, Admin, Cinema Manager), profiles, messaging, achievements
Additional shared components:
  • SidebarController.java — navigation sidebar
  • SplashScreenController.java — startup screen
  • UniversalSearchBox.java — role-aware search with Caffeine caching

Docker deployment

A docker-compose.yml and Dockerfile are included in apps/desktop.
Starts the application with the Adminer database UI on port 8081:
docker-compose --profile dev up -d
Service overview:
ServicePortDescription
rakcha-app8080Main application
rakcha-db3306MySQL database
rakcha-redis6379Redis cache
adminer8081Database admin UI (dev profile only)
View logs or stop services:
# Follow application logs
docker-compose logs -f rakcha-app

# Stop all services
docker-compose down

Multi-database support

The DataSource.java utility supports four databases via HikariCP connection pooling. Switch by updating DB_URL in your .env file:
No server required. The database file is created on first run.
DB_URL=jdbc:sqlite:./data/rakcha.db
DB_USER=
DB_PASSWORD=

Technology stack

LayerTechnology
LanguageJava 21
UI frameworkJavaFX 21.0.7
Build toolMaven 3.6+
UI extensionsControlsFX 11.2.2, JFoenix 9.0.10
IconsIkonli 12.4.0 (Material Design 2)
AnimationsAnimateFX 1.3.0
DatabasesMySQL 9.3, PostgreSQL 42.7, SQLite 3.50, H2
Connection poolHikariCP 5.1.0
Auth (OAuth)ScribeJava 8.3.3 (Google, Microsoft)
Biometric authOpenCV 4.9+ (face recognition)
PaymentsStripe Java 29.4.0, PayPal REST SDK 1.14.0
Search / cacheApache Lucene 9.12.1, Caffeine 3.1.8
PDFiText 5.5.13.4, PDFBox 3.0.5
QR / barcodesZXing 3.5.3
SMSTwilio 11.0.0, Vonage 9.3.1
TestingJUnit Jupiter, TestFX 4.0.18, AssertJ 3.27.3

Build docs developers (and LLMs) love