mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 19:41:09 +02:00
feat(landing): add Cloudflare Pages deployment setup
- Add wrangler.toml for all 5 landing pages (chat, picture, manacore, manadeck, zitare)
- Add wrangler CLI as dev dependency
- Add deploy scripts: pnpm deploy:landing:{project} and pnpm deploy:landing:all
- Add Cloudflare helper scripts: cf:login, cf:projects:list, cf:projects:create
- Document Cloudflare Pages setup in CLAUDE.md
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
4cc1ad2c92
commit
ef8fd6a101
8 changed files with 847 additions and 239 deletions
61
CLAUDE.md
61
CLAUDE.md
|
|
@ -20,6 +20,7 @@ This is a pnpm workspace monorepo containing multiple product applications with
|
|||
| **chat** | AI chat application | NestJS backend, Expo mobile, SvelteKit web, Astro landing |
|
||||
| **zitare** | Daily inspiration quotes | NestJS backend, Expo mobile, SvelteKit web, Astro landing |
|
||||
| **presi** | Presentation tool | NestJS backend, Expo mobile, SvelteKit web |
|
||||
| **contacts** | Contact management | NestJS backend, SvelteKit web |
|
||||
|
||||
### Archived Projects (`apps-archived/`)
|
||||
|
||||
|
|
@ -49,6 +50,7 @@ pnpm run picture:dev
|
|||
pnpm run chat:dev
|
||||
pnpm run zitare:dev
|
||||
pnpm run presi:dev
|
||||
pnpm run contacts:dev
|
||||
|
||||
# Start specific app within project
|
||||
pnpm run dev:chat:mobile # Just mobile app
|
||||
|
|
@ -434,6 +436,65 @@ S3_ACCESS_KEY=your-access-key
|
|||
S3_SECRET_KEY=your-secret-key
|
||||
```
|
||||
|
||||
## Landing Pages (Cloudflare Pages)
|
||||
|
||||
All landing pages are deployed to Cloudflare Pages using Direct Upload via Wrangler CLI.
|
||||
|
||||
### Landing Pages
|
||||
|
||||
| Project | Package | Cloudflare Project | URL |
|
||||
|---------|---------|-------------------|-----|
|
||||
| Chat | `@chat/landing` | `chat-landing` | https://chat-landing.pages.dev |
|
||||
| Picture | `@picture/landing` | `picture-landing` | https://picture-landing.pages.dev |
|
||||
| ManaCore | `@manacore/landing` | `manacore-landing` | https://manacore-landing.pages.dev |
|
||||
| ManaDeck | `@manadeck/landing` | `manadeck-landing` | https://manadeck-landing.pages.dev |
|
||||
| Zitare | `@zitare/landing` | `zitare-landing` | https://zitare-landing.pages.dev |
|
||||
|
||||
### Local Deployment
|
||||
|
||||
```bash
|
||||
# First time: Login to Cloudflare
|
||||
pnpm cf:login
|
||||
|
||||
# Create projects (one-time setup)
|
||||
pnpm cf:projects:create
|
||||
|
||||
# Deploy individual landing page
|
||||
pnpm deploy:landing:chat
|
||||
pnpm deploy:landing:picture
|
||||
pnpm deploy:landing:manacore
|
||||
pnpm deploy:landing:manadeck
|
||||
pnpm deploy:landing:zitare
|
||||
|
||||
# Deploy all landing pages
|
||||
pnpm deploy:landing:all
|
||||
|
||||
# List all projects
|
||||
pnpm cf:projects:list
|
||||
```
|
||||
|
||||
### Adding New Landing Pages
|
||||
|
||||
1. Create the landing page in `apps/{project}/apps/landing/`
|
||||
2. Add `wrangler.toml`:
|
||||
```toml
|
||||
name = "{project}-landing"
|
||||
compatibility_date = "2024-12-01"
|
||||
pages_build_output_dir = "dist"
|
||||
```
|
||||
3. Add deploy script to root `package.json`:
|
||||
```json
|
||||
"deploy:landing:{project}": "pnpm --filter @{project}/landing build && npx wrangler pages deploy apps/{project}/apps/landing/dist --project-name={project}-landing"
|
||||
```
|
||||
4. Create Cloudflare project: `npx wrangler pages project create {project}-landing --production-branch=main`
|
||||
|
||||
### Custom Domains
|
||||
|
||||
```bash
|
||||
# Add custom domain to a project
|
||||
npx wrangler pages project add-domain chat-landing chat.manacore.app
|
||||
```
|
||||
|
||||
## Adding Dependencies
|
||||
|
||||
```bash
|
||||
|
|
|
|||
6
apps/chat/apps/landing/wrangler.toml
Normal file
6
apps/chat/apps/landing/wrangler.toml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Cloudflare Pages configuration for Chat Landing
|
||||
# Deployed via GitHub Actions (Direct Upload)
|
||||
|
||||
name = "chat-landing"
|
||||
compatibility_date = "2024-12-01"
|
||||
pages_build_output_dir = "dist"
|
||||
6
apps/manacore/apps/landing/wrangler.toml
Normal file
6
apps/manacore/apps/landing/wrangler.toml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Cloudflare Pages configuration for ManaCore Landing
|
||||
# Deployed via GitHub Actions (Direct Upload)
|
||||
|
||||
name = "manacore-landing"
|
||||
compatibility_date = "2024-12-01"
|
||||
pages_build_output_dir = "dist"
|
||||
6
apps/manadeck/apps/landing/wrangler.toml
Normal file
6
apps/manadeck/apps/landing/wrangler.toml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Cloudflare Pages configuration for ManaDeck Landing
|
||||
# Deployed via GitHub Actions (Direct Upload)
|
||||
|
||||
name = "manadeck-landing"
|
||||
compatibility_date = "2024-12-01"
|
||||
pages_build_output_dir = "dist"
|
||||
6
apps/picture/apps/landing/wrangler.toml
Normal file
6
apps/picture/apps/landing/wrangler.toml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Cloudflare Pages configuration for Picture Landing
|
||||
# Deployed via GitHub Actions (Direct Upload)
|
||||
|
||||
name = "picture-landing"
|
||||
compatibility_date = "2024-12-01"
|
||||
pages_build_output_dir = "dist"
|
||||
6
apps/zitare/apps/landing/wrangler.toml
Normal file
6
apps/zitare/apps/landing/wrangler.toml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Cloudflare Pages configuration for Zitare Landing
|
||||
# Deployed via GitHub Actions (Direct Upload)
|
||||
|
||||
name = "zitare-landing"
|
||||
compatibility_date = "2024-12-01"
|
||||
pages_build_output_dir = "dist"
|
||||
32
package.json
32
package.json
|
|
@ -54,6 +54,24 @@
|
|||
"presi:db:push": "pnpm --filter @presi/backend db:push",
|
||||
"presi:db:studio": "pnpm --filter @presi/backend db:studio",
|
||||
"presi:db:seed": "pnpm --filter @presi/backend db:seed",
|
||||
"contacts:dev": "turbo run dev --filter=contacts...",
|
||||
"dev:contacts:mobile": "pnpm --filter @contacts/mobile dev",
|
||||
"dev:contacts:web": "pnpm --filter @contacts/web dev",
|
||||
"dev:contacts:landing": "pnpm --filter @contacts/landing dev",
|
||||
"dev:contacts:backend": "pnpm --filter @contacts/backend dev",
|
||||
"dev:contacts:app": "turbo run dev --filter=@contacts/web --filter=@contacts/backend",
|
||||
"contacts:db:push": "pnpm --filter @contacts/backend db:push",
|
||||
"contacts:db:studio": "pnpm --filter @contacts/backend db:studio",
|
||||
"contacts:db:seed": "pnpm --filter @contacts/backend db:seed",
|
||||
"calendar:dev": "turbo run dev --filter=calendar...",
|
||||
"dev:calendar:mobile": "pnpm --filter @calendar/mobile dev",
|
||||
"dev:calendar:web": "pnpm --filter @calendar/web dev",
|
||||
"dev:calendar:landing": "pnpm --filter @calendar/landing dev",
|
||||
"dev:calendar:backend": "pnpm --filter @calendar/backend dev",
|
||||
"dev:calendar:app": "turbo run dev --filter=@calendar/web --filter=@calendar/backend",
|
||||
"calendar:db:push": "pnpm --filter @calendar/backend db:push",
|
||||
"calendar:db:studio": "pnpm --filter @calendar/backend db:studio",
|
||||
"calendar:db:seed": "pnpm --filter @calendar/backend db:seed",
|
||||
"voxel-lava:dev": "turbo run dev --filter=@voxel-lava/web --filter=@voxel-lava/backend",
|
||||
"dev:voxel-lava:web": "pnpm --filter @voxel-lava/web dev",
|
||||
"dev:voxel-lava:backend": "pnpm --filter @voxel-lava/backend start:dev",
|
||||
|
|
@ -75,7 +93,16 @@
|
|||
"docker:logs:auth": "docker compose -f docker-compose.dev.yml --env-file .env.development logs -f mana-core-auth",
|
||||
"docker:logs:chat": "docker compose -f docker-compose.dev.yml --env-file .env.development logs -f chat-backend",
|
||||
"docker:ps": "docker compose -f docker-compose.dev.yml --env-file .env.development ps -a",
|
||||
"docker:clean": "docker compose -f docker-compose.dev.yml --env-file .env.development --profile all down -v"
|
||||
"docker:clean": "docker compose -f docker-compose.dev.yml --env-file .env.development --profile all down -v",
|
||||
"deploy:landing:chat": "pnpm --filter @chat/landing build && npx wrangler pages deploy apps/chat/apps/landing/dist --project-name=chat-landing",
|
||||
"deploy:landing:picture": "pnpm --filter @picture/landing build && npx wrangler pages deploy apps/picture/apps/landing/dist --project-name=picture-landing",
|
||||
"deploy:landing:manacore": "pnpm --filter @manacore/landing build && npx wrangler pages deploy apps/manacore/apps/landing/dist --project-name=manacore-landing",
|
||||
"deploy:landing:manadeck": "pnpm --filter @manadeck/landing build && npx wrangler pages deploy apps/manadeck/apps/landing/dist --project-name=manadeck-landing",
|
||||
"deploy:landing:zitare": "pnpm --filter @zitare/landing build && npx wrangler pages deploy apps/zitare/apps/landing/dist --project-name=zitare-landing",
|
||||
"deploy:landing:all": "pnpm deploy:landing:chat && pnpm deploy:landing:picture && pnpm deploy:landing:manacore && pnpm deploy:landing:manadeck && pnpm deploy:landing:zitare",
|
||||
"cf:login": "npx wrangler login",
|
||||
"cf:projects:list": "npx wrangler pages project list",
|
||||
"cf:projects:create": "echo 'Creating Cloudflare Pages projects...' && npx wrangler pages project create chat-landing --production-branch=main && npx wrangler pages project create picture-landing --production-branch=main && npx wrangler pages project create manacore-landing --production-branch=main && npx wrangler pages project create manadeck-landing --production-branch=main && npx wrangler pages project create zitare-landing --production-branch=main"
|
||||
},
|
||||
"devDependencies": {
|
||||
"concurrently": "^9.2.0",
|
||||
|
|
@ -83,7 +110,8 @@
|
|||
"prettier-plugin-astro": "^0.14.1",
|
||||
"prettier-plugin-svelte": "^3.4.0",
|
||||
"turbo": "^2.3.0",
|
||||
"typescript": "^5.9.3"
|
||||
"typescript": "^5.9.3",
|
||||
"wrangler": "^4.51.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
|
|
|||
963
pnpm-lock.yaml
generated
963
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue