Skip to content

Latest commit

ย 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ฑ Parent Communication Register (PCR)

Academic Attendance Tracking & Direct Parental Communication Mobile Application for Android

Android Platform Java 8 Gradle Build Database UI Framework Validation License: MIT

English | ุงู„ุนุฑุจูŠุฉ


๐ŸŒŸ Overview

Parent Communication Register (PCR) is a native Android application engineered for schools, universities, and educational institutions. It streamlines daily student attendance recording, provides real-time attendance telemetry for faculty and administrators, and bridges the gap between schools and parents with direct one-touch cellular telephony integration (CALL_PHONE).

PCR eliminates paper-based attendance registers by offering a secure, offline-first embedded SQLite storage engine with automated session linking, role-based workflows (Admin vs. Faculty), and granular attendance reports.


๐Ÿ—๏ธ Architecture & Component Flow

The application follows an Android architectural model combining ViewBinding, Data Access Objects (DAO) via a centralized DBAdapter, and declarative form validation via Android Saripaar.

graph TD
    subgraph Presentation Layer
        Auth[LoginActivity] -->|Role: Admin| AdminHome[AdminActivity]
        Auth -->|Role: Faculty| FacultyHome[FacultyActivity]
        
        AdminHome --> AddFaculty[AddFacultyActivity]
        AdminHome --> AddStudent[AddStudentActivity]
        AdminHome --> ManageFaculty[AdminFacultyActivity]
        AdminHome --> ViewStudents[StudentActivity]
        
        FacultyHome --> TakeAtt[take_attendance]
        FacultyHome --> ViewAtt[Viewattendance_activity]
        FacultyHome --> StudentList[StudentActivity]
    end

    subgraph Business & Service Layer
        TakeAtt --> SessionManager[Attendance Session Processor]
        StudentList --> TelephonyService[Android Telephony Manager<br/>ACTION_CALL / Direct Phone Alert]
        AddFaculty --> Validator[Saripaar Form Validator]
        AddStudent --> Validator
    end

    subgraph Persistence Layer
        SessionManager --> DBAdapter[DBAdapter - SQLiteOpenHelper]
        AddFaculty --> DBAdapter
        AddStudent --> DBAdapter
        ViewAtt --> DBAdapter
        
        DBAdapter --> DB[(SQLite Database: Attendance.db)]
    end
Loading

๐Ÿ—„๏ธ Database Schema & Entity Relationships

PCR manages academic records through four normalized relational tables managed by DBAdapter:

erDiagram
    FACULTY_TABLE {
        int faculty_id PK "AUTOINCREMENT"
        string faculty_name
        string faculty_qualif
        string faculty_mobilenumber
        string faculty_address
        string faculty_gender
        string faculty_Email
        string faculty_password
    }

    STUDENT_TABLE {
        int student_id PK "AUTOINCREMENT"
        string student_name
        string student_gender
        string student_mobilenumber
        string student_address
        string student_dob
        string student_class
    }

    ATTENDANCE_SESSION_TABLE {
        int attendance_session_id PK "AUTOINCREMENT"
        int attendance_session_faculty_id FK
        string attendance_session_class
        date attendance_session_date
    }

    ATTENDANCE_TABLE {
        int attendance_session_id FK
        int attendance_student_id FK
        string attendance_status "Present / Absent"
    }

    FACULTY_TABLE ||--o{ ATTENDANCE_SESSION_TABLE : "supervises"
    ATTENDANCE_SESSION_TABLE ||--|{ ATTENDANCE_TABLE : "contains"
    STUDENT_TABLE ||--o{ ATTENDANCE_TABLE : "recorded_in"
Loading

โœจ Key Features

  • ๐Ÿ” Dual-Tier Role Based Access Control:
    • Administrator Dashboard: Register faculty members, manage instructor credentials, enroll new students with demographic data, and oversee all academic cohorts.
    • Faculty Dashboard: Filter by assigned class, initiate daily roll-calls, record presence/absence flags, and inspect historical session logs.
  • โšก Rapid Roll-Call Attendance Session:
    • Automated session creation with timestamp and teacher identifier.
    • Quick-toggle status switches (Present / Absent) with high-contrast UI states.
  • ๐Ÿ“ž One-Touch Parental Call Dispatch:
    • Directly connect faculty members to a student's parent/guardian upon absence using the Android native dialer/telephony stack (CALL_PHONE intent).
  • ๐Ÿ“‹ Rule-Based Form Validation:
    • Employs Android Saripaar annotation-based validation for email formatting, mobile number lengths, and required profile fields.
  • ๐Ÿ–ผ๏ธ Profile Media Ingestion:
    • Integrated image picker (com.github.Drjacky:ImagePicker) and circular image rendering (de.hdodenhof:circleimageview) for avatar customization.
  • ๐Ÿ“ด Offline-First Reliability:
    • Zero cloud dependency required for operational core: all transactions commit locally to transactional SQLite with atomic integrity.

๐Ÿ› ๏ธ Tech Stack & Dependencies

Layer Technology Description
OS Target Android 5.0 to 14 minSdk = 21, targetSdk = 34, compileSdk = 34
Language Java 8 Modern lambdas, streams, and bytecode desugaring
Build Tool Gradle 8.7 (Kotlin DSL) build.gradle.kts with Version Catalog libs.versions.toml
View Layer Android ViewBinding Type-safe view lookups replacing unsafe findViewById
UI Components Google Material Components Material buttons, CardViews, TextInputLayouts
Form Validation Android Saripaar 2.0.3 Declarative field validation engine
Image Picker Drjacky ImagePicker 2.3.22 Camera & Gallery profile image capture
Avatar Display CircleImageView 3.1.0 Circular avatar masking for students and faculty
Local Storage Android SQLiteOpenHelper ACID-compliant relational embedded database

๐Ÿ“ Project Directory Layout

PCR/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ build.gradle.kts                      # Module-level Gradle configuration (SDK 34)
โ”‚   โ”œโ”€โ”€ proguard-rules.pro                   # R8 / ProGuard optimization rules
โ”‚   โ””โ”€โ”€ src/
โ”‚       โ”œโ”€โ”€ main/
โ”‚       โ”‚   โ”œโ”€โ”€ AndroidManifest.xml          # Permissions (CALL_PHONE) & Activity declarations
โ”‚       โ”‚   โ”œโ”€โ”€ java/com/example/parentcommunicationregistar_app/
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ Login_activity.java      # Auth gateway (Admin vs Faculty)
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ Admin_activity.java      # Administrator executive console
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ AdminFacultyActivity.java# Faculty registry & roster management
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ AddFactultyActivity.java # Instructor registration & validation
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ Faculty_Activity.java    # Faculty session launcher & tools
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ AddStudentActivity.java  # Student onboarding & contact registration
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ StudentActivity.java     # Student directory with direct parental calling
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ take_attendance.java     # Daily roll-call attendance submission
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ Viewattendance_activity.java # Historical records & attendance analytics
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ AttendanceAdapter.java   # RecyclerView adapter for dynamic roster rows
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ HomeFragment.java        # Dashboard overview fragment
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ bean/                    # Data transfer objects (DTOs)
โ”‚       โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AttendanceBean.java
โ”‚       โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AttendanceSessionBean.java
โ”‚       โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ FacultyBean.java
โ”‚       โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ StudentBean.java
โ”‚       โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ UserBean.java
โ”‚       โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ApplicationContext.java
โ”‚       โ”‚   โ”‚   โ””โ”€โ”€ db/
โ”‚       โ”‚   โ”‚       โ””โ”€โ”€ DBAdapter.java       # Centralized SQLiteOpenHelper & CRUD operations
โ”‚       โ”‚   โ””โ”€โ”€ res/                         # Vector drawables, layouts, and navigation graphs
โ”œโ”€โ”€ gradle/
โ”‚   โ”œโ”€โ”€ libs.versions.toml                   # Centralized Gradle version catalog
โ”‚   โ””โ”€โ”€ wrapper/                             # Gradle wrapper binaries
โ”œโ”€โ”€ build.gradle.kts                         # Root project build script
โ”œโ”€โ”€ settings.gradle.kts                      # Plugin repositories & project naming
โ””โ”€โ”€ README.md

๐Ÿš€ Build & Installation

Prerequisites

  • Android Studio (Hedgehog 2023.1.1 or Ladybug / Jellyfish recommended).
  • JDK 17 configured as the Gradle JDK.
  • Android SDK API 34 installed via SDK Manager.

1. Clone the Repository

git clone https://github.com/Brosfeer/PCR.git
cd PCR

2. Build via Command Line

# Grant execution permissions to Gradle wrapper
chmod +x gradlew

# Compile debug APK
./gradlew assembleDebug

The compiled APK will be generated at:

app/build/outputs/apk/debug/app-debug.apk

3. Install on Physical Device or Emulator

adb install -r app/build/outputs/apk/debug/app-debug.apk

๐Ÿ‡ธ๐Ÿ‡ฆ ู†ุธุฑุฉ ุนุงู…ุฉ ุจุงู„ู„ุบุฉ ุงู„ุนุฑุจูŠุฉ

ุชุทุจูŠู‚ ุณุฌู„ ุชูˆุงุตู„ ุฃูˆู„ูŠุงุก ุงู„ุฃู…ูˆุฑ (PCR - Parent Communication Register) ู‡ูˆ ุชุทุจูŠู‚ ุฃู†ุฏุฑูˆูŠุฏ ู…ุชูƒุงู…ู„ ู…ูˆุฌู‘ู‡ ู„ู„ู…ุคุณุณุงุช ุงู„ุชุนู„ูŠู…ูŠุฉ ูˆุงู„ู…ุฏุงุฑุณ ู„ุฅุฏุงุฑุฉ ุงู„ุญุถูˆุฑ ูˆุงู„ุบูŠุงุจ ุงู„ูŠูˆู…ูŠ ู„ู„ุทู„ุงุจุŒ ูˆุฑุจุท ุงู„ูƒุงุฏุฑ ุงู„ุชุนู„ูŠู…ูŠ ุจุฃูˆู„ูŠุงุก ุงู„ุฃู…ูˆุฑ ุจุดูƒู„ ู…ุจุงุดุฑ ุนุจุฑ ุงู„ุงุชุตุงู„ ุงู„ู‡ุงุชููŠ ุงู„ููˆุฑูŠ (CALL_PHONE).

ุฃุจุฑุฒ ุงู„ุฎุตุงุฆุต ุงู„ุชู‚ู†ูŠุฉ:

  1. ู†ุธุงู… ุตู„ุงุญูŠุงุช ุซู†ุงุฆูŠ (Admin / Faculty):
    • ู„ูˆุญุฉ ุชุญูƒู… ุงู„ุฅุฏุงุฑุฉ: ุฅุถุงูุฉ ูˆุชุนูŠูŠู† ุงู„ูƒุงุฏุฑ ุงู„ุชุนู„ูŠู…ูŠุŒ ุชุณุฌูŠู„ ุจูŠุงู†ุงุช ุงู„ุทู„ุงุจุŒ ูˆุฅุฏุงุฑุฉ ุงู„ูุตูˆู„.
    • ู„ูˆุญุฉ ุงู„ู…ุนู„ู…: ุชุณุฌูŠู„ ุงู„ุญุถูˆุฑ ุงู„ูŠูˆู…ูŠุŒ ุฑุตุฏ ุงู„ุบูŠุงุจ ูˆุงู„ุญุถูˆุฑุŒ ูˆุงุณุชุนุฑุงุถ ุงู„ุฅุญุตุงุฆูŠุงุช ุงู„ุชุงุฑูŠุฎูŠุฉ.
  2. ุงุชุตุงู„ ู…ุจุงุดุฑ ุจุฃูˆู„ูŠุงุก ุงู„ุฃู…ูˆุฑ: ุฅู…ูƒุงู†ูŠุฉ ุงู„ุงุชุตุงู„ ุงู„ููˆุฑูŠ ุจุฑู‚ู… ูˆู„ูŠ ุฃู…ุฑ ุงู„ุทุงู„ุจ ู…ุจุงุดุฑุฉ ู…ู† ุงู„ุชุทุจูŠู‚ ุนู†ุฏ ุฑุตุฏ ุญุงู„ุฉ ุงู„ุบูŠุงุจ ู„ุชุฃูƒูŠุฏ ุงู„ู…ุชุงุจุนุฉ.
  3. ู‚ุงุนุฏุฉ ุจูŠุงู†ุงุช SQLite ู…ุญู„ูŠุฉ ู…ุฏู…ุฌุฉ: ุญูุธ ูƒุงู…ู„ ุงู„ุณุฌู„ุงุช ูˆุงู„ูุตูˆู„ ูˆุงู„ุฌู„ุณุงุช ู…ุญู„ูŠุงู‹ ู…ุน ู…ูˆุซูˆู‚ูŠุฉ ุนุงู„ูŠุฉ ูˆุณุฑุนุฉ ูุงุฆู‚ุฉ ุจุฏูˆู† ุงู„ุญุงุฌุฉ ู„ู„ุงุชุตุงู„ ุจุงู„ุฅู†ุชุฑู†ุช.
  4. ุงู„ุชุญู‚ู‚ ุงู„ุฐูƒูŠ ู…ู† ุงู„ุจูŠุงู†ุงุช (Saripaar): ุงู„ุชุญู‚ู‚ ุงู„ุชู„ู‚ุงุฆูŠ ู…ู† ุตุญุฉ ุฃุฑู‚ุงู… ุงู„ู‡ูˆุงุชูุŒ ุงู„ุจุฑูŠุฏ ุงู„ุฅู„ูƒุชุฑูˆู†ูŠุŒ ูˆุงู„ุจูŠุงู†ุงุช ุงู„ุฅู„ุฒุงู…ูŠุฉ ู‚ุจู„ ุงู„ุญูุธ.
  5. ู…ุนู…ุงุฑูŠุฉ Android ViewBinding: ุฑุจุท ุงู„ุนู†ุงุตุฑ ุงู„ุจุฑู…ุฌูŠุฉ ุจุงู„ูˆุงุฌู‡ุงุช ุจูƒูุงุกุฉ ูˆุฃู…ุงู† ูƒุงู…ู„ ูˆุชูุงุฏูŠ ู…ุดุงูƒู„ ุงู„ุฃุฏุงุก.

๐Ÿ‘จโ€๐Ÿ’ป Author & Engineering Leadership

Engineered with architectural discipline by Sharaf (@Brosfeer) โ€” Principal Mobile & Systems Architect & Founder of SayaSky Studio.

  • GitHub: @Brosfeer
  • Studio: SayaSky Studio (Google Play)
  • Specialization: Mobile Systems, Real-Time Telemetry & Clean Architecture

๐Ÿ“„ License

Distributed under the MIT License. See LICENSE for details.

About

Parent Communication Register Android App

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages