GRAD (Grades, Reports, Attendance Dashboard) is a lightweight cross-platform mobile app that helps students track their internal marks and attendance with simplicity and clarity.
This project is built with Expo and was bootstrapped using create-expo-app.
Install dependencies with npm ci. The project checks linting, TypeScript, and unit tests with:
npm run lint
npm run typecheck
npm testPull requests and pushes to main run these checks automatically. Releases are created when a version tag is pushed. The release workflow derives expo.version from the tag in the GitHub Actions runner, so app.json does not need a separate version-bump commit:
git tag v2.5.4
git push origin v2.5.4The release workflow runs the quality checks, builds a signed Android APK on GitHub Actions, and publishes it as the GitHub release asset. Tags named test-vX.Y.Z run the same build but only upload the APK as a workflow artifact; they never create or update a GitHub release. Before the first release, configure these repository Actions secrets:
ANDROID_KEYSTORE_BASE64: Base64-encoded Android release keystore.ANDROID_KEYSTORE_PASSWORD: Keystore password.ANDROID_KEY_ALIAS: Alias of the signing key.ANDROID_KEY_PASSWORD: Signing key password.
Create a release keystore once with Android's keytool, keep the original file private, and save its Base64 encoding as ANDROID_KEYSTORE_BASE64 (for example, base64 < release.keystore | tr -d '\n' on Linux). The workflow writes it only to the ephemeral GitHub runner.
- Course Management
- Attendance Tracking
- Scheduled Notifications
- Analytics Tab
- Extra Classes
- Dark Theme
![]() |
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
This project is licensed under the MIT License.








