StudentHub is an Android application designed for IIIT Lucknow students to facilitate academic collaboration, document sharing, and campus communication.
- Email/Password authentication (restricted to
@iiitl.ac.indomain) - Google Sign-In integration
- Password reset functionality
- User profile management
- Upload academic papers and documents
- Browse and view shared papers
- Admin approval system for paper submissions
- Offline support with Room database for cached papers
- One-on-one messaging between users
- Group chat functionality
- Online/offline status indicators
- Media sharing support
- Gemini-powered AI assistant
- Campus-specific information queries
- Academic schedules, events, and notices
- Natural language conversation interface
- Firebase Cloud Messaging integration
- Real-time notifications for messages and updates
- Topic-based subscriptions
- User profiles with photo, name, and contact information
- Group memberships
- Contact list management
- Language: Kotlin
- Minimum SDK: 28 (Android 9.0)
- Target SDK: 35 (Android 15)
- Build System: Gradle with Kotlin DSL
- UI Framework: Jetpack Compose + ViewBinding
- Architecture Components: ViewModel, LiveData
- Navigation: Custom navigation utilities
- Firebase Authentication: User authentication
- Firebase Realtime Database: Real-time data synchronization
- Firebase Cloud Messaging: Push notifications
- Firebase Crashlytics: Crash reporting
- Firebase Functions: Serverless functions
- Cloudinary: Media storage and management
- Room Database: Local caching and offline support
- Data Binding: View binding enabled
- Retrofit: REST API client
- OkHttp: HTTP client
- Gson: JSON serialization
- Glide: Image loading and caching
- Google Generative AI: Gemini 2.5 Flash model for chatbot
- Material Design Components: UI components
- Splash Screen API: App launch experience
- Credentials API: Google Sign-In integration
app/src/main/java/com/namangulati/studenthub/
├── adapters/ # RecyclerView adapters
├── admin/ # Admin-specific features
├── API/ # API interfaces and utilities
├── controllers/ # ViewModels and app controllers
├── Dao/ # Room database DAOs
├── Database/ # Room database and repositories
├── fragments/ # UI fragments
├── models/ # Data models
├── modelsRoom/ # Room database entities
├── uiutils/ # UI utility classes
├── userPages/ # Main user-facing activities
└── utils/ # Utility classes
- Android Studio Hedgehog or later
- JDK 8 or higher
- Android SDK with API level 28+
- Firebase project with the following services enabled:
- Authentication
- Firestore
- Realtime Database
- Cloud Messaging
- Crashlytics
-
Clone the repository
git clone <repository-url> cd StudentHub
-
Configure Firebase
- Create a Firebase project at Firebase Console
- Download
google-services.jsonand place it in:app/google-services.json
- Enable the required Firebase services mentioned above
-
Add SHA Keys:
- In the Firebase Console, go to
Project settings>General>Your apps. - Click on
Add fingerprintand add your SHA-1 and SHA-256 keys. You can find these keys in Android Studio:- Go to the terminal in android studio and run this command:
./gradlew signingreport
- Go to the terminal in android studio and run this command:
- If it shows any error it means that your jdk is not properly set up.
- Copy the SHA-1 and SHA-256 keys from the report and add them to Firebase.
- After adding SHA-1 and SHA-256 keys and then download the
google-services.jsonfile provided and place it in theappdirectory of your project.
-
Configure API Keys
- Add your Gemini API key in
app/src/main/java/com/namangulati/studenthub/API/Constants.kt - Add your Google Sign-In Web Client ID in
app/src/main/res/values/strings.xmlasdefault_web_client_id
- Add your Gemini API key in
-
Build the project
./gradlew build -
Run the app
- Connect an Android device or start an emulator
- Run the app from Android Studio or use:
./gradlew installDebug
- Enable Email/Password authentication in Firebase Console
- Configure OAuth consent screen for Google Sign-In
- Set up Firestore database with appropriate security rules
- Configure Realtime Database rules
- Set up Cloud Messaging and generate server key
The app requires the following permissions:
INTERNET: Network accessACCESS_NETWORK_STATE: Check network connectivityPOST_NOTIFICATIONS: Push notifications (Android 13+)WRITE_EXTERNAL_STORAGE: File operationsACCESS_FINE_LOCATION: Location services (if needed)ACCESS_COARSE_LOCATION: Location services (if needed)
./gradlew assembleDebug
./gradlew assembleRelease
The APK will be generated in app/build/outputs/apk/
Key dependencies are managed in gradle/libs.versions.toml. Major dependencies include:
- AndroidX Core KTX
- Material Design Components
- Firebase BOM (33.5.1)
- Jetpack Compose
- Room Database
- Retrofit & OkHttp
- Glide
- Google Generative AI
- Version Code: 1
- Version Name: 1.0
- Naman Gulati
Note: This app is specifically designed for IIIT Lucknow students and requires a valid @iiitl.ac.in email address for authentication.