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.
- Author: JinsoRaj
- Repository: https://github.com/JinsoRaj/IFIApp
- GitHub stars: 1
- Forks: 0
- License: NOASSERTION
- Category: Education
- Maintenance: Minimally Maintained
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:
[](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
- Features
- Architecture
- Installation
- Configuration
- DocTypes
- API Documentation
- User Roles & Permissions
- Authentication Flow
- Custom Workflows
- Development
- Testing
- Deployment
- Contributing
- License
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
- Get the app
cd frappe-bench
bench get-app https://github.com/JinsoRaj/IFIApp.git
- Install on site
bench --site your-site.local install-app ifiapp
- Run migrations
bench --site your-site.local migrate
- Import fixtures (States, Districts, Classes, etc.)
bench --site your-site.local import-doc --path apps/ifiapp/ifiapp/fixtures
- 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 registrationPOST /api/method/ifiapp.ifiapi.verify_mail- Verify email OTPPOST /api/method/ifiapp.ifiapi.resend_mail- Resend OTPPOST /api/method/ifiapp.ifiapi.app_login- Mobile app loginPOST /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)