- Web: .NET 8 Razor Pages, SignalR, Chart.js, FullCalendar
- Mobile: Android (Kotlin), Firebase Auth, Firestore
- Data: Firebase Firestore collections:
projects,tasks,events - Auth: Firebase Authentication (Email/Password, Google)
-
Web (Razor Pages)
- Load Firebase SDK in
_Layout.cshtmland initializefirebase.auth()andfirebase.firestore()globally (sowindow.firebaseAuthandwindow.firebaseDBare available for pages like Dashboard and AddProjects). - Keep keys out of public repos. Use User Secrets for dev and environment variables in prod.
- Load Firebase SDK in
-
Mobile (Android)
- Place
google-services.jsoninapp/. - Repositories:
ProjectRepository(CRUD + real-time stream)TaskRepository(CRUD + real-time stream)AuthRepository(Email/Password + Google sign-in)
- Place
- Web: Restore, Build, (optional Test), Publish artifact
- Android: Assemble Release APK and upload artifact
- Optional: Deploy to Azure Web App, Firebase Hosting, or upload to Play Console
- Web:
dotnet run(Razor Pages, .NET 8) - Android: Open in Android Studio, run on emulator/device
- Firestore collections used in both apps:
projects,tasks,events - Real-time UI updates are driven by Firestore reads and SignalR events on the web
- Protect secrets: do not commit credentials or service JSON files
Documentation - documentation to be edited and updated.
- Task management
- Project management and filtering
- Calendar view
- Cross platform
- Dashboard overview
I used GitHub Copilot and GitHub Actions (actions bot) to assist with repository hygiene tasks, specifically moving CI workflow files into the correct .github/workflows folder and refining YAML syntax. All changes were reviewed and approved by me(Matthew Bothma). These tools were used as productivity aids; design decisions, implementation, and accountability for the code remain mine(Matthew Bothma).
If this work is subject to academic or organizational integrity policies, this disclosure is intended to be transparent about tool usage. Please note that some commit messages may reference automated actions (e.g., Actions bot).