A modern, customizable template for academic workshop websites. Built with React Router 7, TypeScript, and Tailwind CSS.
- π¨ Modern, responsive design with dark/light mode support
- π± Mobile-friendly navigation
- π― Pre-built sections: Home, Program, Call for Papers, Schedule, Organizers, Awards, Contact
- π Animated background with WebGL Orb effect
- π JSON-based content management (no database required)
- π Fast development with Vite and HMR
- π³ Docker support for easy deployment
- β‘ SEO-optimized with structured data, meta tags, and sitemaps (see SEO_GUIDE.md)
- Node.js 22 LTS+ or use mise (configured via
.mise.toml) - Yarn package manager
- Clone or copy this template:
cp -r workshop-template your-workshop-name
cd your-workshop-name- Install dependencies:
yarn install- Start development server:
yarn devVisit http://localhost:5173 to see your workshop website.
Edit the JSON files in src/data/. The template uses 3 main files:
home- Workshop title, tagline, overview, dates, newsschedule- Workshop schedule and timelinecallForPapers- Submission guidelines, important dates, topicscontact- Contact information and FAQ
organizers- Organizing team membersprogram- Invited speakers, accepted papers, panel discussions
awards- Award categories and winnerssupporters- Sponsors and supporterspastEvents- Previous workshop editions and resources
Place your images in the public/ directory:
/public/organizers/- Organizer photos (recommended: 302x302px)/public/program/- Speaker photos (recommended: 512x512px)/public/supporters/- Sponsor logos (recommended: 512x512px)/public/- Cover images, logos, OGP images
Default images included:
bigmac-cover.jpg- Hero section backgroundbigmac-ogp.jpg- Social media preview imagefavicon.ico- Browser tab icon
Edit package.json:
{
"name": "your-workshop-name",
"description": "Your workshop description"
}Update SEO metadata in src/lib/seo.ts.
The template uses Tailwind CSS. Main style files:
src/app/app.css- Global styles and Tailwind importssrc/components/ui/- Reusable UI components
Main page component: src/app/routes/Home.tsx
You can:
- Comment out sections you don't need
- Reorder sections
- Add custom sections
Example - Remove Awards section:
{/* <Awards /> */}workshop-template/
βββ src/
β βββ app/
β β βββ routes/ # Page components
β β βββ layout.tsx # Site layout
β β βββ root.tsx # App root
β βββ components/ # Reusable components
β β βββ ui/ # UI component library
β β βββ header.tsx # Navigation header
β β βββ footer.tsx # Page footer
β β βββ Orb.tsx # WebGL background effect
β βββ data/ # Content JSON files
β βββ lib/ # Utility functions
βββ public/ # Static assets
βββ environments/ # Docker configs
βββ package.json
yarn dev- Start development serveryarn build- Build for productionyarn start- Start production serveryarn lint- Run linters (ESLint + Prettier)yarn format- Auto-format code
Build and run with Docker Compose:
# Development
cd environments/dev
docker-compose up
# Production
cd environments/ci
docker-compose upBuild the site:
yarn buildDeploy the build/ directory to any static hosting service (Netlify, Vercel, GitHub Pages, etc.).
Copy environments/envs.env.sample to environments/envs.env and configure:
NODE_ENV=production
PORT=3000Pre-configured workflows in .github/workflows/:
ci.yaml- Run tests and linting on pull requestsdeploy.yaml- Deploy to production
Update the deployment workflow with your hosting service credentials.
- Framework: React Router 7
- Language: TypeScript
- Styling: Tailwind CSS v4
- UI Components: Radix UI primitives
- Icons: Lucide React, React Icons
- 3D Graphics: OGL (WebGL library)
- Build Tool: Vite
- Linting: ESLint + Prettier
- TEMPLATE_GUIDE.md: Step-by-step customization guide with checklists
- SEO_GUIDE.md: Complete SEO optimization guide (essential for workshop discoverability)
- DATA_STRUCTURE.md: JSON data structure reference
- Fast development: Edit JSON files in
src/data/for quick content updates - Image optimization: Compress images before adding to
public/ - Accessibility: All UI components are built with Radix UI for a11y
- Performance: The template uses lazy loading and code splitting
- SEO: See SEO_GUIDE.md for comprehensive optimization instructions
This template is based on the BigMAC Workshop website. Feel free to use it for your academic workshops.
For issues or questions about this template:
- Check existing workshop implementations for examples
- Review component documentation in
src/components/ui/ - Consult React Router 7 documentation: https://reactrouter.com/
Created for academic workshop organizers. Happy coding!