Appearance
Frontend Applications
Jubiloop consists of two separate frontend applications, each serving a specific purpose.
Applications Overview
1. Web Application (apps/webapp/)
The main Jubiloop application for authenticated users to create and manage events.
- Framework: React 19 with TypeScript
- Routing: TanStack Router
- State Management: Zustand
- UI: shadcn/ui + Tailwind CSS
- Deployment: Cloudflare Pages
2. Marketing Site (apps/marketing/)
The public-facing website for showcasing Jubiloop features and attracting new users.
- Framework: Next.js 14 with TypeScript
- Rendering: Static Site Generation (SSG)
- Styling: Tailwind CSS
- Deployment: Cloudflare Pages
Shared Resources
Both applications share:
- UI components from
packages/ui - TypeScript types from the backend
- Tailwind configuration
- ESLint and Prettier settings
Development
bash
# Run both frontend apps
npm run dev:frontend
# Run individually
npm run dev:webapp # Web application only
npm run dev:marketing # Marketing site onlyArchitecture Decisions
Why Two Separate Apps?
- Performance: Marketing site can be fully static for best SEO
- Independence: Teams can work on each app without conflicts
- Optimization: Different build configs for different needs
- Security: Authentication logic isolated to webapp
Technology Choices
- React for Webapp: Best for complex, interactive UIs
- Next.js for Marketing: Best for SEO and static content
- Cloudflare Pages: Unlimited projects on free tier, great performance