A sophisticated JavaFX desktop application for managing cinemas, films, series, products, and user experiences - optimized and production-ready.
This MVP has been thoroughly optimized with:
- โ Bug-free codebase with comprehensive error handling and input validation
- โ Professional UI/UX with modern design and smooth animations
- โ Automated demo generation with screenshot and video utilities
- โ High-performance architecture with database optimization and connection pooling
- โ Cross-platform installers with native packaging for Windows, macOS, and Linux
- โ Production-ready deployment with Docker support and cloud compatibility
- โ Comprehensive documentation with user guides and API documentation
- RAKCHA Desktop Application
- ๐ฌ RAKCHA - Ultimate Entertainment Hub
- ๐ MVP Launch Ready
- ๐ Table of Contents
- โจ Features
- ๐ ๏ธ Technologies Used
- ๐๏ธ Architecture
- ๐ Getting Started
- ๐ Usage
- ๐ API Integrations
- ๐ Deployment
- ๐จ Building from Source
- ๐ Project Structure
- ๐ Code Quality and CI/CD
- ๐งช Testing
- ๐ฅ Contributing
- ๐ License
- โ๏ธ Authors
- ๐บ๏ธ Future Development Roadmap
- ๐ Acknowledgments
Rakcha Desktop offers a comprehensive suite of features organized into several integrated modules:
- ๐ฅ Film Database: Extensive catalog of films with detailed information including descriptions, durations, and categories
- ๐จโ๐ค Actor Management: Track actors and their filmographies with biographical information
- ๐ข Cinema Management: Comprehensive system for cinema venues, halls, and seating arrangements
- ๐ Scheduling System: Manage movie seances with date, time, and cinema hall information
- ๐๏ธ Ticket Booking: Purchase and manage tickets for film showings
- ๐ง Film Recommendations: AI-powered recommendation system based on user preferences and ratings
- โญ Rating & Reviews: Allow users to rate films and leave detailed comments
โถ๏ธ YouTube Trailer Integration: Automatically fetch and display film trailers through YouTube API- ๐ IMDB Data Integration: Pull rich film metadata from the IMDB database
- ๐ Series Catalog: Browse and manage TV series with detailed information
- ๐ Episode Tracking: Track episodes by season with descriptions and media content
- โค๏ธ Favorites System: Allow users to mark series as favorites for quick access
- ๐ฌ Feedback System: User comments and ratings for episodes and series
- ๐ท๏ธ Category Management: Organize series by genre and categories
- ๐ฑ Media Streaming: Watch episodes directly within the application
- ๐ Product Catalog: Browse entertainment-related merchandise
- ๐ Shopping Cart: Add products to cart and manage order items
- ๐ฆ Order Processing: Complete end-to-end order management system
- ๐ Product Reviews: Rating and commenting system for products
- ๐ Product Categories: Organized product navigation by categories
- ๐ฑ QR Code Generation: Create QR codes for products and promotions
- ๐ Barcode Integration: Support for product barcode scanning and generation
- ๐จโ๐ผ Multi-Role System: Support for Clients, Admins, and Cinema Managers with role-specific functionality
- ๐ค User Profiles: Comprehensive user profile management
- ๐จ Profile Customization: Personalized user experience based on preferences
- ๐ User Activity Tracking: Monitor and analyze user behaviors
- ๐ง Administrative Tools: Powerful admin dashboard for user management
- ๐ Traditional Login: Username and password authentication
- ๐ Social Authentication: Sign in using Google or Microsoft accounts
- ๐๏ธ Biometric Authentication: Face recognition login using OpenCV
- ๐ Password Encryption: Secure password storage using BCrypt
- ๐ก๏ธ Permission Management: Role-based access control throughout the application
- ๐ฐ Multiple Payment Gateways: Integration with Stripe and PayPal
- ๐ Secure Transactions: PCI-compliant payment processing
- ๐ Order History: Comprehensive tracking of past purchases
- ๐งพ Invoicing: PDF generation for receipts and invoices
- ๐ Payment Analytics: Track and analyze payment data
- ๐ง Email Notifications: Automated emails for account activities and promotions
- ๐ฑ SMS Notifications: Text message alerts via Twilio and Vonage
- ๐ In-App Notifications: Real-time system notifications
- ๐ฌ Chat System: Direct messaging between users
- ๐ PDF Reports: Generate and export data in PDF format
Rakcha Desktop leverages a variety of modern technologies:
-
โ๏ธ Core Platform:
- โ Java 17 - Modern Java features including records and enhanced switch expressions
- ๐ฅ๏ธ JavaFX 21.0.2 - Rich client platform for desktop applications
- ๐ FXML - XML-based UI markup language for defining JavaFX UI
-
๐พ Database & Persistence:
- ๐๏ธ Hibernate 6.2.13 - Modern ORM framework with JPA support
- ๐ฌ MySQL - Production-ready relational database with connection pooling
- ๐ SQLite - Lightweight file-based database for development and testing
- ๐ PostgreSQL - Advanced open-source relational database
- ๏ฟฝ H2 - In-memory database for testing and rapid prototyping
- ๐ HikariCP - High-performance JDBC connection pool
- ๐ Multi-database Support - Seamless switching between database types
- ๐ง Environment-based Configuration - Different databases for dev/test/prod
-
๐จ UI Framework:
- ๐งฉ JavaFX Controls - Standard UI components
- ๐๏ธ ControlsFX 11.2.1 - Extended JavaFX controls
- ๐ฃ FontAwesomeFX - Icon integration
- ๐ผ๏ธ Ikonli 12.3.1 - Icon packs for JavaFX
- โจ AnimateFX & Animated - Animation libraries for dynamic UI effects
- ๐ CalendarFX - Advanced calendar components
-
Authentication:
- ScribeJava 8.3.3 - OAuth2 client implementation (Google, Microsoft)
- Face Recognition with OpenCV 4.9.0 - Biometric authentication
- JBCrypt 0.4 - Password hashing
-
Payment Processing:
- Stripe Java 26.4.0 - Credit card processing
- PayPal REST SDK 1.14.0 - PayPal integration
-
Media Processing:
- JavaCV 1.5.10 - Computer vision capabilities
- OpenCV Platform GPU - Image and video processing
- FFmpeg Platform GPL - Video processing and conversion
- JavaFX Media - Media playback
-
Notifications & Communication:
- Twilio SDK 10.4.1 - SMS integration
- Vonage Client 8.1.0 - Additional SMS capabilities
- JavaMail API 1.6.2 - Email services
- Apache Commons Email 1.6.0 - Enhanced email functionality
- TrayNotification - System tray notifications
-
Document & Data Processing:
- iText 5.5.13.4 - PDF generation and manipulation
- PDFBox 3.0.2 - PDF manipulation library
- ZXing 3.5.3 - Barcode/QR code generation and scanning
- JSON 20240303 - JSON parsing and generation
-
Natural Language Processing:
- Stanford CoreNLP 4.5.7 - Sentiment analysis for reviews
-
API Integration:
- Google API Client 2.6.0 - Google services integration
- YouTube API v3 - Video content integration
- AsyncHttpClient 3.0.1 - Asynchronous HTTP requests
-
Build & Quality Tools:
- Maven - Build automation and dependency management
- OpenRewrite - Automated refactoring
- Logback 1.5.6 - Logging framework
- SnakeYAML 2.2 - YAML processing for configuration
Rakcha Desktop follows a well-structured MVC (Model-View-Controller) architecture pattern:
-
Models (
com.esprit.models
):- Film Models (
com.esprit.models.films
) - Data structures for films, actors, categories, and comments - Cinema Models (
com.esprit.models.cinemas
) - Cinema, hall, seat, and seance entities - Series Models (
com.esprit.models.series
) - Series, episodes, and feedback data structures - Product Models (
com.esprit.models.produits
) - Products, orders, cart, and review entities - User Models (
com.esprit.models.users
) - User hierarchy with admin, client, and cinema manager roles
- Film Models (
-
Views:
- FXML files (in
src/main/resources/ui/
) - Declarative UI definitions - CSS styles (in
src/main/resources/styles/
) - UI styling - Images & Media (in
src/main/resources/images/
) - Visual assets
- FXML files (in
-
Controllers (
com.esprit.controllers
):- Film Controllers (
com.esprit.controllers.films
) - Manage film-related UI interactions - Cinema Controllers (
com.esprit.controllers.cinemas
) - Handle cinema venue and screening management - Series Controllers (
com.esprit.controllers.series
) - Control series and episode display - Product Controllers (
com.esprit.controllers.produits
) - E-commerce functionality - User Controllers (
com.esprit.controllers.users
) - Authentication and profile management - Navigation Controllers - Handle sidebar navigation and application flow
- Film Controllers (
-
Services (
com.esprit.services
):- Based on the
IService<T>
interface - Standard CRUD operations - Film Services (
com.esprit.services.films
) - Film business logic - Cinema Services (
com.esprit.services.cinemas
) - Cinema and seance management - Series Services (
com.esprit.services.series
) - Series-specific operations with DTO pattern - Product Services (
com.esprit.services.produits
) - E-commerce operations - User Services (
com.esprit.services.users
) - Authentication and user management
- Based on the
-
Utils (
com.esprit.utils
):- DataSource - Database connection management
- Authentication Utils - Google/Microsoft OAuth, face recognition
- Payment Utils - Payment processing helpers
- Media Utils - Film trailers and media handling
- External APIs - IMDB, YouTube integration
- Communication - Email, SMS, and notification utilities
- Document Generation - PDF export and reporting
- Security - Cryptography and validation
These instructions will help you set up the project on your local machine.
- โ Java JDK 17 or later
- ๐ ๏ธ Maven 3.6+
- ๐๏ธ MySQL 8.0+ (with XAMPP or standalone)
- ๐ป IDE with JavaFX support (IntelliJ IDEA, Eclipse, VS Code with extensions)
๐ง Minimum Requirements:
- ๐ฟ OS: Windows 10, macOS 10.15 (Catalina), Ubuntu 20.04 or later
- โ๏ธ Processor: Intel Core i3 or AMD equivalent
- ๐ง RAM: 4 GB
- ๐ฝ Storage: 500 MB for application, 1 GB+ recommended for content
- ๐ผ๏ธ Graphics: Graphics card with DirectX 11 support
- ๐ Internet: Broadband connection for streaming features
โ Recommended Specifications:
- โ๏ธ Processor: Intel Core i5/i7 or AMD equivalent
- ๐ง RAM: 8 GB or more
- ๐ฅ๏ธ Graphics: Dedicated GPU with 2GB+ VRAM for optimal performance with face recognition
- ๐ฝ Storage: SSD storage for better performance
- ๐ Internet: 10+ Mbps connection for HD streaming
Rakcha Desktop includes several performance optimizations:
- Connection pooling for database operations
- Lazy loading of media content
- Image caching for faster UI rendering
- Asynchronous operations for network-bound tasks
- GPU acceleration for video processing and face recognition
-
Clone the repository:
git clone https://github.com/aliammari1/rakcha-desktop.git cd rakcha-desktop
-
Install dependencies:
mvn install
-
Configure application:
- Set up database credentials in the appropriate configuration file
- Configure API keys for external services (Google, Microsoft, Stripe, etc.)
RAKCHA supports multiple database types for different environments:
No setup required! The application automatically uses SQLite:
# Run with SQLite (default for development)
mvn compile exec:java -Dexec.mainClass="com.esprit.MainApp"
The SQLite database file will be created automatically at data/rakcha_db.sqlite
.
-
Start MySQL server (using XAMPP or standalone MySQL):
# Using provided VS Code task Ctrl+Shift+P โ "Tasks: Run Task" โ "Start MySQL" # Or manually with XAMPP C:/xampp/mysql/bin/mysqld.exe --defaults-file=C:/xampp/mysql/bin/my.ini --standalone
-
Create database:
CREATE DATABASE rakcha_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
Switch to MySQL:
# Set environment variable export DB_TYPE=mysql # Or use the configuration script ./database-config.sh mysql # Or configure programmatically mvn compile exec:java -Dexec.mainClass="com.esprit.examples.DatabaseExample"
Set these environment variables to configure your database:
For SQLite (Development):
export DB_TYPE=sqlite
export DB_URL="jdbc:sqlite:data/rakcha_db.sqlite"
For MySQL (Production):
export DB_TYPE=mysql
export DB_URL="jdbc:mysql://localhost:3306/rakcha_db?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true"
export DB_USER=root
export DB_PASSWORD=your_password
For PostgreSQL:
export DB_TYPE=postgresql
export DB_URL="jdbc:postgresql://localhost:5432/rakcha_db"
export DB_USER=postgres
export DB_PASSWORD=your_password
For comprehensive database setup instructions, see DATABASE_GUIDE.md
Rakcha Desktop supports multiple user roles with different capabilities:
-
๐จโ๐ฉโ๐งโ๐ฆ Client/User:
- Browse and watch movies and series
- Purchase tickets for cinema showings
- Shop for entertainment-related products
- Manage personal profile and preferences
-
๐จโ๐ผ Admin:
- Manage users and content
- Access analytics and reports
- Configure system settings
- Moderate reviews and comments
-
๐ญ Cinema Manager:
- Add/update cinema information
- Manage movie showings and schedules
- Process ticket sales and promotions
- View cinema-specific statistics
- Authentication: Use traditional login, social authentication, or face recognition
- Content Navigation: Use the sidebar to switch between movies, series, events, products, and cinemas
- Profile Management: Update personal information, preferences, and payment methods
- Cinema Integration: Find nearby cinemas, view showtimes, and purchase tickets
- Movie and Series Streaming: Watch content directly within the application
- Shopping Experience: Browse, filter, and purchase entertainment merchandise
- Social Features: Rate content, leave reviews, and interact with other users
- Payment Processing: Secure checkout with multiple payment options
- Notifications: Receive updates about new content, promotions, and account activity
Rakcha Desktop integrates with several external APIs:
- ๐ Google & Microsoft OAuth: For social authentication
โถ๏ธ YouTube API: For movie trailers and related content- ๐ฌ IMDB API: For film and series information
- ๐ณ Stripe & PayPal: For payment processing
- ๐ฑ Twilio: For SMS notifications
- โ๏ธ Weather API: For location-based information
Rakcha Desktop can be easily deployed using Docker containers, simplifying the setup process and ensuring consistent environments across different systems.
-
Build and start the containers:
./database.sh start
-
Stop the containers:
./database.sh stop
-
View container logs:
./database.sh logs
-
Restart containers:
./database.sh restart
The application is containerized using the following components:
- App Container: Java application built with Maven and running on JDK 21 with noVNC for GUI access
- MySQL Container: Database server with pre-initialized schema and data
- PHPMyAdmin Container: Web interface for database management
The Docker setup automatically handles:
- Database initialization using the provided SQL script
- Environment variable configuration
- Network setup between the application and database
- Volume persistence for the database
- Virtual framebuffer (Xvfb) and VNC server for GUI access through a web browser
Once the containers are running, you can access the JavaFX GUI through your web browser:
- Open your web browser and navigate to
http://localhost:6080/vnc.html
- Click the "Connect" button (no password needed)
- You should now see the Rakcha Desktop application interface in your browser
You can also connect directly with a VNC client to localhost:5900
(no password required).
If needed, you can also use direct Docker commands:
# Build the Docker image
docker build -t rakcha-app .
# Run the MySQL container
docker run -d -p 3306:3306 --name rakcha-mysql \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_DATABASE=rakcha_db \
-v $(pwd)/rakcha_db.sql:/docker-entrypoint-initdb.d/rakcha_db.sql \
mysql:8.0
# Run the application container with noVNC
docker run -d \
--name rakcha-app \
-p 8080:8080 \
-p 6080:6080 \
-p 5900:5900 \
-e DB_HOST=rakcha-mysql \
-e DB_PORT=3306 \
-e DB_NAME=rakcha_db \
-e DB_USER=root \
-e DB_PASSWORD=root \
--link rakcha-mysql \
rakcha-app
For local development and testing:
# Package the application
mvn clean package
# Run the packaged JAR
java -jar target/RAKCHA-1.0-SNAPSHOT.jar
For production environments:
-
Create a distributable package:
mvn clean package
-
Create platform-specific installers (optional, requires additional plugins):
# For Windows installer mvn jpackage:jpackage@win # For macOS app bundle mvn jpackage:jpackage@mac # For Linux package mvn jpackage:jpackage@linux
-
Database setup for production:
- Configure a dedicated MySQL server
- Set up database replication if needed
- Configure proper backup procedures
-
Environment configuration:
- Use production API keys and credentials
- Configure logging for production environment
- Set up monitoring and alerting
-
Clone the repository:
git clone https://github.com/aliammari1/rakcha-desktop.git
-
Navigate to project directory:
cd rakcha-desktop
-
Build with Maven:
mvn clean package
-
Run the application:
java -jar target/RAKCHA-1.0-SNAPSHOT.jar
Alternatively, you can use the JavaFX Maven plugin:
mvn javafx:run
-
Development in IDE:
- Open the project in your preferred IDE (IntelliJ IDEA, Eclipse, etc.)
- Ensure you have the JavaFX plugin installed
- Run the main class:
com.esprit.MainApp
rakcha-desktop/
โโโ src/
โ โโโ main/
โ โ โโโ java/
โ โ โ โโโ com/
โ โ โ โโโ esprit/
โ โ โ โโโ controllers/ # ๐ฎ UI controllers
โ โ โ โ โโโ films/ # ๐ฌ Film-related controllers
โ โ โ โ โโโ series/ # ๐บ Series-related controllers
โ โ โ โ โโโ users/ # ๐ค User-related controllers
โ โ โ โ โโโ cinemas/ # ๐ข Cinema-related controllers
โ โ โ โ โโโ produits/ # ๐๏ธ Product-related controllers
โ โ โ โโโ models/ # ๐ Data models
โ โ โ โโโ services/ # โ๏ธ Business logic
โ โ โ โโโ utils/ # ๐ ๏ธ Utility classes
โ โ โโโ resources/
โ โ โโโ ui/ # ๐จ FXML UI files
โ โ โโโ images/ # ๐ผ๏ธ Image resources
โ โ โโโ styles/ # ๐
CSS style files
โ โ โโโ META-INF/ # ๐ Metadata
โ โโโ test/
โ โโโ java/ # ๐งช Test classes
โโโ docs/ # ๐ Documentation
โโโ pom.xml # ๐ฆ Maven configuration
โโโ README.md # ๐ This file
Rakcha Desktop implements several practices to ensure code quality and maintainability:
- OpenRewrite: Automated refactoring and code modernization
- Java Best Practices: Following Java 17 conventions and patterns
- Code Cleanup: Automated static analysis and code style enforcement
- Continuous Documentation: JavaDoc generation with comprehensive API documentation
- Code Structure: Clean modular architecture with clear separation of concerns
Testing pipelines include:
- Unit tests for business logic
- Integration tests for service interactions
- UI tests for interface validation
Run the tests using Maven:
mvn test
The application includes various test types:
- โ Unit tests for individual components
- ๐ Integration tests for service-to-service communication
- ๐ฅ๏ธ UI tests for the JavaFX interface
We welcome contributions to Rakcha Desktop! Please read our CONTRIBUTING.md file for details on how to submit pull requests.
- ๐ด Fork the repository
- ๐ฟ Create your feature branch:
git checkout -b feature/amazing-feature
- ๐พ Commit your changes:
git commit -m 'Add some amazing feature'
- ๐ค Push to the branch:
git push origin feature/amazing-feature
- ๐ Open a Pull Request
This project is licensed under the MIT License - see the LICENSE.md file for details.
- Ali Ammari - Initial work - aliammari1
See also the list of contributors who participated in this project.
-
Q3 2025
- ๐ฑ Mobile companion application with cross-platform synchronization
- ๐ง AI-enhanced content recommendations based on viewing habits
- ๐ Advanced analytics dashboard for business intelligence
-
Q4 2025
- ๐ฅฝ Virtual reality cinema experience integration
- ๐ฅ Enhanced social features with friend connections and watch parties
- ๐ International payment gateway expansion
-
Q1 2026
- ๐ฅ Content creator portal for independent filmmakers
- ๐ Subscription service model implementation
- ๐ Integration with smart home systems
- โ๏ธ Blockchain-based loyalty program
- ๐ AR experiences for product visualization
- ๐ค Voice control interface
- ๐ Special thanks to all contributors and testers
- ๐ก Inspiration from modern entertainment platforms
- ๐ Libraries and frameworks that made this project possible