How tanim494/iiuc-pedia works
1. Project shape
- This is a single-module Android app written in Java: app/ contains all runtime code, UI, resources, and Firebase configuration. There is no separate backend repo in this tree; the app talks directly to Firebase services.
2. App entry and session flow
- The user journey starts around LoadingActivity, then branches into LoginActivity / RegisterActivity or into the main app if already authenticated.
- MainActivity is the shell that likely hosts the primary navigation and swaps the core fragments.
3. Primary navigation layer
- The app is fragment-driven rather than screen-per-feature. Core user-facing sections include HomeFragment, StudentPortalFragment, ResourcesFragment, FacultyFragment, ProfileFragment, and DeveloperFragment.
- activity_main.xml and bottom_navigation.xml indicate a bottom-tab style navigation container.
4. Academic resource subsystem
- The main product value is structured academic content: Course, Semester, DriveLink, FileItem, and related adapters/fragments suggest a hierarchy of department → semester → batch/course → resource files/links.
- Screens such as BatchWiseFragment, CourseListFragment, SemesterResources, ResourcesFragment, DriveLinksFragment, and FileListFragment are the content discovery path.
5. Content delivery and viewers
- Files are presented through specialized viewers: PdfViewerFragment for PDF reading and WebFragment for embedded web content/links.
- FileAdapter, DriveLinkAdapter, DriveLinkItemAdapter, and CourseAdapter render lists/cards for resource browsing.
- The presence of UploadFileFragment implies admins can add downloadable materials that are then surfaced to students.
6. Community and messaging
- The in-app discussion area is centered on CommunityActivity, CommunityMessage, Message, Notice, and their adapters.
- CommunityChatAdapter, MessageAdapter, and NoticeAdapter indicate two content types: conversational chat and announcement/notices.
- MyFirebaseMessagingService shows push notification support for incoming updates.
7. Admin/control plane
- The app includes a sizeable admin surface: AdminFragment plus specialized fragments for config, bus schedules, faculty import, links, batch links, user lists, and messages/notices.
- Files like AdminConfigFragment, AdminUserListFragment, ManageMessagesNoticesFragment, and ManageBusSchedule suggest role-based in-app moderation and content management rather than an external CMS.
8. Operational/configuration data
- UserData, UserListModel, and ViewTracker show that the app tracks user accounts and content usage.
- AdminConfigFragment and the config-related model classes imply runtime feature/content settings are stored in Firebase and read dynamically by the client.
9. Backend boundaries
- The architecture is Firebase-centered: google-services.json plus the README point to Firebase Auth for login, Firestore for structured content and chat data, and Firebase Storage for uploaded/downloadable files.
- MyFirebaseMessagingService adds Firebase Cloud Messaging as a notification boundary.
- There is no custom server code in the repository; the Android client is the full application front end.
10. Department and legacy structure
- The README notes a migration from a single-department “CCE Pedia” model to a multi-department “IIUC Pedia” model.
- DepartmentRepository and the presence of department-specific resources imply a shared app with departmental partitioning, not a separate app per department.
11. UI implementation style
- The UI is built with standard Android widgets and RecyclerViews, using many list/card adapters for each data type.
- The res/layout and res/drawable trees show custom reusable UI components for messages, notices, files, links, and navigation icons.
12. Auxiliary feature surfaces
- AIChatActivity adds an assistant/chatbot entry point separate from the student portal and community chat.
- BusScheduleFragment / ManageBusSchedule and FacultyFragment / FacultyAdapter show that the app bundles non-resource campus information alongside study materials.
13. Important diagram boundaries
- A useful architecture diagram would separate: authentication/session, student content browsing, file/link viewing, community chat/notifications, and admin management.
- The external service boundary should show Firebase Auth, Firestore, Storage, and FCM as the only major infrastructure dependencies.
Main entry points: bottom_navigation.xml Bottom Nav · AdminFragment.java Admin · ResourcesFragment.java Resources · CourseListFragment.java Course List
Components 28
Session & Shell
App launch, authentication, and main navigation container.
- Loading · Starts the app and routes based on authentication state.
app/src/main/java/com/tanim/ccepedia/LoadingActivity.java - Login · Sign-in screen for existing users.
app/src/main/java/com/tanim/ccepedia/LoginActivity.java - Register · Account creation flow.
app/src/main/java/com/tanim/ccepedia/RegisterActivity.java - Main Shell · Primary container for the app's fragment navigation.
app/src/main/java/com/tanim/ccepedia/MainActivity.java - Bottom Nav · Bottom-tab navigation definition for the main shell.
app/src/main/res/menu/bottom_navigation.xml - Profile · User account and personal information view.
app/src/main/java/com/tanim/ccepedia/ProfileFragment.java
Academic Content
Student-facing browsing of departments, semesters, courses, files, and links.
- Home · Landing hub for featured content and quick actions.
app/src/main/java/com/tanim/ccepedia/HomeFragment.java - Student Portal · Student-facing section entry point.
app/src/main/java/com/tanim/ccepedia/StudentPortalFragment.java - Resources · Top-level academic resource browser.
app/src/main/java/com/tanim/ccepedia/ResourcesFragment.java - Batch Wise · Drills into batch-oriented resource discovery.
app/src/main/java/com/tanim/ccepedia/BatchWiseFragment.java - Semester · Semester-level resource listing.
app/src/main/java/com/tanim/ccepedia/SemesterResources.java - Course List · Lists courses within the selected semester or department.
app/src/main/java/com/tanim/ccepedia/CourseListFragment.java - Drive Links · Shows grouped external file links for a course or batch.
app/src/main/java/com/tanim/ccepedia/DriveLinksFragment.java - File List · Displays downloadable resource files.
app/src/main/java/com/tanim/ccepedia/FileListFragment.java - PDF Viewer · Reads PDF documents inside the app.
app/src/main/java/com/tanim/ccepedia/PdfViewerFragment.java - Web View · Embeds web pages or link targets.
app/src/main/java/com/tanim/ccepedia/WebFragment.java - Departments · Department partitioning and shared academic structure.
app/src/main/java/com/tanim/ccepedia/DepartmentRepository.java
Community
Chat, notices, and push-driven updates.
- Community · Discussion and announcement surface.
app/src/main/java/com/tanim/ccepedia/CommunityActivity.java - Push Service · App-side service handling incoming push notifications.
app/src/main/java/com/tanim/ccepedia/MyFirebaseMessagingService.java
Admin Tools
In-app control surface for content and configuration management.
- Admin · Entry point for administrative tools.
app/src/main/java/com/tanim/ccepedia/AdminFragment.java - Config · Runtime settings and feature/content configuration.
app/src/main/java/com/tanim/ccepedia/AdminConfigFragment.java - Messages · Manage community messages and notices.
app/src/main/java/com/tanim/ccepedia/ManageMessagesNoticesFragment.java - Upload File · Adds downloadable content to storage-backed resources.
app/src/main/java/com/tanim/ccepedia/UploadFileFragment.java - Users · User list and account oversight.
app/src/main/java/com/tanim/ccepedia/AdminUserListFragment.java
Firebase Boundaries
External services used by the Android client.
- Firebase Auth · Authentication provider for login and registration.
- Firestore · Structured store for content, chat, notices, and configuration.
- Storage · Hosts uploaded PDFs and other downloadable resources.
- FCM · Push notification delivery for updates and alerts.
Connections 30
- Loading → Login: unauthenticated · Routes to sign-in when no session is available.
- Loading → Main Shell: authenticated · Skips auth and opens the main shell.
- Login → Firebase Auth: sign in · Authenticates users against Firebase Auth.
- Register → Firebase Auth: create account · Registers new users through Firebase Auth.
- Main Shell → Bottom Nav: hosts · Main activity contains the bottom navigation container.
- Bottom Nav → Home: home · Navigation item opens the home fragment.
- Bottom Nav → Student Portal: portal · Navigation item opens the student portal.
- Bottom Nav → Resources: resources · Navigation item opens academic resources.
- Bottom Nav → Profile: profile · Navigation item opens the profile view.
- Bottom Nav → Admin: admin · Navigation item or role-gated entry reaches admin tools.
- Resources → Departments: partition · Uses department structure to scope content.
- Resources → Batch Wise: drill down · Starts batch-oriented browsing.
- Batch Wise → Semester: select semester · Moves from batch to semester resources.
- Semester → Course List: select course · Shows courses inside the chosen semester.
- Course List → Drive Links: open links · Courses can expose external drive link groups.
- Course List → File List: open files · Courses can expose downloadable file listings.
- Drive Links → Web View: open link · External links are viewed in the embedded web screen.
- File List → PDF Viewer: view pdf · PDF resources open in the PDF viewer.
- File List → Storage: download source · File metadata points to Firebase Storage objects.
- Community → Firestore: chat data · Community messages and notices are stored in Firestore.
- Community → Push Service: receives pushes · Community updates are surfaced through the messaging service.
- Push Service → FCM: push delivery · Firebase Cloud Messaging delivers notifications to the app.
- Admin → Config: config · Administrative configuration tools.
- Admin → Messages: moderate · Administrative message and notice management.
- Admin → Upload File: publish files · Admin workflow for uploading content.
- Admin → Users: manage users · Administrative user oversight.
- Config → Firestore: read/write settings · Configuration is persisted in Firestore.
- Messages → Firestore: edit posts · Messages and notices are maintained in Firestore.
- Upload File → Storage: store files · Uploaded materials go to Firebase Storage.
- Users → Firestore: user records · User lists and profile data come from Firestore.