Prerequisites
Before you begin, make sure you have the following installed. Not all are required depending on which platform you want to run.
| Tool | Version | Required for |
|---|
| Java | 21+ | Desktop |
| Flutter SDK | Latest | Mobile |
| PHP | 8.2+ | Web / Docker |
| Node.js | 18+ | Web / Docker |
| Docker | Latest | Docker setup |
| Git | Any | All |
If you only want to run one platform, you only need the tools for that platform. Docker is the fastest path to a fully working environment.
Set up Rakcha
Clone the repository
git clone https://github.com/aliammari1/rakcha.git
cd rakcha
Choose your setup path
Select the platform you want to run: Docker (recommended)
Web only
Desktop only
Mobile only
Docker brings up the full web application stack — PHP, MySQL, and all services — with a single command. No local PHP or Composer installation required.docker-compose -f apps/web/compose.yaml up -d
Once the containers start, the application is available at http://localhost.Use Docker for the quickest end-to-end setup. The Compose file configures the database and all service dependencies automatically.
Runs the Symfony web application locally using the Symfony CLI dev server.cd apps/web
composer install && npm install
Then start the development server:The application is available at http://localhost:8000.The Symfony CLI must be installed before running symfony server:start. Builds and launches the JavaFX desktop application using Maven.cd apps/desktop
mvn clean install -DskipTests
Then run the application: Installs Flutter dependencies and launches the mobile app on a connected device or emulator.cd apps/mobile
flutter pub get
Then run the application:A connected device or running emulator is required. Run flutter devices to list available targets.
Configure environment variables
The web application requires a .env file. Copy the example and edit it with your values:cd apps/web
cp .env.example .env
Open .env and configure the following key variables:# Application
APP_ENV=dev
APP_SECRET=your_secret_here
# Database — MySQL connection string
DATABASE_URL="mysql://[email protected]:3306/rakcha?serverVersion=8.0.32&charset=utf8mb4"
# Google OAuth
GOOGLE_ID=your_google_client_id
GOOGLE_SECRET=your_google_client_secret
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_API_KEY=your_google_api_key
# Microsoft OAuth
MICROSOFT_LIVE_ID=your_microsoft_client_id
MICROSOFT_LIVE_SECRET=your_microsoft_client_secret
# Stripe payments
STRIPE_KEY=pk_test_...
STRIPE_SECRET_KEY=sk_test_...
# PayPal payments
PAYPAL_CLIENT_ID=your_paypal_client_id
PAYPAL_SECRET_KEY=your_paypal_secret
PAYPAL_CURRENCY=USD
# YouTube (trailer embeds)
YOUTUBE_API_KEY=your_youtube_api_key
# Meilisearch (full-text search)
MEILISEARCH_URL=http://127.0.0.1:7700
MEILISEARCH_API_KEY=your_meilisearch_key
Never commit .env to version control. It contains secrets. The .env.example file is the only committed reference.
Run database migrations
Apply all pending Doctrine migrations to create the database schema:cd apps/web
php bin/console doctrine:migrations:migrate --no-interaction
When using Docker, run this command inside the web container: docker-compose -f apps/web/compose.yaml exec web php bin/console doctrine:migrations:migrate --no-interaction
Access the running application
Once setup is complete, open the application in your browser: Docker
Web (Symfony CLI)
Desktop
Mobile
The JavaFX window opens automatically after mvn javafx:run completes.
The app launches on your connected device or emulator.
To install all dependencies in one step using the Task runner:
npm install -g @go-task/cli
task setup
This runs web:install, mobile:get, and desktop:build in sequence.