Ifiapp

A comprehensive Frappe/ERPNext application for managing educational volunteer programs. This backend powers the IFI mobile application, providing role-based access for Volunteers, Quality Assurance personnel, Coordinators, and District Coordinators.

Install Ifiapp

bench get-app https://github.com/JinsoRaj/IFIApp

Add the Frappe Gems badge to your README

Maintain Ifiapp? Paste this into your README:

[![Listed on Frappe Gems](https://frappegems.com/api/method/frappe_gems.seo.badge?app=JinsoRaj%2FIFIApp)](https://frappegems.com/gems/apps/JinsoRaj/IFIApp)

About Ifiapp

IFI App - Insight for Innovation Backend

A comprehensive Frappe/ERPNext application for managing educational volunteer programs. This backend powers the IFI mobile application, providing role-based access for Volunteers, Quality Assurance personnel, Coordinators, and District Coordinators.

Table of Contents

Overview

IFI App is the backend system for a volunteer-driven educational initiative. Built on the Frappe Framework, it provides:

  • Multi-role user management (Volunteer, QA, Coordinator, District Coordinator)
  • Student tracking and performance monitoring
  • Class session management
  • Attendance tracking with automatic calculations
  • Assessment systems (Maths & English with multiple test levels)
  • Evaluation and quality assurance workflows
  • Rewards and gamification using Frappe Energy Points
  • Institution management (Schools, Colleges, Corporates)
  • Geographic data (States, Districts)
  • Profile approval workflows

Features

🔐 Authentication & User Management

  • Custom signup with email verification via OTP
  • Secure password reset flow with single-use tokens
  • API key generation for mobile app authentication
  • Role-based access control (RBAC)
  • Profile approval workflow using Frappe Workflows

👥 Role-Based Features

Volunteer

  • Manage assigned students
  • Submit class sessions with automatic hour calculation (optional)
  • Mark bulk attendance for students
  • Conduct and submit Maths & English tests
  • View student progress and skills assessment
  • Earn reward points for activities
  • Search and view student details

Quality Assurance (QA)

  • Search and filter volunteers
  • Conduct teachback evaluations
  • Perform volunteer assessments
  • Access evaluation history
  • Review volunteer performance metrics

Coordinator

  • View school and college statistics
  • Access student lists by institution
  • Monitor volunteer assignments
  • Track institutional performance

District Coordinator

  • Add new institutions (Schools, Colleges, Corporates)
  • Map schools to colleges
  • Assign volunteers to schools
  • View mapping statistics and details
  • Manage district-level operations

📊 Data Management

  • Student Management: Complete student profiles with skills assessment (8 skill categories)
  • Attendance Tracking: Automatic attendance percentage calculation on student records
  • Assessment System:
    • Maths: Initial and Final tests with topic-wise tracking
    • English: Initial, Intermediate, and Final tests with grade levels
    • Bulk mark submission with create/update logic
  • Class Sessions: Track session date, time, duration, topics, and modules
  • Rewards System: Integrated with Frappe Energy Points for gamification
  • Profile Images: Custom avatar selection system

🔄 Custom Workflows

  • UserSignup Approval: Draft → Approval Pending → Approved
  • Auto-creation: Approved UserSignups automatically create AppUser records with unique IFI ID

🔔 Notifications

  • FCM (Firebase Cloud Messaging) token management for push notifications
  • Email notifications for OTP verification
  • System notifications for workflow actions

Architecture

Technology Stack

  • Framework: Frappe Framework (Python-based)
  • Database: MariaDB/MySQL
  • ORM: Frappe ORM
  • API: REST API with whitelisted methods
  • Authentication: Token-based (API Key/Secret)
  • Queue: Frappe Background Jobs (Redis)
  • Email: Frappe Email Queue

Project Structure

IFIApp/
├── ifiapp/
│   ├── ifiapi.py                      # Custom API endpoints
│   ├── hooks.py                       # App hooks and configurations
│   ├── config/                        # Desktop and module configurations
│   ├── fixtures/                      # Default data (States, Districts, etc.)
│   ├── ifiapp/
│   │   └── doctype/                   # All DocType definitions
│   │       ├── appuser/               # Approved user profiles
│   │       ├── attendance/            # Student attendance records
│   │       ├── class/                 # Class master (4-10)
│   │       ├── classsession/          # Volunteer session records
│   │       ├── student/               # Student master with skills
│   │       ├── evaluation/            # QA evaluation records
│   │       ├── mathsmark/             # Maths test scores (child table)
│   │       ├── englishmark/           # English test scores (child table)
│   │       ├── reward/                # Reward records
│   │       ├── school/                # School master
│   │       ├── college/               # College master
│   │       ├── corporate/             # Corporate master
│   │       ├── mappedschools/         # School-College mapping (child table)
│   │       ├── states/                # State master
│   │       ├── districts/             # District master
│   │       ├── ifimodule/             # Learning modules master
│   │       ├── topic/                 # Topics master
│   │       ├── question/              # Assessment questions master
│   │       ├── questiontable/         # Question mapping (child table)
│   │       ├── usersignups/           # User registration requests
│   │       └── profileimages/         # Avatar images master
│   └── templates/                     # Web templates (if any)
└── pyproject.toml                     # Python project configuration

Installation

Prerequisites

  • Frappe Bench installed
  • Python 3.10+
  • MariaDB 10.6+ or MySQL 8.0+
  • Redis
  • Node.js 18+ (for frontend assets)

Setup

  1. Get the app
cd frappe-bench
bench get-app https://github.com/JinsoRaj/IFIApp.git
  1. Install on site
bench --site your-site.local install-app ifiapp
  1. Run migrations
bench --site your-site.local migrate
  1. Import fixtures (States, Districts, Classes, etc.)
bench --site your-site.local import-doc --path apps/ifiapp/ifiapp/fixtures
  1. Start development server
bench start

Configuration

System Settings

Configure in Frappe System Settings: - resetpasswordlinkexpiryduration: OTP expiry time (default: 1800 seconds / 30 minutes)

Email Configuration

Configure SMTP settings in Email Account:

Email ID: your-email@domain.com
SMTP Server: smtp.gmail.com
Port: 587
Use TLS: Yes

Fixtures Included

The app includes pre-configured data: - States: Indian states - Districts: Indian districts - Classes: 4 to 10 - Colleges: Sample institutions - Corporates: Sample corporates - Topics & Modules: Learning curriculum - Questions: Sample assessment questions - Roles: Volunteer, Coordinator, Quality Assurance, District Coordinator, ifiuser, ifiadmin - Workflows: UserApproval workflow - Energy Point Rules: Reward point rules

DocTypes

Core DocTypes

AppUser

Stores approved user profiles with roles and permissions.

Key Fields: - ifi_id: Unique identifier (IFI-XXXXXX) - user_details: Link to UserSignups - full_name, gender, ph_number, email_id - state, district, college_name - is_volunteer, is_coordinator, is_qa, is_dis_coordinator: Role flags - points_gained: Total reward points - schools: Table of mapped schools (for District Coordinators) - students_list: Table of assigned students (for Volunteers)

Auto-naming: By field user_details

Student

Student master with skills assessment and academic tracking.

Key Fields: - full_name, gender, contact_number - school_name, school_district, class_name, grade - english_level, maths_level - total_attendance: Auto-calculated attendance percentage - Skills (8 types): visual_spatial, linguistic_verbal, interpersonal, intrapersonal, logical_mathematical, musical, bodily_kinesthetic, naturalistic - maths_marks: Child table (MathsMark) - english_marks: Child table (EnglishMark)

Auto-naming: STUD-.YYYY.- (e.g., STUD-2024-00001)

Attendance

Daily attendance records for students.

Key Fields: - student_id: Link to Student - is_present: True/False - date: Auto-set on creation

Hooks: Updates total_attendance on Student on save

ClassSession

Records of volunteer teaching sessions.

Key Fields: - ifi_id: Volunteer's IFI ID - school_name: Link to School - session_date, session_start_time, session_end_time - session_total_time: Hours (manually entered) - class_name: Link to Class - topic: Link to Topic - module: Link to IFIModule - session_strength: Number of students

MathsMark (Child Table)

Stores Maths test scores for students.

Key Fields: - topic: Link to Topic - initial_test_mark, initial_total_mark - final_test_mark, final_total_mark

Parent: Student (maths_marks field)

EnglishMark (Child Table)

Stores English test scores for students.

Key Fields: - topic: Link to Topic - initial_test_mark, initial_total_mark, initial_grade_level - intermediate_test_mark, intermediate_total_mark, intermediate_grade_level - final_test_mark, final_total_mark, final_grade_level

Parent: Student (english_marks field)

Evaluation

QA evaluation records for volunteers.

Key Fields: - ifi_id: Volunteer's IFI ID (evaluatee) - evaluator_id: QA's IFI ID - volunteer, evaluator: Auto-filled from IFI IDs - full_name, profile_pic: Auto-filled from volunteer - evaluation_date, evaluation_time - evaluation_mode: Online/Offline - table_questions: Child table (QuestionTable) - final_score: Auto-calculated from questions

Reward

Reward records for volunteers.

Key Fields: - ifi_id: Volunteer's IFI ID - app_user: Auto-filled from IFI ID - Reward type fields (dynamic based on reward)

Hooks: Creates Energy Point Log entry

School, College, Corporate

Institution masters.

Common Fields: - institution_name - district: Link to Districts - address, landmark - contact_number, email

UserSignups

User registration requests with approval workflow.

Key Fields: - email_id, full_name, ph_number, gender - state, district, college_name - emp_status: Student/Employee/Un-Employee - res_address, profile_pic - workflow_state: Draft/Approval Pending/Approved

Hooks: On approval, creates AppUser with unique IFI ID

Master Data DocTypes

  • States: Indian states
  • Districts: Districts within states
  • Class: Class levels (4-10)
  • IFIModule: Learning modules
  • Topic: Subject topics
  • Question: Assessment questions
  • ProfileImages: Avatar images

Child Tables

  • Students: Links students to volunteers (in AppUser)
  • MappedSchools: Maps schools to colleges (in AppUser for District Coordinators)
  • QuestionTable: Links questions to evaluations
  • MathsMark: Stores maths scores (in Student)
  • EnglishMark: Stores English scores (in Student)

API Documentation

For complete API documentation with request/response examples, authentication details, and usage guides, see API_DOCUMENTATION.md.

Quick API Reference

Authentication APIs

  • POST /api/method/ifiapp.ifiapi.sign_up - User registration
  • POST /api/method/ifiapp.ifiapi.verify_mail - Verify email OTP
  • POST /api/method/ifiapp.ifiapi.resend_mail - Resend OTP
  • POST /api/method/ifiapp.ifiapi.app_login - Mobile app login
  • POST /api/method/ifiapp.ifiapi.verify_otp_code - Verify OTP (with reset toke

Related Education apps for Frappe & ERPNext

  • Lms — Easy to Use, 100% Open Source Learning Management System
  • Education — Open source education / school management system
  • Mon School — Frappe App for Mon School based on Frappe LMS
  • Junior School — Junior School is a custom Frappe application that extends the core Frappe Education. It provides comprehensive tools for scheduling, attendance tracking, assessment management, and automated student lifecycle processes, specifically designed for multi-school environments.
  • Ifitwala Ed — A School Managment System
  • School Automations
  • Academy — Website for academy.erpnext.com
  • Psa — Sana'a University Postgraduate Studies Administration (PSA)