This is the official website for Pinewood Robotics, FRC team 4765. Built with modern web technologies including Astro and React, featuring smooth animations, 3D graphics, and a responsive design.
- Modern Tech Stack: Built with Astro 7 and React 19
- Smooth Animations: Lenis smooth scrolling and custom text animations
- 3D Graphics: Three.js integration with React Three Fiber
- Responsive Design: Mobile-first approach with Tailwind CSS
- Performance Optimized: Static site generation with image optimization
- Analytics: PostHog integration for user analytics
- Authentication: Clerk integration for user management
- Cloud Storage: AWS S3 integration for media assets
- Background video: AV1/HEVC/H.264 MP4s served as static assets, no player library
- Deployment Ready: Cloudflare Workers deployment configuration
- Astro - Static site generator with islands architecture
- React - UI component library
- TypeScript - Type-safe JavaScript
- Tailwind CSS - Utility-first CSS framework
- Tailwind Animate - Animation utilities
- Lucide React - Icon library
- Class Variance Authority - Component variant management
- Three.js - 3D graphics library
- React Three Fiber - React renderer for Three.js
- Lenis - Smooth scrolling library
- Clerk - Authentication and user management
- PostHog - Product analytics
- AWS SDK - S3 storage integration
- Upstash Redis - Serverless Redis database
pwrup-site/
βββ public/ # Static assets
β βββ PWRUP_text.svg # Logo and branding
β βββ Reefscape-Robot.webp # Robot images
β βββ ...
βββ src/
β βββ components/ # React components
β β βββ ui/ # Reusable UI components
β β βββ Welcome.tsx # Main landing page component
β β βββ NavBar.tsx # Navigation component
β β βββ AboutRobotics.tsx # About section
β β βββ Positions.tsx # Team positions
β β βββ Clips.tsx # Video clips section
β β βββ PEARL.tsx # PEARL robot showcase
β βββ hooks/ # Custom React hooks
β β βββ useLenis.ts # Smooth scrolling hook
β βββ layouts/ # Astro layouts
β β βββ Layout.astro # Main page layout
β βββ lib/ # Utility libraries
β β βββ auth.ts # Authentication utilities
β β βββ kv.ts # Key-value store utilities
β β βββ utils.ts # General utilities
β βββ pages/ # Astro pages
β β βββ index.astro # Home page
β β βββ sign-up.astro # Registration page
β βββ styles/ # Global styles
β βββ global.css # Global CSS
βββ astro.config.mjs # Astro configuration
βββ tailwind.config.js # Tailwind CSS configuration
βββ wrangler.toml # Cloudflare Workers configuration
βββ deploy.sh # Deployment script
βββ package.json # Dependencies and scripts
- Node.js (v22.12 or higher; Astro 7 requires
>=22.12.0) - pnpm 9.12.3 or later (pinned via
packageManager)
-
Clone the repository
git clone https://github.com/adamexu/pwrup-site.git cd pwrup-site -
Install dependencies
pnpm install
-
Start the development server
pnpm dev
-
Open your browser Navigate to
http://localhost:4321to see the site in action.
pnpm dev- Start development serverpnpm build- Build for productionpnpm preview- Preview production build locallypnpm deploy- Deploy to Cloudflare Workers
The main landing page featuring:
- Animated typewriter effect
- Smooth reveal animations
- Background video integration
- Call-to-action buttons
Responsive navigation with:
- Auto-hide on scroll down
- Smooth backdrop blur effect
- Logo and registration link
Information section highlighting:
- Team benefits and opportunities
- Robot showcase with custom arrow graphics
- Responsive layout for mobile and desktop
Team roles and opportunities with:
- Interactive position cards
- Detailed descriptions
- Application links
Create a .env file in the root directory:
# Clerk Authentication
PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_key
CLERK_SECRET_KEY=your_clerk_secret
# PostHog Analytics
PUBLIC_POSTHOG_KEY=your_posthog_key
# AWS S3 (if using)
AWS_ACCESS_KEY_ID=your_aws_key
AWS_SECRET_ACCESS_KEY=your_aws_secret
AWS_REGION=your_aws_region
# Upstash Redis (if using)
UPSTASH_REDIS_REST_URL=your_redis_url
UPSTASH_REDIS_REST_TOKEN=your_redis_tokenThe site uses custom fonts defined in tailwind.config.js:
- Jost - Primary font family
- Red Hat Display - Secondary font family
Brand colors and theming can be customized in:
tailwind.config.js- Tailwind theme configurationsrc/styles/global.css- Global CSS variables
Text reveal animations can be customized in src/components/Welcome.tsx:
const REVEAL_CONFIG = {
textAlign: "right" as "left" | "center" | "right",
text: "Pinewood Robotics",
};-
Install Wrangler CLI
npm install -g wrangler
-
Login to Cloudflare
wrangler login
-
Deploy
pnpm deploy
The site is configured for static deployment. Cloudflare Workers Builds must use Node.js 22.12 or later (.nvmrc and package.json engines.node). Cache headers for hashed assets live in public/_headers. Production custom domains (pinewoodrobotics.org) are under [env.production] in wrangler.toml.
- Vercel: Connect your GitHub repository to Vercel for automatic deployments
- Netlify: Deploy directly from GitHub with build command
pnpm build - GitHub Pages: Use GitHub Actions for automated deployment
The project includes Playwright configuration for end-to-end testing:
# Install Playwright
npx playwright install
# Run tests
npx playwright testTest compression and optimization:
node test-compression.js https://your-site.workers.devThe site is fully responsive with:
- Mobile-first design approach
- Touch-friendly navigation
- Optimized images and assets
- Smooth scrolling on mobile devices
- Meta tags and Open Graph integration
- Structured data markup
- Sitemap generation
- Image optimization with alt text
- PostHog integration for user behavior tracking
- Custom event tracking for interactions
- Performance monitoring
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'Add some amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Pinewood Robotics (FRC Team 4765) is a competitive robotics team from Pinewood School. We participate in the FIRST Robotics Competition (FRC), building robots to compete in annual challenges while fostering STEM education and teamwork.
- Established: FRC Team 4765
- School: Pinewood School
- Competition: FIRST Robotics Competition
- Focus: Engineering, programming, design, and outreach
- Website: pinewood.one
- Registration: Sign up for interest
- School: Pinewood School
Built with β€οΈ by the Pinewood Robotics team