A sleek, modern React application for tracking scores in the classic 500 card game. Built with TypeScript, featuring persistent game state, comprehensive rule references, and a beautiful responsive design.
๐ Live Demo | ๐ Documentation | ๐ค Contributing
|
|
|
|
- Node.js 16.0+
- pnpm (recommended) or npm
# Clone the repository
git clone https://github.com/davestanyer/500score.git
cd 500score
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Open http://localhost:5173# Create optimized production build
pnpm build
# Preview production build locally
pnpm preview๐ด Basic Scoring
| Suit | No-Trump | ||||
|---|---|---|---|---|---|
| 6 | 40 | 60 | 80 | 100 | 120 |
| 7 | 140 | 160 | 180 | 200 | 220 |
| 8 | 240 | 260 | 280 | 300 | 320 |
| 9 | 340 | 360 | 380 | 400 | 420 |
| 10 | 440 | 460 | 480 | 500 | 520 |
Special Bids:
- Misรจre: 250 points (higher than 7, lower than 8)
- Open Misรจre: 500 points
๐ Joker Rules
Trump Suit Contract:
- Joker belongs to trump suit and becomes highest trump card
- Must be played if necessary to follow suit
No Trump Contract:
- Joker is a suit by itself but wins any trick
- Cannot be played if you can follow suit
- When leading joker, must specify suit for others to follow
๐ข Bidding Rules
Re-entering Bidding:
- Can ALWAYS re-enter when someone changes suit
- Can ALWAYS re-enter when someone increases bid
- Normal bidding rules apply once re-entered
Changing Your Bid:
- With competition: Change suit OR increase bid (once each)
- Solo bidder: Can only increase, not change suit (once only)
- Others get chance to re-enter after changes
- Frontend: React 18 + TypeScript
- Styling: Tailwind CSS with custom design system
- Build Tool: Vite
- State Management: React Hooks + Context API
- Storage: Browser localStorage with schema versioning
- Icons: Lucide React + Custom emoji system
src/
โโโ components/ # React components
โ โโโ BidInput.tsx # Bidding interface
โ โโโ Scoreboard.tsx # Score display
โ โโโ RoundHistory.tsx # Game history
โ โโโ ...
โโโ types/ # TypeScript definitions
โโโ utils/ # Business logic & utilities
โโโ constants/ # Game constants & configuration
โโโ App.tsx # Main application component
- Component Composition: Modular, reusable components
- Custom Hooks: Business logic separation
- Type Safety: Comprehensive TypeScript coverage
- Responsive Design: Mobile-first approach
- Progressive Enhancement: Works without JavaScript for basic features
| Command | Description |
|---|---|
pnpm dev |
Start development server |
pnpm build |
Build for production |
pnpm preview |
Preview production build |
pnpm lint |
Run ESLint |
pnpm typecheck |
Run TypeScript checks |
pnpm format |
Format code with Prettier |
๐ง Code Standards
- TypeScript: Strict mode enabled, no
anytypes - ESLint: Extended React and TypeScript rules
- Prettier: Consistent code formatting
- Naming: camelCase for variables, PascalCase for components
- Commits: Conventional commit format
๐จ UI Guidelines
- Design System: Consistent color palette and spacing
- Responsive: Mobile-first breakpoints
- Accessibility: ARIA labels and keyboard navigation
- Performance: Lazy loading and code splitting
- Dark Mode: Full theme support
- Modern UI redesign with iOS-style aesthetics
- Enhanced suit selection with emoji symbols
- Comprehensive rule documentation
- Dark mode support
- Round editing functionality
- Export/import game data
- Undo/redo system
- Round timer feature
- Mobile-first optimization - Comprehensive responsive design overhaul
- Compact layouts - Optimized spacing and button sizes for mobile devices
- Touch-friendly interface - Improved button sizing and touch targets
- Enhanced error handling and validation
- Performance optimizations (React.memo, useMemo)
- Comprehensive test suite
- Accessibility improvements (ARIA, keyboard nav)
- Multiplayer support with real-time sync
- Advanced game statistics and analytics
- Tournament mode with bracket management
- Progressive Web App (PWA) capabilities
- Cloud save synchronization
- Customizable house rules
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
# Fork and clone your fork
git clone https://github.com/YOUR_USERNAME/500score.git
cd 500score
# Install dependencies
pnpm install
# Create feature branch
git checkout -b feature/your-feature-name
# Start development server
pnpm devThis project is licensed under the MIT License - see the LICENSE file for details.
Dave Stanyer ๐ Project Owner |
Tom Carey ๐ป Core Contributor |
Claude AI ๐ค AI Assistant |
- 500 Card Game Community for rules clarification and feedback
- React Team for the amazing framework
- Tailwind CSS for the utility-first styling approach
- Vite Team for the lightning-fast build tool
- All Contributors who have helped improve this project
If you find this project helpful, please consider giving it a โญ๏ธ on GitHub!
Built with โค๏ธ by the 500Score Team