Highland dancing event tracker
Skip the pen and paper—attend highland dance competitions in style with this app for your mobile device.
Modernize your highland dancing experience by interacting with program-of-events information digitally:
- Search through dancers by their competition number, name, age group, etc. Then mark your favourites for easy tracking.
- Track your 'favourite' dancers to make it easy to follow you/your children/friends.
- Use the at-a-glance schedule to check event start times, which platforms to dance at, order of dances, and more.
- Get real-time results updates—from callbacks through to placings—and review them anytime after a competition, too.
Command | Description |
---|---|
npm i |
install dependencies |
npm run dev |
serve app with emulated data and hot reloading at https://localhost:3000 |
npm run dev:cy |
shortcut for running dev + cy -- open |
npm test |
build app and run cypress tests locally (equivalently to how they will be run in CI) |
npm run lint / npm run lint:fix |
show code formatting tips (and fix them) |
npm run build |
build for release to production (including apps) |
npm run report |
open bundle size visualizer (stats.html ) |
npm run release |
create version commit and tag in git |
npm run deploy |
push local build to production and main git branch |
Links to the admin panels needed to manage this project:
- Database, Users/Auth, Hosting, SSL: Firebase
- iOS app: App Store Connect
- Android app: Google Play Console
- DNS: Cloudflare
- Domain: Namecheap
- Email hosting (alias): GSuite
- Email sending/templates: Postmark
- Live chat: Crisp
- Full-text search: Typesense (via Render.com)
- Native app: Capacitor, with image asset generation via the VSCode extension
- Release notes: Changelog
- While waiting between/for any of the following steps, write release notes in
CHANGELOG.md
- Adjust/increment the version in
package.json
(this will be propagated by thesync-version
script that gets called pre-build
) - Build and Deploy to app stores:
- Perform steps 1-5 of the Apple App Store instructions
- Perform steps 2-8 of the Google Play Store instructions
- Once iOS build package is processed, perform step 6 of the App Store instructions
- Finalize the release via
npm run release
, which consists of:- Commit version change and release notes using the release version as the commit message (e.g.
1.0.0
) - Tag the commit using the release version prepended with
v
(e.g.v1.0.0
)
- Commit version change and release notes using the release version as the commit message (e.g.
- Deploy to web via
npm run deploy
, which consists of:- Deploy to web via
firebase deploy
- Push to
main
- Deploy to web via
- Open the ScotDance admin panel's versions page and update the appropriate version numbers as apps are released/approved
-
Use Automatic Signing in Xcode, after setting up all certificates and provisioning profiles
-
To upload to App Store:
npm run build
- Open project in Xcode (
npx cap open ios
)- Once open, consider running the app in a simulator to ensure everything is working well
- In the menu bar, select "Product" > "Archive" (if you can't select it, make sure you are targeting "Any iOS Device")
- Click "Distribute App"
- Follow the wizard ("Test Flight & App Store", etc.)
- In App Store Connect, create a New iOS Version, then complete/fill out all remaining steps/info in form
- the new build should be processed and ready to be selected shortly (~15 mins)
-
To build a signed
.aab
, you'll need thescotdance.keystore
file (stored in a private Dropbox). -
To upload to Google Play:
npm run build
- Open project in Android Studio (
npx cap open android
)- Once open, consider running the app in a simulator to ensure everything is working well
- In the menu bar, select "Build" > "Generate Signed Bundle / APK…"
- Follow the wizard (AAB, "release", etc.)
- Open Google Play Console
- Create a new Production Release
- Select/Drag in
android/app/release/app-release.aab
- Complete all remaining steps/info in form