Skip to main content
The web application is the browser-based interface to Rakcha, built on Symfony 6.4 with PHP 8.1+. It covers cinema management, a film and series catalog, an e-commerce storefront, and full user administration — all rendered with Twig 3 templates and styled with Bootstrap 5.

Prerequisites

  • PHP 8.1+ with extensions: ctype, curl, gd, iconv, OpenSSL, PDO, Mbstring, XML
  • Composer 2.0+
  • Node.js 18+ and npm
  • MySQL 8.0+ or PostgreSQL 13+
  • Redis 6.0+ (recommended for caching and sessions)
  • Symfony CLI (for the dev server)

Installation

1

Install PHP and Node dependencies

cd apps/web
composer install
npm install
2

Configure environment variables

Copy the example file and fill in your credentials:
cp .env.example .env
Key variables to set in .env:
APP_ENV=dev
APP_SECRET=your-secret-key-here
DATABASE_URL="mysql://[email protected]:3306/rakcha?serverVersion=8.0.32&charset=utf8mb4"
MAILER_DSN=smtp://localhost:1025
GOOGLE_ID=your-google-client-id
GOOGLE_SECRET=your-google-client-secret
MICROSOFT_LIVE_ID=your-microsoft-client-id
MICROSOFT_LIVE_SECRET=your-microsoft-client-secret
STRIPE_KEY=pk_test_...
STRIPE_SECRET_KEY=sk_test_...
PAYPAL_CLIENT_ID=your-paypal-client-id
PAYPAL_SECRET_KEY=your-paypal-secret
YOUTUBE_API_KEY=your-youtube-api-key
See Environment Setup for the full list of available variables.
3

Set up the database

php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate --no-interaction
4

Build frontend assets

npm run dev
5

Start the development server

symfony server:start -d
The application is available at http://localhost:8000.

Docker setup

A compose.yaml file is included in apps/web:
docker-compose -f apps/web/compose.yaml up -d
docker-compose -f apps/web/compose.yaml exec web composer install
docker-compose -f apps/web/compose.yaml exec web php bin/console doctrine:migrations:migrate --no-interaction
docker-compose -f apps/web/compose.yaml exec web npm run build

Database migrations

Run pending migrations against the configured database:
php bin/console doctrine:migrations:migrate --no-interaction
This is equivalent to the Taskfile task task web:migrate.

Key feature areas

The source code under src/Controller/ is organized into the following modules:
ModuleControllersDescription
Cinema/Cinemas, theaters, sessionsManage venues, halls, showtimes, and seat reservations
Film/Films, actors, categoriesFilm catalog with IMDB import, trailers, and reviews
User/Auth, profiles, 2FARegistration, OAuth (Google, Microsoft), TOTP two-factor auth
Shop/Products, orders, paymentsE-commerce with Stripe and PayPal checkout
Admin/Dashboard, reportsAdmin panel with analytics and user management
Api/REST endpointsJSON API consumed by the mobile and desktop apps
OAuth credentials for Google and Microsoft, and payment keys for Stripe and PayPal, must be configured in .env before the corresponding features will work.

Running tests

php bin/phpunit
Test categories:
  • Unit — individual services and entities
  • Integration — database and service wiring
  • Functional — full HTTP request/response cycle
  • API — REST endpoint contracts
  • Security — authentication and authorization flows

Building frontend assets

npm run dev
Builds unminified assets with source maps.

Technology stack

LayerTechnology
FrameworkSymfony 6.4 (LTS)
LanguagePHP 8.1+
ORMDoctrine ORM 2.16 / DBAL 3
TemplatesTwig 3
UI frameworkBootstrap 5
Asset bundlerWebpack Encore
JavaScriptStimulus + Turbo
DatabaseMySQL 8 / PostgreSQL 13
Cache / sessionsRedis 6
PaymentsStripe, PayPal
Auth (OAuth)Google, Microsoft
2FATOTP via scheb/2fa-bundle
SMSTwilio SDK
TestingPHPUnit

Build docs developers (and LLMs) love