The official homepage for JustEvery - building UI-first, generative software with ensemble AI.
This is a modern Next.js application deployed on Cloudflare Workers with video assets served from Cloudflare R2. The site features a responsive design with high-quality video backgrounds, animated sections, and optimized performance.
- 🎬 Responsive Video Backgrounds - Adaptive quality based on device and bandwidth
- ⚡ Edge Deployment - Cloudflare Workers for global low-latency
- 🎨 Modern Design - Tailwind CSS v4 with custom animations
- 📱 Mobile Optimized - Progressive enhancement and responsive layouts
- 🚀 Performance First - Optimized assets, lazy loading, and caching
- 🔄 CI/CD Pipeline - Automated deployment via GitHub Actions
- Framework: Next.js 15.3 with App Router
- Language: TypeScript
- Styling: Tailwind CSS v4
- Deployment: Cloudflare Workers via OpenNext
- Asset Storage: Cloudflare R2 for video hosting
- CI/CD: GitHub Actions for automated deployment
- Animation: Framer Motion
- Font: Space Grotesk (custom font)
/
├── .github/workflows/ # GitHub Actions CI/CD
├── public/ # Static assets
│ ├── img/ # Logo and favicons
│ └── video/ # Video files (local dev only)
├── src/
│ ├── app/ # Next.js App Router pages
│ │ ├── contact/ # Contact page
│ │ ├── docs/ # Documentation page
│ │ ├── ensemble/ # Ensemble product page
│ │ ├── future/ # Future vision page
│ │ ├── magi/ # Magi product page
│ │ ├── task/ # Task product page
│ │ ├── one/ # One product page
│ │ ├── showcase/ # App showcase page
│ │ ├── signup/ # Signup page
│ │ ├── stack/ # Tech stack page
│ │ ├── globals.css # Global styles
│ │ ├── layout.tsx # Root layout
│ │ ├── not-found.tsx # 404 page
│ │ └── page.tsx # Homepage
│ └── components/ # Reusable components
│ ├── Footer.tsx # Site footer
│ ├── Header.tsx # Site header
│ ├── HeaderWrapper.tsx # Header state wrapper
│ └── VideoPlayer.tsx # Responsive video component
├── wrangler.jsonc # Cloudflare Workers config
└── package.json # Dependencies and scripts
- Node.js 18.x or higher
- npm or yarn
- Cloudflare account (for deployment)
- GitHub account (for CI/CD)
# Install dependencies
npm install
# Start development server with TurboPack
npm run dev
# The site will be available at http://localhost:3000Create a .env.local file in the root directory:
# Cloudflare R2 Configuration (commented out for local dev)
# NEXT_PUBLIC_R2_PUBLIC_URL=https://assets.justevery.com
# NEXT_PUBLIC_R2_BUCKET_NAME=justevery-assetsFor local development, keep these commented out to use local video files. In production, they're set automatically by GitHub Actions.
The site uses a dual approach for video content:
- Local Development: Videos are served from
/public/video/ - Production: Videos are served from Cloudflare R2 at
https://assets.justevery.com
The VideoPlayer component automatically detects the environment and serves videos from the appropriate source. It includes:
- Responsive video sources based on screen size and pixel density
- WebM and MP4 formats for browser compatibility
- Subtitle support with custom positioning
- Fullscreen playback with sound
- Automatic quality selection
- 4K: 1440px+ width with 2x density, or 2560px+ width
- 2K: 1280px-1439px with 2x density, or 1920px-2559px
- 1080p: 1280px+ with standard density
- 720p: 768px+ on mobile/tablet
- 480p: Mobile devices under 768px
The site automatically deploys to Cloudflare Workers when you push to the main branch via GitHub Actions.
# Build for Cloudflare Workers
npm run build:cloudflare
# Deploy to Cloudflare (requires wrangler authentication)
npx wrangler deploy# Build and preview locally (excludes video files)
npm run previewVideos are stored in public/video/ for local development but are excluded from the Worker deployment due to the 25MB size limit. In production, they're served from R2.
The R2 bucket (justevery-assets) is configured with:
- Public access at
https://assets.justevery.com - CORS enabled for
justevery.comdomains - Automatic upload of changed assets via GitHub Actions
The deployment workflow (.github/workflows/deploy-production.yml) handles:
- Asset Upload: Detects and uploads changed assets to R2
- Build Optimization: Caches dependencies and build artifacts
- Smart Building: Only rebuilds when source files change
- Deployment: Deploys to Cloudflare Workers
- Verification: Ensures build artifacts exist before deployment
CLOUDFLARE_API_TOKEN: Your Cloudflare API token with Workers and R2 permissionsCLOUDFLARE_ACCOUNT_ID: Your Cloudflare account ID
- Brand Cyan:
#00e0ff - Brand Pink:
#ff00ff - Brand Amber:
#ffa500 - Dark backgrounds:
#0a0a0b,#1a1a1b
- Display Font: Space Grotesk (for headings)
- Body Font: System font stack
- Responsive header with mobile menu
- Footer with newsletter signup
- Hero section with video background
- Feature sections with animations
- Call-to-action buttons with gradients
- Add new video files to
public/video/ - Update
VideoPlayercomponent if needed - Push to main branch - GitHub Actions will upload to R2
- Create a new directory in
src/app/[page-name]/ - Add
page.tsxfile - Update navigation in
Header.tsx
- Global styles:
src/app/globals.css - Component styles: Use Tailwind classes
- Theme customization:
tailwind.config.js
- Ensure
.env.localhas R2 variables commented out - Check that video files exist in
public/video/
- Check GitHub Actions logs
- Verify GitHub secrets are set correctly
- Ensure no files exceed 25MB in the Worker bundle
- R2 CORS is configured for production domains
- For local testing with R2, you may need to adjust CORS settings
- CLAUDE.md - AI assistant instructions
- CLOUDFLARE_DEPLOYMENT.md - Detailed deployment guide
- Next.js Documentation
- Cloudflare Workers Documentation
This is the official JustEvery homepage. For contributions:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
© 2024 JustEvery. All rights reserved.