Welcome to the official Board Games Companion Github repository - an open source iOS and Android application dedicated to board games enthusiasts.
For more information about the application and its features please visit our Wiki pages.
If you have an idea about how the app could be improved, you ran into a problem or maybe you want to check what's currently in the works then join the Discord server to chat with the development team and other BGC users.
The iOS and Android mobile applications are written in Dart language, using a cross-platform framework Flutter. In order to contribute to the project one needs to have working Flutter environemnt on their machines.
In order to contribute to the project, please follow the below steps:
git clone https://github.com/Progrunning/BoardGamesCompanion.git
main
branch
git checkout main
git pull
main
git checkout -b feature/<short_feature_description>
git push --set-upstream origin feature/<short_feature_description>
The feature branches should have the following naming convention feature/<short_feature_description>
. See below section for more information.
This repository follows the trunk based development, where developers merge frequently to the main
branch from their feature/*
branches.
In case of a need for a hotfix, the branch with a fix should be branched off of the latest release's tag. The branch itself should have the following naming convention hotfix\<short_fix_description>
. After the hotfix gets released the hotfix/*
branch gets merged into the main
.
Every merged PR into the main
branch triggers the CD pipeline, which pushes out app packages to TestFlight and Google Play Store Beta respectivly for iOS and Android. All of these releases are considered release canidates but not all might get released to the production.
NOTE: Release should happen simultaneously on both platforms.
Steps to follow before releasing apps to stores (i.e. production):
The release to the iOS and Android stores should be followed by:
Package managing on iOS is uber complex and sometimes might not make much sense. Please see this intro YT video on CocoaPods.
To put it "simply" there are a few steps and dependencies when working with CocoaPods:
[Optional] Run brew update
to update Homebrew, if you already have it.
REQUIRED: To install RubyGems and other stuff
sudo gem update --system
Whenever there's a need to update Ruby it is recommended to use rbenv
or rvm
, both of which are a version manager tool for Ruby.
You can check Ruby's version by executing command ruby -v
.
rvm: The tool can be installed by executing in terminal the following curl -L https://get.rvm.io | bash -s stable
. After that updating Ruby is done by executing rvm install ruby-<version_number>
.
rbenv: Install using Homebrew brew install rbenv ruby-build
. Update ruby by executing rbenv install <version_number>
!IMPORTANT!: Manager commands executed on M1 chips macs need to be prefixed with
arch arm64 ...
.
sudo gem install cocoapods
NOTE: The same can be used to update cocoapods
To install all of the dependencies/packages execute pod install
command.
s
Whenever flutter version gets updated there might be a problem with plugin dependencies. This might require updating pods
. In order to update pods you need to:
cd /path/to/the/project/board_games_companion/ios
)pod install
command (arch -arm64 pod install
on macs with M1 chip)Additionally there will be a need to update the PATH
of the Z shell. This can be done by doing the following:
~/.zhrc
file exists (touch ~/.zshrc
)vim ~/.zshrc
code ~/.zshrc
PATH
with the path to the update Flutter SDKNOTE: More info in this SO thread and in the official docs
You may run into issues with updating pods on M1 processor devices. Here's some articles that might help with that:
Installing or updating pods on M1 chip (i.e. arm64
) is done with the following commands arch -arm64 pod install
and arch -arm64 pod update
Generally speaking try using homebrew to manage cocoapods. The command brew install cocoapods
will not work on the M1 processor devives therefore you should run arch -arm64 brew install cocoapods
.
NOTE: In case an FFI requires updating try executing this command
sudo arch -arm64 gem install ffi
CI and CD pipelines are defined in the Microsft Azure DevOps environment.
Continuous Integration pipeline is triggered everytime a PR is created that targets release
branch. This assures that code that is prepared for a release is veriefied and working.
Continuous Deployment pipeline is associated with the release
pipeline. After a successful merge of changes into this branch a version of a new app will be created.
New app version will be pushed into the TestFlight.
New app version will be pushed into the Google Play Store.
Use the following command to auto-generate files flutter packages pub run build_runner build -v --delete-conflicting-outputs
. The below libraries rely on the auto generated files
NOTE: Adding
--delete-conflicting-outputs
parameter fixes problems with conflicting files.
The Google Play Store and Apple Store listing images were created with the use of a free mockup tool https://studio.app-mockup.com/.
The mockups are located in the assets/mockups/
directory in the repository. The file *.mockup
contains all the screenshots and different devices mockups.
Follow the below steps to update the mockups:
Load
button in the top left corner*.mockup
file from the repository - ensure that you have latest code. Save
button in the top left corner*.mockup
file should saved in place of the existing one in the repo