Skip to content

gdgdavao/chromatic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽจ Chromatic - Ice Googleyness Breaker

Chromatic Logo

An interactive two-player ice-breaking game

License: MIT React TypeScript Vite Tailwind CSS

๐ŸŽฎ Play Now

๐ŸŒŸ About

Chromatic is an engaging two-player ice-breaking game designed to help developers connect and have fun at GDG Davao events. The game combines strategy, luck, and quick thinking in a colorful, interactive experience.

๐ŸŽฏ How It Works

  1. Rock Paper Scissors - Two players battle for control
  2. Spin the Wheel - Winner spins the colorful wheel to determine question category
  3. Answer Fast - 90 seconds to answer a color-coded question
  4. Connect & Share - Break the ice and build community

๐ŸŽจ Features

  • Interactive Gameplay: Rock Paper Scissors with animated hand gestures
  • Colorful Wheel: GSAP-powered spinning wheel with Google's brand colors
  • Dynamic Questions: Google-themed questions across 4 color categories
  • Smooth Animations: Fluid transitions and engaging visual effects
  • Responsive Design: Works perfectly on desktop and mobile devices
  • Accessibility: Built with accessibility in mind

๐Ÿš€ Quick Start

Prerequisites

  • Node.js 18+ or Bun 1.0+

Installation

# Clone the repository
git clone https://github.com/gdgdavao/chromatic.git
cd chromatic

# Install dependencies (using Bun - recommended)
bun install

# Or using npm
npm install

# Or using yarn
yarn install

Development

# Start development server
bun dev

# Or using npm
npm run dev

# Or using yarn
yarn dev

Open http://localhost:5173 to view it in the browser.

Building for Production

# Build for production
bun run build

# Or using npm
npm run build

# Or using yarn
yarn build

The build artifacts will be stored in the dist/ directory.

๐Ÿ› ๏ธ Tech Stack

  • Frontend Framework: React 19.1.1 with TypeScript
  • Build Tool: Vite 7.1.2
  • Styling: Tailwind CSS 4.1.13
  • Animations: GSAP 3.13.0 with React integration
  • Package Manager: Bun (recommended) / npm / yarn
  • Deployment: Static hosting (Vercel, Netlify, etc.)

๐Ÿ“ Project Structure

chromatic/
โ”œโ”€โ”€ public/
โ”‚   โ”œโ”€โ”€ favicon.svg          # App icon
โ”‚   โ””โ”€โ”€ icon.svg            # Social media image
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ ChromaticGame.tsx    # Main game component
โ”‚   โ”‚   โ””โ”€โ”€ Onboarding.tsx       # Welcome/tutorial screens
โ”‚   โ”œโ”€โ”€ assets/
โ”‚   โ”‚   โ””โ”€โ”€ icon.svg            # Game icon
โ”‚   โ”œโ”€โ”€ App.tsx                 # Root component
โ”‚   โ”œโ”€โ”€ main.tsx               # Entry point
โ”‚   โ””โ”€โ”€ index.css              # Global styles
โ”œโ”€โ”€ index.html                # HTML template with social meta tags
โ”œโ”€โ”€ package.json              # Dependencies and scripts
โ”œโ”€โ”€ vite.config.ts           # Vite configuration
โ”œโ”€โ”€ tsconfig.json            # TypeScript configuration
โ””โ”€โ”€ README.md               # This file

๐ŸŽฎ Game Components

ChromaticGame

The main game component featuring:

  • Rock Paper Scissors logic with automated gameplay
  • GSAP-powered spinning wheel with precise landing mechanics
  • Question system with Google-themed content
  • Timer and scoring system
  • Smooth animations and visual effects

Onboarding

Interactive tutorial screens including:

  • Welcome screen with animated logo
  • Step-by-step game explanation
  • Smooth transitions between screens
  • Accessibility considerations

๐ŸŽจ Design System

Colors

The game uses Google's brand colors:

  • Red: #ea4335 - Google Red
  • Green: #34a853 - Google Green
  • Blue: #4285f4 - Google Blue
  • Yellow: #fbbc05 - Google Yellow

Typography

  • Primary Font: Roboto (Google Fonts)
  • Weights: 400 (Regular), 500 (Medium), 700 (Bold)

Animations

  • GSAP: For complex animations and transitions
  • CSS Transitions: For hover states and micro-interactions
  • Reduced Motion: Respects user preferences

๐Ÿค Contributing

We welcome contributions from the community! Here's how you can help:

๐Ÿ› Bug Reports

  • Use the GitHub Issues page
  • Include steps to reproduce, expected vs actual behavior
  • Provide browser/device information

๐Ÿ’ก Feature Requests

  • Open an issue with the "enhancement" label
  • Describe the feature and its benefits
  • Consider implementation complexity

๐Ÿ”ง Code Contributions

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Make your changes
    • Follow the existing code style
    • Add TypeScript types where needed
    • Test your changes thoroughly
  4. Commit your changes
    git commit -m 'Add amazing feature'
  5. Push to your branch
    git push origin feature/amazing-feature
  6. Open a Pull Request

๐Ÿ“ Development Guidelines

  • Code Style: Follow existing patterns and use Prettier
  • TypeScript: Add proper types for all new code
  • Testing: Test on multiple devices and browsers
  • Accessibility: Ensure keyboard navigation and screen reader support
  • Performance: Keep animations smooth and optimize for mobile

๐ŸŽฏ Areas for Contribution

  • New Question Categories: Add more Google-themed questions
  • Game Modes: Implement different gameplay variations
  • Accessibility: Improve screen reader support
  • Internationalization: Add multi-language support
  • Performance: Optimize animations and bundle size
  • Documentation: Improve code comments and guides

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with โค๏ธ by GDG Davao