Welcome to the Chess Room! This repository contains the source code for the Chess Room - Chess Puzzles & Games app, available on the App Store. The app is developed using Flutter.
- Interactive Chess Puzzles: Solve engaging chess puzzles of varying difficulty.
- Play Chess Games: Compete against AI opponents or other players.
- Learn Chess Tactics: Improve your skills with curated lessons and tutorials.
- Customizable Chess Boards: Personalize the look and feel of your chessboard and pieces.
- Performance Analysis: Track your progress and identify areas for improvement.
To run the project locally, follow these steps:
- Clone the repository:
git clone https://github.com/Apps-Bay-Limited/chess-room.git
- Navigate to the project directory:
cd chess-room - Install dependencies:
flutter pub get
- Run the app on an emulator or a connected device:
flutter run
- Flutter: Version 3.0.0 or later
- Dart: Version 2.17.0 or later
- Install Flutter by following the official documentation.
- Set up an emulator or connect a physical device.
Release builds must be produced with tool/release_build.sh. The script validates signing and AdMob configuration, rejects Google test IDs, and injects the Dart ad-unit values with --dart-define-from-file. Do not use a bare flutter build for store artifacts.
Required ignored files:
lib/config/ads_release.json: copylib/config/ads_release.json.exampleand supply production values forBANNER_ID_ANDROID,OPEN_AD_ID_ANDROID,REWARD_AD_ID_ANDROID,REWARD_INTERSTITIAL_AD_ID_ANDROID,BANNER_ID_IOS,OPEN_AD_ID_IOS,REWARD_AD_ID_IOS, andREWARD_INTERSTITIAL_AD_ID_IOS.android/local.properties: set the productionAdMobAppIdin addition to the Flutter SDK path.ios/Secret.xcconfig: set the productionGADApplicationIdentifier;ios/Flutter/Release.xcconfigincludes this file.android/key.propertiesand its referenced production keystore. Restore the keystore from/Users/banghuazhao/Development/secret/keystore/if the configured file is missing.
Before releasing ads, publish a European regulations message for both app IDs in AdMob Privacy & messaging. The app uses Google's UMP flow and waits for consent before initializing ads. Keep the public privacy policy aligned with the data disclosed by the Google Mobile Ads SDK.
Build one platform or both:
./tool/release_build.sh android
./tool/release_build.sh ios
./tool/release_build.sh allFor the mandatory profile launch smoke test, use the same configuration file:
flutter run --profile --dart-define-from-file=lib/config/ads_release.json -d DEVICE_IDDo not run another Flutter command between the iOS release script and any follow-up Xcode archive/export action; doing so can regenerate Generated.xcconfig without the injected defines.
lib/
├── models/ # Data models
├── views/ # App screens (UI)
├── logic/ # Business logic
├── utils/ # Utility functions and
pubspec.yaml # Project dependencies
Contributions are welcome! Please follow these steps to contribute:
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature-name
- Make your changes and commit them:
git commit -m "Add your feature description" - Push your branch:
git push origin feature/your-feature-name
- Open a pull request and describe your changes.
This project is licensed under the MIT License. See the LICENSE file for details.
Happy coding! 👑♟️