w-funnel/README.md
2025-09-28 22:48:50 +02:00

2.4 KiB
Raw Blame History

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.

Production build

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:

# Sync all published funnels from database
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

# Keep JSON files for debugging
npm run sync:funnels -- --keep-files

This script:

  1. Connects to MongoDB and fetches all latest published funnels
  2. Saves them as temporary JSON files in public/funnels/
  3. Bakes them into TypeScript (src/lib/funnel/bakedFunnels.ts)
  4. Cleans up temporary JSON files

Other Funnel Commands

# 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