A personal hobby Android project for exploring modern Android development concepts and expanding my skills during free time.
This project serves as a learning playground to:
- Explore and practice modern Android development patterns and libraries
- Experiment with Firebase integration (Authentication, Firestore, Realtime Database)
- Build a practical app that could be useful for students managing their academic life
- Stay updated with the latest Android SDK and Kotlin features
- Google Sign-In integration using the latest Credential Manager API
- Secure Firebase Authentication
- User profile management with profile picture display
- Create, view, and manage personal todo items
- Data persistence with Firebase Firestore
- Clean list-based UI
- Add and track academic assignments with:
- Title and description
- Unit information
- Total marks and marks obtained
- Assignment Status Dashboard with pie chart visualization (using MPAndroidChart)
- Grid-based primary menu with 7 customizable options:
- Todo
- Assignment
- Web Link (Chrome Custom Tabs)
- Mail (Gmail integration)
- Drive
- Timetable
- Calendar
- Ability to enable/disable menu items per user preference
- Menu configuration synced with Firebase
- User profile display with Google account info
- Manage primary menu visibility
- Logout functionality
| Category | Technology |
|---|---|
| Language | Kotlin |
| Min SDK | 26 (Android 8.0) |
| Target SDK | 36 |
| UI | Android XML Layouts, Material Design |
| Architecture | Activity-based |
| Authentication | Firebase Auth + Google Sign-In (Credential Manager) |
| Database | Firebase Firestore & Realtime Database |
| Charts | MPAndroidChart |
| Web | Chrome Custom Tabs |
| Async | Kotlin Coroutines |
| Build | Gradle with Kotlin DSL |
app/src/main/java/edu/schoolapp/
βββ SchoolApp.kt # Application class with SharedPreferences
βββ LoginActivity.kt # Google Sign-In entry point
βββ HomeActivity.kt # Main dashboard with primary menu
βββ TodoFragment.kt # Todo list screen
βββ ActivityAddTodo.kt # Add new todo
βββ AssignmentActivity.kt # Assignment list screen
βββ AddAssignmentActivity.kt # Add new assignment
βββ AssignmentStatusActivity.kt # Pie chart status visualization
βββ SettingsActivity.kt # User settings and logout
βββ ManageListFragment.kt # Enable/disable menu items
βββ googleSingIn/ # Google authentication service
β βββ GoogleAuth.kt # Auth data model
β βββ GoogleAuthenticationService.kt
βββ model/ # Data models
βββ TodoModel.kt
βββ AssignmentModel.kt
βββ PrimaryMenuDao.kt
- Android Studio (latest stable version recommended)
- JDK 11 or higher
- A Firebase project with:
- Firebase Authentication (Google Sign-In enabled)
- Cloud Firestore
- Realtime Database
-
Clone the repository
git clone https://github.com/<your-username>/SchoolApp.git cd SchoolApp
-
Configure Firebase
- Create a new Firebase project at Firebase Console
- Add an Android app with package name
edu.schoolapp - Download
google-services.jsonand place it in theapp/directory - Enable Google Sign-In in Firebase Authentication
- Create Firestore and Realtime Database instances
-
Build and Run
./gradlew assembleDebug
Or open the project in Android Studio and run directly.
Coming soon...
- Migrate to Jetpack Compose
- Implement MVVM architecture with ViewModels
- Add Timetable and Calendar functionality
- Add Drive integration
- Implement notifications for assignment deadlines
- Add dark mode support
- Write unit and UI tests
This project is for personal learning purposes. Feel free to explore and learn from the code!
Note: This is a hobby project built during free time for learning and skill development. It's continuously evolving as I explore new Android concepts and libraries.