78 lines
2.6 KiB
Markdown
78 lines
2.6 KiB
Markdown
# 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
|