# Build & runtime modes The project can be built in two isolated configurations. The build scripts set the `FUNNEL_BUILD_VARIANT`/`NEXT_PUBLIC_FUNNEL_BUILD_VARIANT` environment variables so that unused code is tree-shaken during compilation. - **Production (frontend-only)** – renders funnels using the baked JSON bundle. The admin UI and MongoDB access are not included in the bundle. - Development preview: `npm run dev:frontend` - Production build (default): `npm run build` or `npm run build:frontend` - Production start (default): `npm run start` or `npm run start:frontend` - **Development (full system)** – runs the public frontend together with the admin panel backed by MongoDB. - Development (default): `npm run dev` or `npm run dev:full` - Development build: `npm run build:full` - Development start: `npm run start:full` ## Local development 1. Install dependencies: `npm install` 2. Choose the required mode: - Production preview (frontend-only): `npm run dev:frontend` - Full system development: `npm run dev` The application will be available at [http://localhost:3000](http://localhost:3000). ## Production build ```bash npm run build # frontend-only production bundle # or npm run build:full # full system development bundle ``` After building, start the chosen bundle with `npm run start` (frontend-only) or `npm run start:full`. ## Funnel Management ### Database Synchronization To sync published funnels from MongoDB into the codebase: ```bash # Sync all published funnels from database (keeps JSON files) npm run sync:funnels # Preview what would be synced (dry-run mode) npm run sync:funnels -- --dry-run # Sync only specific funnels npm run sync:funnels -- --funnel-ids funnel-test,ru-career-accelerator # Sync and clean up JSON files after baking npm run sync:funnels -- --clean-files ``` This script: 1. Connects to MongoDB and fetches all latest published funnels 2. Downloads images from database and saves them to `public/images/` 3. Updates image URLs in funnels to point to local files 4. Saves them as JSON files in `public/funnels/` 5. Bakes them into TypeScript (`src/lib/funnel/bakedFunnels.ts`) 6. Keeps JSON files by default (use `--clean-files` to remove them) ### Other Funnel Commands ```bash # Import JSON files from public/funnels/ to MongoDB npm run import:funnels # Manually bake JSON files to TypeScript npm run bake:funnels ``` **Recommended Workflow:** 1. Create/edit funnels in the admin panel 2. Publish them in the admin 3. Run `npm run sync:funnels` to update the codebase 4. Build and deploy with the latest funnels