An open API service indexing awesome lists of open source software.

https://github.com/anbalagand/schoolapp

πŸ“š A hobby Android app for students to manage todos, track assignments with visual progress charts, built with Kotlin, Firebase & Google Sign-In. A personal learning project exploring modern Android development.
https://github.com/anbalagand/schoolapp

android android-app assignment-tracker coroutines firebase firebase-auth firebase-firestore google-sign-in kotlin learning-project material-design mpandroidchart student-app todo-app

Last synced: 2 days ago
JSON representation

πŸ“š A hobby Android app for students to manage todos, track assignments with visual progress charts, built with Kotlin, Firebase & Google Sign-In. A personal learning project exploring modern Android development.

Awesome Lists containing this project

README

          

# πŸ“š SchoolApp

> A personal hobby Android project for exploring modern Android development concepts and expanding my skills during free time.

## 🎯 Project Motive

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

## ✨ Features

### πŸ” Authentication
- **Google Sign-In** integration using the latest Credential Manager API
- Secure Firebase Authentication
- User profile management with profile picture display

### πŸ“ Todo Management
- Create, view, and manage personal todo items
- Data persistence with Firebase Firestore
- Clean list-based UI

### πŸ“‹ Assignment Tracking
- 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)

### 🏠 Customizable Home Menu
- 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

### βš™οΈ Settings
- User profile display with Google account info
- Manage primary menu visibility
- Logout functionality

## πŸ› οΈ Tech Stack

| 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 |

## πŸ“ Project Structure

```
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
```

## πŸš€ Getting Started

### Prerequisites
- Android Studio (latest stable version recommended)
- JDK 11 or higher
- A Firebase project with:
- Firebase Authentication (Google Sign-In enabled)
- Cloud Firestore
- Realtime Database

### Setup

1. **Clone the repository**
```bash
git clone https://github.com//SchoolApp.git
cd SchoolApp
```

2. **Configure Firebase**
- Create a new Firebase project at [Firebase Console](https://console.firebase.google.com/)
- Add an Android app with package name `edu.schoolapp`
- Download `google-services.json` and place it in the `app/` directory
- Enable Google Sign-In in Firebase Authentication
- Create Firestore and Realtime Database instances

3. **Build and Run**
```bash
./gradlew assembleDebug
```
Or open the project in Android Studio and run directly.

## πŸ“± Screenshots

*Coming soon...*

## πŸ—ΊοΈ Roadmap

- [ ] 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

## πŸ“„ License

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.