A web application for Tempe Bicycle Action Group's Open Streets Tempe.
- Remix - Full stack web framework
- React - UI library
- Tailwind CSS - Styling
- TypeScript - Type safety
- Firebase Hosting - Deployment
- Node.js >= 24.0.0
- npm
- Clone the repository
- Install dependencies:
npm installRun the development server with:
npm run devThis will start:
- Remix development server
- SVG icon watch process for automatic icon component generation
npm run icons- Generate SVG icon componentsnpm run lint- Run ESLintnpm run typecheck- Run TypeScript type checkingnpm run optimize-images- Optimize image assets
The project includes a comprehensive image optimization system that generates responsive images for different viewport sizes.
- Place original images in
public/images/originals/ - Run the optimization script:
npm run optimize-images- Optimized images will be placed in
public/images/
The script will:
- Generate multiple sizes (640w, 768w, 1024w, 1920w, 2560w) for photos
- Convert images to WebP format while maintaining JPG fallbacks
- Use higher quality settings for mobile (640w) versions
- Automatically handle PNGs differently (single size, optimized for logos)
The ResponsiveImage component automatically handles responsive image loading using the multiple sizes generated by the script:
<ResponsiveImage basePath="/images/my-image" alt="Description" />For critical above-the-fold images, you can:
- Set
priorityon the component - Use the
generatePreloadLinksutility to add preload tags in your route
- Build the application:
npm run build- Start the production server:
npm startThe application is automatically deployed on pushes to the main branch through GitHub Actions:
- Builds and pushes a Docker image to Google Container Registry
- Deploys to Google Cloud Run
- Deploys static assets and redirects to Firebase Hosting
The site is accessible at: openstreetstempe.org
- Ensure your code passes all checks:
- TypeScript compilation (
npm run typecheck) - Linting (
npm run lint)
- TypeScript compilation (
- Submit a pull request