name: setup description: > Environment setup from zero — prerequisites, clone, install, env vars via 1Password, and dev server. Use for getting started, first-time setup, broken environments, install failures, or missing env vars. allowed-tools: Bash, Read, Glob, Grep, AskUserQuestion
Environment Setup Guide
You are helping a contributor set up the LFX One development environment from scratch. Walk through each step interactively, verifying success before moving on.
Step 1: Prerequisites
Check that the following are installed:
- Node.js v22+ — Run
node --versionto verify. If missing, instruct them to install via nvm or nodejs.org. - Yarn v4.9.2+ — Run
yarn --versionto verify. This project uses Yarn Berry (Corepack). If missing:corepack enable && corepack prepare yarn@4.9.2 --activate. - Git — Run
git --versionto verify.
Docker is NOT required for local development. All services point to the shared dev environment — no local databases, message brokers, or infrastructure to run.
Step 2: Clone the Repository
If not already cloned:
git clone <repository-url>
cd lfx-self-serve
If already in the repo, confirm the working directory:
pwd
git remote -v
Step 3: Environment Variables
The project requires environment variables to connect to backend services. All values are available through 1Password.
Copy the env template:
cp apps/lfx-one/.env.example apps/lfx-one/.envGet credentials from 1Password:
- Access the LFX One Dev Environment vault in 1Password
- Copy all required values into
apps/lfx-one/.env - The
.env.examplefile documents every variable and its purpose — use it as your reference - If you don't have 1Password access, contact a code owner on Slack for help
Validate critical env vars are populated:
missing=() for key in PCC_AUTH0_CLIENT_ID PCC_AUTH0_CLIENT_SECRET PCC_AUTH0_ISSUER_BASE_URL PCC_AUTH0_AUDIENCE PCC_AUTH0_SECRET PCC_BASE_URL LFX_V2_SERVICE; do grep -qE "^${key}=.+" apps/lfx-one/.env || missing+=("$key") done if [ ${#missing[@]} -gt 0 ]; then printf "Missing env vars: %s\n" "${missing[*]}" else echo "All critical env vars are populated." fiIf any keys are missing, authentication will fail. Go back to 1Password and fill in the missing values. Note:
PCC_AUTH0_SECRETcan be any sufficiently long random string — it's used for session encryption, not fetched from 1Password.
Important: All services point to the shared dev environment. No local infrastructure setup is needed.
Step 4: Install Dependencies
yarn install
Verify the install completed without errors. If there are issues:
- Ensure Node.js v22+ is active
- Try
corepack enableif Yarn isn't recognized - Delete
node_modulesand.yarn/cachethen retry
Step 5: Start Development Server
yarn start
This starts the Angular dev server with hot reload. The app should be available at http://localhost:4200.
Step 6: Verify
- Open
http://localhost:4200in your browser - The app should load and show the login page
- If you see errors in the terminal, check the
.envfile values
Troubleshooting
If the contributor encounters issues, help them debug:
- Port in use: Check if another process is using port 4200
- Auth errors: Verify
.envvalues match 1Password — re-run the env var validation from Step 3 - Build errors: Run
yarn buildto see detailed error output - Missing dependencies: Run
yarn installagain - Corepack issues: Run
corepack enable && corepack prepare yarn@4.9.2 --activate
Local auth gotchas (Authelia)
The local stack uses Authelia at https://auth.k8s.orb.local (not Auth0 — Auth0 is prod/staging only).
NODE_TLS_REJECT_UNAUTHORIZED=0is required for local Authelia because the cert is self-signed. See README.Local-mode detection: the server checks
issuerBaseUrl.includes('auth.k8s.orb.local')inm2m-token.util.ts,auth.middleware.ts, andprofile.controller.ts.Login broken? Most common cause is stale cookies or a rotated client secret. Clear browser cookies for
localhost:4200, then re-fetch the Authelia client secret and update.env:kubectl get secrets authelia-clients -n lfx \ -o jsonpath='{.data.lfx}' | base64 --decodeInspect the current session (after login):
http://localhost:4200/api/profile(the server-registered route backed byprofileController.getCurrentUserProfile— there is no/api/auth/me)If the
lfxAuthelia client doesn't exist in the cluster, theauthelia-clientssecret will be missing — the local k8s stack needshelmfile syncto recreate it.
Done
Once the app loads successfully, the contributor is ready to start development. Suggest they explore the codebase structure:
apps/lfx-one/src/app/modules/— Feature modulesapps/lfx-one/src/app/shared/— Shared components, services, pipespackages/shared/src/— Shared types, interfaces, utilities
Next step: Use /self-serve-dev to build or modify a feature.