Skip to content

JavaFX desktop application for managing cinemas, films, and series, featuring a professional UI and optimized performance for enhanced user experiences.

License

Notifications You must be signed in to change notification settings

aliammari1/rakcha-desktop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

🎬 RAKCHA - Ultimate Entertainment Hub

RAKCHA Logo

License Java JavaFX Maven Build Status CodeQL

A sophisticated JavaFX desktop application for managing cinemas, films, series, products, and user experiences

Features β€’ Architecture β€’ Installation β€’ Usage β€’ API β€’ Contributing


πŸ“‹ Table of Contents


🎯 Overview

RAKCHA is a comprehensive entertainment management platform built with JavaFX 21. It provides a complete ecosystem for managing cinemas, films, TV series, e-commerce products, and user interactions. The application features a modern UI with animations, multi-database support, OAuth authentication, payment processing, and real-time notifications.

✨ Key Highlights

  • πŸŽ₯ Cinema Management - Complete cinema, hall, seat, and movie session management
  • πŸ“Ί Series Streaming - TV series catalog with seasons, episodes, and watch progress tracking
  • πŸ›’ E-Commerce - Full shopping cart, orders, and payment processing
  • πŸ” Multi-Auth - Traditional login, Google/Microsoft OAuth, and Face Recognition
  • πŸ’³ Payments - Stripe and PayPal integration
  • πŸ“Š Analytics - Sentiment analysis, statistics, and reporting
  • 🌐 Multi-Database - MySQL, PostgreSQL, SQLite, and H2 support
  • 🐳 Docker Ready - Complete containerization with Docker Compose

πŸ— Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                              RAKCHA Desktop Application                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                           PRESENTATION LAYER                              β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚   β”‚
β”‚  β”‚  β”‚   JavaFX    β”‚ β”‚    FXML     β”‚ β”‚     CSS     β”‚ β”‚  Controllers (MVC)  β”‚ β”‚   β”‚
β”‚  β”‚  β”‚   Views     β”‚ β”‚   Layouts   β”‚ β”‚   Styles    β”‚ β”‚  - Users (21)       β”‚ β”‚   β”‚
β”‚  β”‚  β”‚             β”‚ β”‚             β”‚ β”‚             β”‚ β”‚  - Films (8)        β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  Splash     β”‚ β”‚  Sidebar    β”‚ β”‚  Dashboard  β”‚ β”‚  - Cinemas (11)     β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  Dashboard  β”‚ β”‚  Dialogs    β”‚ β”‚  Modern UI  β”‚ β”‚  - Products (12)    β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  Forms      β”‚ β”‚  Cards      β”‚ β”‚  Animations β”‚ β”‚  - Series (9)       β”‚ β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                       β”‚                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                            BUSINESS LAYER                                 β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚   β”‚
β”‚  β”‚  β”‚                         Services (IService<T>)                     β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚   User    β”‚ β”‚   Film    β”‚ β”‚  Cinema   β”‚ β”‚     Product       β”‚  β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ Services  β”‚ β”‚ Services  β”‚ β”‚ Services  β”‚ β”‚    Services       β”‚  β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚           β”‚ β”‚           β”‚ β”‚           β”‚ β”‚                   β”‚  β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - User    β”‚ β”‚ - Film    β”‚ β”‚ - Cinema  β”‚ β”‚ - Product         β”‚  β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Friend  β”‚ β”‚ - Actor   β”‚ β”‚ - Hall    β”‚ β”‚ - Cart            β”‚  β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Message β”‚ β”‚ - Ticket  β”‚ β”‚ - Seat    β”‚ β”‚ - Order           β”‚  β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Notify  β”‚ β”‚ - Categoryβ”‚ β”‚ - Session β”‚ β”‚ - Payment         β”‚  β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Watch   β”‚ β”‚           β”‚ β”‚           β”‚ β”‚                   β”‚  β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚  Series   β”‚ β”‚              Search Service                     β”‚β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ Services  β”‚ β”‚  - Universal search with Caffeine caching       β”‚β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Series  β”‚ β”‚  - Role-based filtering (Client/Admin/Manager)  β”‚β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Season  β”‚ β”‚  - Auto-suggestions and trending                β”‚β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Episode β”‚ β”‚                                                 β”‚β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Favoriteβ”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚   β”‚   β”‚
β”‚  β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                                    β”‚   β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                       β”‚                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                              DATA LAYER                                   β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚   β”‚
β”‚  β”‚  β”‚                           Models (Entities)                          β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚     Users      β”‚  β”‚     Films      β”‚  β”‚       Cinemas          β”‚ β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - User         β”‚  β”‚ - Film         β”‚  β”‚ - Cinema               β”‚ β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Admin        β”‚  β”‚ - Actor        β”‚  β”‚ - CinemaHall           β”‚ β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Client       β”‚  β”‚ - Ticket       β”‚  β”‚ - Seat                 β”‚ β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - CinemaManagerβ”‚  β”‚                β”‚  β”‚ - MovieSession         β”‚ β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Friendship   β”‚  β”‚                β”‚  β”‚                        β”‚ β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Achievement  β”‚  β”‚                β”‚  β”‚                        β”‚ β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Notification β”‚  β”‚                β”‚  β”‚                        β”‚ β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                             β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚    Products    β”‚  β”‚     Series     β”‚                             β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Product      β”‚  β”‚ - Series       β”‚                             β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Order        β”‚  β”‚ - Season       β”‚                             β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - OrderItem    β”‚  β”‚ - Episode      β”‚                             β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - ShoppingCart β”‚  β”‚ - Favorite     β”‚                             β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β”‚ - Payment      β”‚  β”‚                β”‚                             β”‚ β”‚   β”‚
β”‚  β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                             β”‚ β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚   β”‚
β”‚  β”‚                                                                           β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚   β”‚
β”‚  β”‚  β”‚                     DataSource (Multi-Database)                      β”‚ β”‚   β”‚
β”‚  β”‚  β”‚     MySQL β”‚ PostgreSQL β”‚ SQLite β”‚ H2  +  HikariCP Connection Pool   β”‚ β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                           UTILITIES LAYER                                 β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚   β”‚
β”‚  β”‚  β”‚ Authenticationβ”‚ β”‚   Payment   β”‚ β”‚    Media     β”‚ β”‚  Communication   β”‚ β”‚   β”‚
β”‚  β”‚  β”‚              β”‚ β”‚              β”‚ β”‚              β”‚ β”‚                  β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ SignInGoogle β”‚ β”‚  Stripe API  β”‚ β”‚ CloudinaryAPIβ”‚ β”‚   UserMail       β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ SignInMS     β”‚ β”‚  PayPal SDK  β”‚ β”‚ FilmTrailer  β”‚ β”‚   UserSMS        β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ FaceRecog    β”‚ β”‚              β”‚ β”‚ IMDB API     β”‚ β”‚   TrayNotify     β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ BCrypt       β”‚ β”‚              β”‚ β”‚              β”‚ β”‚                  β”‚ β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚   β”‚
β”‚  β”‚  β”‚  Navigation  β”‚ β”‚  Documents   β”‚ β”‚   Security   β”‚ β”‚    Validators    β”‚ β”‚   β”‚
β”‚  β”‚  β”‚              β”‚ β”‚              β”‚ β”‚              β”‚ β”‚                  β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ Breadcrumb   β”‚ β”‚   UserPDF    β”‚ β”‚SecurityConfigβ”‚ β”‚ EmailValidator   β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ ScreenNav    β”‚ β”‚   QR/Barcode β”‚ β”‚SessionManagerβ”‚ β”‚ PasswordValidatorβ”‚ β”‚   β”‚
β”‚  β”‚  β”‚ QuickNav     β”‚ β”‚   iText      β”‚ β”‚              β”‚ β”‚                  β”‚ β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

                              EXTERNAL INTEGRATIONS
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  Google  β”‚ β”‚Microsoft β”‚ β”‚  Stripe  β”‚ β”‚  PayPal  β”‚ β”‚  Twilio  β”‚ β”‚  Vonage  β”‚ β”‚
β”‚  β”‚  OAuth   β”‚ β”‚  OAuth   β”‚ β”‚ Payments β”‚ β”‚ Payments β”‚ β”‚   SMS    β”‚ β”‚   SMS    β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ YouTube  β”‚ β”‚   IMDB   β”‚ β”‚Cloudinaryβ”‚ β”‚  OpenCV  β”‚ β”‚  ZXing   β”‚ β”‚  VADER   β”‚ β”‚
β”‚  β”‚   API    β”‚ β”‚ Scraper  β”‚ β”‚  Storage β”‚ β”‚   Face   β”‚ β”‚ QR/Codes β”‚ β”‚Sentiment β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

✨ Features

🎞️ Film & Cinema Management

Feature Description
πŸŽ₯ Film Catalog Comprehensive film database with descriptions, durations, and categories
πŸ‘¨β€πŸŽ€ Actor Management Track actors with filmographies and biographical information
🏒 Cinema Management Manage cinema venues, halls, and seating arrangements
πŸ“… Movie Sessions Schedule screenings with date, time, and cinema hall assignment
🎟️ Ticket Booking Purchase and manage tickets with seat selection
⭐ Ratings & Reviews User ratings and sentiment-analyzed comments
▢️ YouTube Trailers Automatic trailer fetching via YouTube API
🌐 IMDB Integration Rich film metadata from IMDB scraping

πŸ“Ί Series & Episodes

Feature Description
πŸ“š Series Catalog Browse TV series with seasons and episodes
πŸ“Š Watch Progress Track viewing progress across episodes
❀️ Favorites Mark series as favorites for quick access
πŸ“ˆ Statistics View series analytics and user engagement

πŸ›οΈ Product Marketplace

Feature Description
πŸ“‹ Product Catalog Entertainment merchandise and collectibles
πŸ›’ Shopping Cart Full cart management with quantity updates
πŸ’³ Checkout Secure payment processing via Stripe/PayPal
πŸ“¦ Order Tracking Complete order lifecycle management
πŸ“± QR Codes Product QR code generation via ZXing
πŸ“Š Analytics Order and sales analytics dashboard

πŸ‘₯ User Management

Feature Description
πŸ‘¨β€πŸ’Ό Role-Based Access Client, Admin, and Cinema Manager roles
πŸ‘€ User Profiles Comprehensive profile management
🀝 Social Features Friend system with messaging and chat
πŸ† Achievements Gamification with user achievements
πŸ“£ Notifications Real-time in-app and system tray notifications
πŸ“‹ Watchlist Personal watchlist management

πŸ” Security & Authentication

Feature Description
πŸ”‘ Traditional Login Username/password with BCrypt hashing
πŸ”„ OAuth 2.0 Google and Microsoft social authentication
πŸ‘οΈ Face Recognition Biometric login using OpenCV
πŸ”’ Password Security History tracking and strength validation
πŸ›‘οΈ Session Management Secure session handling with cleanup

πŸ’³ Payment Processing

Feature Description
πŸ’° Stripe Integration Credit card processing
πŸ…ΏοΈ PayPal SDK Alternative payment method
πŸ“œ Order History Complete transaction tracking
🧾 PDF Invoices Automated receipt generation

πŸ“¨ Communication

Feature Description
πŸ“§ Email SMTP email with templates
πŸ“± SMS Twilio and Vonage integration
πŸ”” Push Notifications System tray notifications
πŸ’¬ In-App Chat Real-time messaging system

πŸ›  Technology Stack

Core Platform

Technology Version Purpose
Java 21 Core language with modern features
JavaFX 21.0.7 Desktop UI framework
Maven 3.6+ Build automation and dependency management

UI & Design

Library Version Purpose
ControlsFX 11.2.2 Extended JavaFX controls
JFoenix 9.0.10 Material Design components
Ikonli 12.4.0 Icon packs (Material Design 2)
AnimateFX 1.3.0 UI animations
ValidatorFX 0.6.1 Form validation

Database & Persistence

Technology Version Purpose
MySQL 9.3.0 Production database
PostgreSQL 42.7.1 Alternative production database
SQLite 3.50.2 Development/embedded database
HikariCP 5.1.0 Connection pooling

Authentication & Security

Library Purpose
ScribeJava 8.3.3 OAuth 2.0 (Google, Microsoft)
JBCrypt 0.4 Password hashing
OpenCV 4.9+ Face recognition

Payment Processing

Service Version Purpose
Stripe Java 29.4.0 Credit card payments
PayPal REST SDK 1.14.0 PayPal transactions

External APIs

API Purpose
YouTube Data API v3 Film trailers
Google API Client 2.8.0 Google services
IMDB Scraper Film metadata
Cloudinary Media storage

Communication

Service Version Purpose
Twilio 11.0.0 SMS notifications
Vonage 9.3.1 SMS backup
JavaMail 1.6.2 Email services

Document Processing

Library Version Purpose
iText 5.5.13.4 PDF generation
PDFBox 3.0.5 PDF manipulation
ZXing 3.5.3 QR/Barcode generation

Search & Caching

Library Version Purpose
Caffeine 3.1.8 High-performance caching
Apache Lucene 9.12.1 Full-text search

Analytics

Library Purpose
VADER Sentiment Review sentiment analysis

Development & Testing

Tool Version Purpose
JUnit Jupiter 6.0.0-M1 Unit testing
TestFX 4.0.18 JavaFX UI testing
AssertJ 3.27.3 Fluent assertions
Monocle 21 Headless testing
Lombok 1.18.38 Boilerplate reduction
JavaFaker 1.0.2 Test data generation
Logback 1.5.21 Logging
SpotBugs 4.8.2.0 Static analysis
OpenRewrite 5.36.0 Automated refactoring

πŸš€ Getting Started

Prerequisites

  • β˜• Java JDK 21 or later
  • πŸ› οΈ Maven 3.6+
  • πŸ—„οΈ Database (MySQL 8.0+, PostgreSQL, or SQLite)
  • πŸ’» IDE with JavaFX support (IntelliJ IDEA, Eclipse, VS Code)

System Requirements

Requirement Minimum Recommended
OS Windows 10, macOS 10.15, Ubuntu 20.04 Latest versions
Processor Intel Core i3 Intel Core i5/i7
RAM 4 GB 8 GB+
Storage 500 MB SSD with 2GB+
Graphics DirectX 11 support Dedicated GPU (for Face Recognition)

Installation

  1. Clone the repository
git clone https://github.com/aliammari1/rakcha-desktop.git
cd rakcha-desktop
  1. Configure environment variables
cp .env.example .env
# Edit .env with your API keys and database credentials
  1. Build the project
mvn clean install -DskipTests
  1. Run the application
mvn javafx:run

Environment Variables

Create a .env file with the following:

# Database Configuration
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

# Payment (Optional)
STRIPE_API_KEY=your_stripe_key
PAYPAL_CLIENT_ID=your_paypal_client_id
PAYPAL_CLIENT_SECRET=your_paypal_secret

# Communication (Optional)
TWILIO_ACCOUNT_SID=your_twilio_sid
TWILIO_AUTH_TOKEN=your_twilio_token
VONAGE_API_KEY=your_vonage_key
VONAGE_API_SECRET=your_vonage_secret

# Media Storage (Optional)
CLOUDINARY_URL=cloudinary://api_key:api_secret@cloud_name
YOUTUBE_API_KEY=your_youtube_api_key

πŸ“ Project Structure

rakcha-desktop/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main/
β”‚   β”‚   β”œβ”€β”€ java/com/esprit/
β”‚   β”‚   β”‚   β”œβ”€β”€ MainApp.java              # Application entry point
β”‚   β”‚   β”‚   β”œβ”€β”€ components/               # Reusable UI components
β”‚   β”‚   β”‚   β”‚   └── UniversalSearchBox.java
β”‚   β”‚   β”‚   β”œβ”€β”€ controllers/              # MVC Controllers
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SidebarController.java
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SplashScreenController.java
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cinemas/              # Cinema management (11 controllers)
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ films/                # Film management (8 controllers)
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ products/             # E-commerce (12 controllers)
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ series/               # Series management (9 controllers)
β”‚   β”‚   β”‚   β”‚   └── users/                # User management (21 controllers)
β”‚   β”‚   β”‚   β”œβ”€β”€ enums/                    # Enumerations
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CategoryType.java
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CinemaStatus.java
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ OrderStatus.java
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TicketStatus.java
β”‚   β”‚   β”‚   β”‚   └── UserRole.java
β”‚   β”‚   β”‚   β”œβ”€β”€ exceptions/               # Custom exceptions
β”‚   β”‚   β”‚   β”œβ”€β”€ models/                   # Data models
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cinemas/              # Cinema, Hall, Seat, Session
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ films/                # Film, Actor, Ticket
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ products/             # Product, Order, Cart, Payment
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ series/               # Series, Season, Episode
β”‚   β”‚   β”‚   β”‚   └── users/                # User hierarchy (14 models)
β”‚   β”‚   β”‚   β”œβ”€β”€ services/                 # Business logic
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ IService.java         # Generic service interface
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cinemas/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ films/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ products/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ search/               # Universal search service
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ series/
β”‚   β”‚   β”‚   β”‚   └── users/
β”‚   β”‚   β”‚   └── utils/                    # Utilities
β”‚   β”‚   β”‚       β”œβ”€β”€ DataSource.java       # Database connection
β”‚   β”‚   β”‚       β”œβ”€β”€ SessionManager.java   # User session handling
β”‚   β”‚   β”‚       β”œβ”€β”€ PaymentProcessor.java # Stripe integration
β”‚   β”‚   β”‚       β”œβ”€β”€ SignInGoogle.java     # Google OAuth
β”‚   β”‚   β”‚       β”œβ”€β”€ SignInMicrosoft.java  # Microsoft OAuth
β”‚   β”‚   β”‚       β”œβ”€β”€ FaceRecognition.java  # OpenCV face auth
β”‚   β”‚   β”‚       β”œβ”€β”€ CloudinaryStorage.java
β”‚   β”‚   β”‚       β”œβ”€β”€ UserMail.java         # Email service
β”‚   β”‚   β”‚       β”œβ”€β”€ UserSMSAPI.java       # SMS service
β”‚   β”‚   β”‚       β”œβ”€β”€ UserPDF.java          # PDF generation
β”‚   β”‚   β”‚       └── validators/           # Input validation
β”‚   β”‚   └── resources/
β”‚   β”‚       β”œβ”€β”€ ui/                       # FXML layouts
β”‚   β”‚       β”‚   β”œβ”€β”€ sidebar.fxml
β”‚   β”‚       β”‚   β”œβ”€β”€ splash/
β”‚   β”‚       β”‚   β”œβ”€β”€ admin/
β”‚   β”‚       β”‚   β”œβ”€β”€ users/
β”‚   β”‚       β”‚   β”œβ”€β”€ films/
β”‚   β”‚       β”‚   β”œβ”€β”€ cinemas/
β”‚   β”‚       β”‚   β”œβ”€β”€ products/
β”‚   β”‚       β”‚   β”œβ”€β”€ series/
β”‚   β”‚       β”‚   └── styles/               # CSS stylesheets
β”‚   β”‚       β”œβ”€β”€ images/                   # Application assets
β”‚   β”‚       β”œβ”€β”€ haar/                     # OpenCV cascade files
β”‚   β”‚       └── *.sql                     # Database schemas
β”‚   β”œβ”€β”€ packaging/                        # jpackage resources
β”‚   β”‚   β”œβ”€β”€ windows/
β”‚   β”‚   β”œβ”€β”€ macos/
β”‚   β”‚   └── linux/
β”‚   └── test/                             # Test suites
β”œβ”€β”€ .github/
β”‚   └── workflows/
β”‚       β”œβ”€β”€ ci.yml                        # CI pipeline
β”‚       β”œβ”€β”€ build-and-deploy.yml          # Native installers
β”‚       └── codeql.yml                    # Security scanning
β”œβ”€β”€ config/
β”‚   └── mysql.cnf                         # MySQL configuration
β”œβ”€β”€ docs/                                 # JavaDoc documentation
β”œβ”€β”€ docker-compose.yml                    # Docker services
β”œβ”€β”€ Dockerfile                            # Application container
β”œβ”€β”€ pom.xml                               # Maven configuration
└── README.md

πŸ—„οΈ Database Configuration

Quick Start (SQLite - Development)

No configuration needed! SQLite database is created automatically:

DB_URL=jdbc:sqlite:./data/rakcha.db

MySQL (Production)

DB_URL=jdbc:mysql://localhost:3306/rakcha_db?serverTimezone=UTC
DB_USER=rakcha_user
DB_PASSWORD=your_password

PostgreSQL

DB_URL=jdbc:postgresql://localhost:5432/rakcha_db
DB_USER=rakcha_user
DB_PASSWORD=your_password

🐳 Docker Deployment

Quick Start

# Development mode (with Adminer UI)
docker-compose --profile dev up -d

# Production mode
docker-compose up -d

# View logs
docker-compose logs -f rakcha-app

# Stop services
docker-compose down

Services

Service Port Description
rakcha-app 8080 Main application
rakcha-db 3306 MySQL database
rakcha-redis 6379 Redis cache
adminer 8081 Database admin UI (dev only)

πŸ”„ CI/CD Pipeline

The project uses GitHub Actions for continuous integration and deployment:

Workflows

Workflow Trigger Purpose
ci.yml Push/PR Build, test, code quality, security scan
build-and-deploy.yml Tags/Releases Native installers (Windows, macOS, Linux)
codeql.yml Push Security vulnerability scanning

Pipeline Stages

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Build &   │───▢│    Code     │───▢│  Security   │───▢│   Package   β”‚
β”‚    Test     β”‚    β”‚   Quality   β”‚    β”‚    Scan     β”‚    β”‚  Installer  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
     β”‚                   β”‚                  β”‚                  β”‚
     β–Ό                   β–Ό                  β–Ό                  β–Ό
  JUnit Tests       SpotBugs           OWASP/Trivy        jpackage
  JaCoCo Coverage   JavaDoc            CodeQL             .msi/.deb/.pkg

Native Installers

Built automatically on release tags:

  • Windows: .msi installer
  • macOS: .pkg installer
  • Linux: .deb package + portable archive

πŸ§ͺ Testing

Run Tests

# All tests
mvn test

# With coverage report
mvn test jacoco:report

# Headless mode (CI)
mvn test -Dtestfx.robot=glass -Dtestfx.headless=true

Test Structure

src/test/java/com/esprit/
β”œβ”€β”€ MainAppTest.java          # Application startup tests
β”œβ”€β”€ controllers/              # Controller unit tests
β”œβ”€β”€ integration/              # Integration tests
β”œβ”€β”€ tests/                    # Feature tests
β”‚   β”œβ”€β”€ CinemaEnhancementsTest.java
β”‚   └── CinemaVerification.java
└── utils/                    # Utility tests

πŸ”Œ API Integrations

Service Purpose Documentation
Google OAuth Social authentication Google Identity
Microsoft OAuth Social authentication Microsoft Identity
Stripe Payment processing Stripe Docs
PayPal Payment processing PayPal Developer
YouTube Data API Film trailers YouTube API
Cloudinary Media storage Cloudinary Docs
Twilio SMS notifications Twilio Docs
Vonage SMS backup Vonage API

πŸ‘€ User Roles

Role Description Capabilities
Client Regular user Browse content, purchase tickets/products, manage profile, social features
Cinema Manager Venue administrator Manage cinema, halls, seats, movie sessions, view statistics
Admin System administrator Full access, user management, analytics, system configuration

πŸ‘₯ Contributing

We welcome contributions! Please see our Contributing Guide for details.

  1. 🍴 Fork the repository
  2. 🌿 Create a feature branch (git checkout -b feature/amazing-feature)
  3. πŸ’Ύ Commit your changes (git commit -m 'Add amazing feature')
  4. πŸ“€ Push to the branch (git push origin feature/amazing-feature)
  5. πŸ” Open a Pull Request

See also:


πŸ“œ License

This project is licensed under a Commercial Use License - see the LICENSE file for details.

Key Points:

  • βœ… Free for personal and educational use
  • βœ… Free for study and learning
  • βœ… Free for contributions and improvements
  • ❌ Commercial use requires explicit permission

⚠️ Disclaimer

Code Ownership: The source code in this repository is owned by the author(s). However, no ownership is claimed over any assets (images, icons, fonts, media files, or other third-party resources) used in this project. All assets remain the property of their respective owners.

Educational Purpose: This project is developed strictly for educational purposes. It is intended to demonstrate software development concepts, JavaFX application architecture, and integration with various APIs and services.

Third-Party Components: This project uses various third-party libraries and assets. Users are responsible for reviewing all third-party licenses and ensuring compliance with their terms.

Commercial Use: If you wish to use this project or any part of it for commercial purposes, please contact:

πŸ“§ ammari.ali.0001@gmail.com


✍️ Authors

See the list of contributors who participated in this project.


πŸ™ Acknowledgments

  • πŸ‘ All contributors and testers
  • πŸ’‘ Modern entertainment platforms for inspiration
  • πŸ“š Open-source libraries that made this project possible
  • πŸŽ“ ESPRIT School of Engineering

Made with ❀️ by the RAKCHA Team

⬆ Back to Top

About

JavaFX desktop application for managing cinemas, films, and series, featuring a professional UI and optimized performance for enhanced user experiences.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

No packages published

Contributors 14