🎯 A stunning, professional-grade chess clock for Android with Material Design 3
📱 Download APK • 📖 Features • 🚀 Getting Started • 📸 Screenshots
| Feature | Description |
|---|---|
| 🎯 Dual Timers | Separate countdown timers for White & Black players |
| 🔄 Smart Switching | Tap your side to stop your timer and start opponent's |
| ⏱️ Time Controls | 1, 3, 5, 10, 15, 30, 45, 60, 90 min presets + custom (1-1440 min) |
| 📊 Precision | 100ms accuracy with MM:SS display |
| Design Element | Implementation |
|---|---|
| 🌙 Nordic Theme | Elegant dark theme with carefully curated colors |
| 📱 Full Screen | Immersive, distraction-free chess experience |
| ✨ Animations | Smooth card transitions and visual feedback |
| 🎭 Material 3 | Modern UI with cards, elevation, and micro-interactions |
| Audio Feature | Experience |
|---|---|
| 🔊 Smart Sounds | Different tones for warnings, critical time, game end |
| 📳 Haptic Feedback | Vibration for turn switches and important events |
| ⚙️ Customizable | Toggle sounds, vibrations, and low-time warnings |
- 🎛️ Time Management: Preset selection + custom time picker
- 🔊 Audio Controls: Individual toggles for all sound types
- 🎨 Theme Options: Dark/Light theme support
- 🔋 Power Management: Smart wake lock for uninterrupted play
- Android Studio Arctic Fox or later
- Android SDK API 24+ (Android 7.0)
- Kotlin 1.9.10+
-
Clone the repository
git clone https://github.com/kreggscode/chess-clock.git cd chess-clock -
Open in Android Studio
- Launch Android Studio
- Select "Open an existing Android Studio project"
- Navigate to the cloned directory
-
Build & Run
- Wait for Gradle sync to complete
- Connect an Android device or start an emulator
- Click the "Run" button (green play icon)
| Step | Action | Description |
|---|---|---|
| 1️⃣ | Set Time | Choose preset (5min, 10min, etc.) or custom time |
| 2️⃣ | Start Game | Tap "Start Game" or tap either player area |
| 3️⃣ | Play Chess | Complete your move → tap your timer to switch turns |
| 4️⃣ | Game Over | Winner announced when time expires |
- ⏸️ Pause/Resume: Use the pause button for breaks
- 🔄 Reset: Confirmation dialog prevents accidental resets
- ⚙️ Settings: Access via gear icon in top-left corner
- 🎵 Audio: Customize all sound and vibration preferences
📁 Project Structure
chess-clock/
├── 📱 app/src/main/
│ ├── 📋 AndroidManifest.xml # Permissions & app config
│ ├── 🏗️ java/com/kreggscode/chessclock/
│ │ ├── 🎮 MainActivity.kt # Core game logic & UI
│ │ ├── ⚙️ SettingsActivity.kt # Settings management
│ │ └── 🔊 SoundManager.kt # Audio system
│ └── 🎨 res/ # Resources
│ ├── 📱 layout/ # XML layouts
│ ├── 🎨 values/ # Colors, strings, themes
│ └── 📸 drawable/ # Icons & graphics
├── 📋 build.gradle # App dependencies
├── ⚙️ settings.gradle # Project settings
└── 🚫 .gitignore # Git ignore rules| Component | Technology | Purpose |
|---|---|---|
| Language | Kotlin 1.9.10+ | Modern Android development |
| Architecture | MVVM Pattern | Clean code structure |
| UI Framework | Material Design 3 | Beautiful, consistent UI |
| Audio System | SoundPool + ToneGenerator | Reliable cross-device audio |
| Persistence | SharedPreferences | Settings storage |
| Threading | CountDownTimer | Precise timing |
| Build System | Gradle 8.2+ | Dependency management |
| Permission | Purpose | Android Version |
|---|---|---|
WAKE_LOCK |
Keep screen on during games | All versions |
VIBRATE |
Haptic feedback | Auto-granted 6.0+ |
Coming soon - Add beautiful screenshots of your app here
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Material Design 3 for the beautiful design system
- Nordic Color Palette inspiration
- Android Developer Community for best practices
- Chess Community for the inspiration
Made with ❤️ for chess players worldwide
⭐ Star this repo if you find it useful! ⭐