A modern, mobile-first React redesign of the FOSSEE Workshop Booking portal developed by IIT Bombay.
| Before | After |
|---|---|
| Plain white form, no branding, tiny button | Gradient background, FOSSEE branding, full-width inputs, show/hide password |
| Before | After |
|---|---|
| Single long two-column form, breaks on mobile | 3-step form with progress indicator, fully responsive single column |
| Before | After |
|---|---|
| Raw table with popup charts, no empty state | Sidebar filters, inline bar charts, mobile card layout, empty state |
| Before | After |
|---|---|
| No landing page existed | Full hero section, stats bar, workshop cards, CTA banner, footer |
Screenshots are in the
/screenshotsfolder
The target audience is college students, most of whom access the portal on mobile devices.
Every component was designed for small screens first, then enhanced for larger screens using
Tailwind's responsive breakpoints (sm:, md:, lg:).
Clear typographic scale (headings → subheadings → body → captions), consistent spacing, and color contrast guide users through the content naturally without confusion.
- All inputs have associated
<label>elements withhtmlFor - Buttons have descriptive
aria-labelattributes - Interactive elements have visible
focus:ringstyles for keyboard navigation aria-required,aria-live,aria-current,aria-expandedused throughout- Semantic HTML elements:
<nav>,<main>,<section>,<aside>,<article>,<footer>
A unified design system across all pages — same color palette (indigo/blue),
same border radius (rounded-xl, rounded-2xl), same shadow style, same navbar and footer.
- Vite build tool for fast HMR and optimized production builds
- Tailwind CSS purges unused styles — minimal CSS bundle
- No heavy external UI libraries; all components are hand-built
- SVG-free icon approach using text initials to avoid extra network requests
- Tailwind breakpoints:
grid-cols-1 sm:grid-cols-2 lg:grid-cols-3for workshop cards - Flexible layouts: Flexbox with
flex-col sm:flex-rowfor CTA buttons in hero section - Dual rendering: Statistics page shows a full table on desktop (
hidden md:block) and card-based layout on mobile (md:hidden) for optimal readability - Sticky navbar:
sticky top-0 z-50keeps navigation accessible while scrolling - Touch-friendly targets: All buttons and inputs have a minimum height of 44px
| Decision | Design Benefit | Performance Trade-off |
|---|---|---|
| Gradient backgrounds | Modern, premium feel | Minimal — CSS gradients are GPU-accelerated |
| Tailwind CSS | Rapid development, consistent spacing | Slightly larger HTML class attributes |
| Mock data in Statistics | Demonstrates full UI without backend | Not connected to live Django API |
| Inline bar charts | No external chart library needed | Limited chart types vs Chart.js |
| No images/illustrations | Fast load, no network requests | Less visual richness |
Overall, performance was prioritized — Lighthouse score is expected to be 90+ on all metrics.
Redesigning the Statistics page was the most complex part of this task.
The original page had three major UX problems:
- Charts opened as jarring popup overlays
- The data table had no empty state — it just showed nothing
- The entire layout broke on mobile screens
My approach:
- Replaced popup charts with togglable inline bar charts that appear above the table
- Built a dual-render system — table for desktop, cards for mobile — using Tailwind's
responsive
hidden/blockutilities - Added an empty state component with a clear message when filters return no results
- Made filters a sticky sidebar on desktop that collapses to full-width on mobile
| Tool | Purpose |
|---|---|
| React 19 | UI component library |
| Vite 8 | Build tool and dev server |
| Tailwind CSS v4 | Utility-first styling |
| React Router v6 | Client-side routing |
| Route | Page | Description |
|---|---|---|
/ |
Home | Landing page with hero, stats, workshop cards |
/login |
Login | Sign in form with show/hide password |
/register |
Register | 3-step registration form |
/statistics |
Statistics | Filterable workshop table with charts |
- Node.js v20.19+ or v22+
- npm v10+
# Clone this repository
git clone https://github.com/Explorer1905/workshop-booking-ui.git
# Navigate into the project
cd workshop-booking-ui
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:5173 in your browser.
npm run build
npm run previewThis project is a frontend redesign of: https://github.com/FOSSEE/workshop_booking
The original backend is built with Django. This React frontend is designed to replace the existing Django templates while keeping all core functionality intact.
Shravani Chavan Vidyalankar Institute of Technology, Mumbai Submitted for FOSSEE Summer Fellowship 2026 — Python UI/UX Enhancement Task