A comprehensive Android application for managing tuition classes, built with modern Android development technologies.
- User registration and login with email/password
- Firebase Authentication integration
- Session management with automatic login
- Add, view, and delete students
- Store student information (name, grade, contact info)
- Real-time updates with Firestore
- Create and manage assignments
- Track due dates and subjects
- Assignment details and descriptions
- Organize tuition classes
- Teacher information and schedules
- Subject-wise class organization
- Schedule and track tests
- Set maximum marks for tests
- Test date management
- View and edit user profile
- Account information display
- Name update functionality
- Dark/Light theme toggle
- Theme preference persistence
- App information and about section
- Language: Kotlin
- UI Framework: Jetpack Compose with Material Design 3
- Architecture: MVVM (Model-View-ViewModel)
- Navigation: Jetpack Navigation Component
- Async Programming: Kotlin Coroutines and Flow
- Dependency Injection: Hilt
- Authentication: Firebase Authentication
- Database: Firebase Firestore
- Local Storage: DataStore Preferences
app/src/main/java/com/tutionapp/
├── data/
│ ├── model/ # Data models (User, Student, Assignment, etc.)
│ └── repository/ # Firestore repository
├── di/ # Hilt dependency injection modules
├── features/ # Feature-based packages
│ ├── auth/ # Authentication (Login, Register)
│ ├── students/ # Student management
│ ├── assignments/ # Assignment management
│ ├── classes/ # Class management
│ ├── tests/ # Test management
│ ├── profile/ # User profile
│ └── settings/ # App settings
├── navigation/ # Navigation setup
├── ui/ # UI components and theme
│ ├── theme/ # Material Design 3 theme
│ └── MainScreen.kt # Main app screen with drawer
└── utils/ # Utility classes
- Android Studio Arctic Fox or later
- Android SDK 24+ (Android 7.0)
- Firebase project setup
- Create a new Firebase project at Firebase Console
- Add an Android app to your Firebase project with package name:
com.tutionapp - Download the
google-services.jsonfile and place it in theapp/directory - Enable Authentication and Firestore Database in Firebase Console
-
Clone the repository:
git clone https://github.com/yourusername/tuition-app.git cd tuition-app -
Open the project in Android Studio
-
Replace the placeholder
google-services.jsonwith your actual Firebase configuration file -
Build and run the project:
./gradlew build
-
Authentication:
- Go to Firebase Console → Authentication → Sign-in method
- Enable Email/Password sign-in method
- Optional: Enable Google sign-in for additional authentication options
-
Firestore Database:
- Go to Firebase Console → Firestore Database
- Create database in test mode initially
- For production, use the provided
firestore.rulesfile in the project root - Deploy security rules:
firebase deploy --only firestore:rules
-
Project Settings:
- Ensure your package name matches:
com.tutionapp - Download the latest
google-services.jsonand replace the placeholder file
- Ensure your package name matches:
For production, consider implementing proper security rules:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Users can only access their own data
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
// Authenticated users can access all other collections
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}./gradlew assembleDebug./gradlew assembleRelease- MVVM Pattern: Separation of concerns with ViewModels managing UI state
- Clean Architecture: Clear separation between data, domain, and presentation layers
- Repository Pattern: Centralized data access through FirestoreRepository
- StateFlow: Reactive state management in ViewModels
- Compose State: Local UI state management in Composables
- Navigation Component: Type-safe navigation between screens
- Deep Linking: Support for navigation arguments and routes
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-feature - Commit your changes:
git commit -am 'Add new feature' - Push to the branch:
git push origin feature/new-feature - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support, email support@tutionapp.com or open an issue in the repository.
- Firebase for backend services
- Material Design 3 for UI components
- Jetpack Compose team for the modern UI toolkit