Skip to main content
The backend is a single Symfony codebase that powers two brands. They share all the code; what differs is configuration — branding, integrations, feature toggles, and infrastructure — selected at boot by a project code.
7days Performance logo
UKCC — UK Carp Competitions logo
7daysUKCC
Project code7daysukcarp
Brand7days PerformanceUK Carp Competitions
Domain7daysperformance.co.ukukcc.co.uk
Enum caseProjectCodeEnum::SEVEN_DAYSProjectCodeEnum::UKCC

How the project is selected

The active project comes from the PROJECT_CODE environment variable, exposed to the container as the project_code parameter (.env.example defaults it to 7days; the test suite runs as 7days). At boot, App\Kernel::configureContainer() layers configuration in this order, so a project file always overrides the shared defaults:
  1. config/project/default_parameters.yaml — shared defaults (the 7days brand values live here as the base).
  2. config/project/{project_code}_parameters.yaml — per-project overrides.
  3. config/{services}.yaml — shared service wiring.
  4. config/project/{project_code}_config.yaml — per-project service swaps.
The project code also selects per-project templates (templates/project/{project_code}/), assets (assets/images/weekdays/{project_code}), and is available as a Twig global.
Everything project-specific lives under config/project/. To see exactly what a brand overrides, diff 7days_parameters.yaml / 7days_config.yaml against the ukcarp_* equivalents.

What differs between the two

Swapped via {project_code}_config.yaml:
Concern7daysUKCC
Transactional emailSMTP.com (SmtpComApiSender)Mailgun (MailgunApiSender)
Suggested payment methodPaymentMethodProvider7daysPaymentMethodProviderUkcarp
Draw-results candidate policySevenDaysDrawResultsCandidateSelectionPolicyUkccDrawResultsCandidateSelectionPolicy
Set via {project_code}_parameters.yaml:
Parameter7daysUKCC
brand_color_main#2AA8F8#03989e
product_page_pathproductcompetition
draw_results_email_send_time22:3021:30
checkout_idv_enabledtruefalse
admin_draw_winners_enabledfalsetrue
Stock management (stock_mgmt)offon (stock_mgmt_location: UKCC, in-house stock)
Instant-win interstitialscarp / fishing category cross-sell
Prize-delivery suppliersbe2b, stjarna, voucherexpress, gold1, …be2b, in-house stock, …
AWS autoscaling groupsP02 / P03PU02 / PU03
Databases are per-brand as well (e.g. 7days_draw, 7days_user, … via the *_DATABASE_NAME env vars).

Running a specific project locally

Set PROJECT_CODE before starting the app:
# 7days (default)
PROJECT_CODE=7days

# UKCC
PROJECT_CODE=ukcarp
You’ll also point the *_DATABASE_NAME env vars at that brand’s databases. TODO: confirm the exact local setup steps and seed data per project (see Developers → local setup).

Open questions

  • TODO: Document the deploy pipeline per brand (how each project’s environments and autoscaling groups are targeted).
  • TODO: Note anything that must be kept in sync when adding project-specific config (e.g. a new parameter needing a default plus both project overrides).