Walnutedu Student Management
A custom Frappe application for managing student information at WalnutEdu.
- Author: laveshparyani
- Repository: https://github.com/laveshparyani/walnutedu-student-management
- GitHub stars: 1
- Forks: 2
- License: MIT
- Category: Education
- Maintenance: Minimally Maintained
Install Walnutedu Student Management
bench get-app https://github.com/laveshparyani/walnutedu-student-management
Tags
- custom-application
- edtech
- education
- enrollment-system
- frappe
- frappe-app
- frappe-framework
- mariadb
- school-management
- student-information-system
- student-management
- student-records
- walnutedu
- web-application
Add the Frappe Gems badge to your README
Maintain Walnutedu Student Management? Paste this into your README:
[](https://frappegems.com/gems/apps/laveshparyani/walnutedu-student-management)
About Walnutedu Student Management
Student Management System - WalnutEdu
A custom Frappe application for managing student information at WalnutEdu. This application provides a comprehensive solution for educational institutions to track, manage, and monitor student data efficiently.
📋 Table of Contents
- Overview
- Video Explanation
- Features
- System Requirements
- Installation
- Usage
- Screenshots
- Challenges Faced & Solutions
- Technology Stack
- Project Structure
- Development
- Contributing
- License
- Author
🎯 Overview
The Student Management System is a custom Frappe application designed specifically for WalnutEdu to streamline student information management. Built on the Frappe Framework v15, this application enables educational institutions to:
- Maintain comprehensive student records
- Track enrollment and academic progress
- Manage student status (active, inactive, graduated)
- Organize students by grade/class
- Access student information through an intuitive web interface
This project was developed as part of a technical assessment for WalnutEdu's internship program, demonstrating proficiency in Frappe framework development, system administration, and custom application creation.
📹 Video Explanation
Watch this video to see a demonstration of the Student Management System:
Click the thumbnail above to watch the video on YouTube
✨ Features
- Student Registration & Management: Complete CRUD operations for student records
- Enrollment Tracking: Track student enrollment dates and academic status
- Contact Information Management: Maintain student contact details and addresses
- Grade/Class Organization: Organize students by their respective grades or classes
- Status Monitoring: Monitor active, inactive, and graduated students
- User-Friendly Interface: Intuitive web-based interface built on Frappe's modern UI
- Data Validation: Built-in validation for student data integrity
- Search & Filter: Easy search and filtering capabilities for student records
🖥️ System Requirements
Before installing the Student Management System, ensure your system meets the following requirements:
Operating System
- Ubuntu 20.04 LTS or higher (recommended)
- Alternative: Other Linux distributions compatible with Frappe Bench
Software Dependencies
- Python: 3.10 or higher
- MariaDB: 10.6 or higher
- Node.js: 18.x or 20.x (24.x also supported)
- Redis: 6.0 or higher
- Frappe Framework: Version 15.0
- Git: Latest stable version
System Resources
- RAM: Minimum 4GB (8GB recommended)
- Disk Space: At least 10GB free space
- CPU: Multi-core processor recommended
Additional Requirements
- Frappe Bench installed and configured
- Proper network connectivity for package installation
- Administrative/sudo access for system configuration
🚀 Installation
Follow these steps to install the Student Management System on your Frappe site.
Step 1: Prerequisites
Ensure you have Frappe Bench installed. If not, follow the official Frappe installation guide:
# Install Frappe Bench (if not already installed)
sudo apt update
sudo apt install python3-dev python3-pip python3-venv python3-setuptools
sudo apt install mariadb-server mariadb-client
sudo apt install redis-server
sudo apt install git curl
# Install Node.js (using nvm is recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 18
# Install Bench
sudo pip3 install frappe-bench
# Initialize a new bench (if you don't have one)
bench init frappe-bench
cd frappe-bench
For detailed installation instructions, refer to the Frappe Framework Documentation.
Step 2: Get the Application
Clone or get the Student Management application into your Frappe bench:
# Navigate to your bench directory
cd ~/frappe-bench
# Get the app from GitHub
bench get-app https://github.com/laveshparyani/walnutedu-student-management.git
# Or if you have it locally, navigate to the directory and use:
# bench get-app student_management .
# Alternatively, if you have the app locally
bench get-app student_management /path/to/student_management
Step 3: Create a New Site (if needed)
If you don't have a site yet, create one:
# Create a new site
bench new-site your-site.localhost
# Set administrator password when prompted
Step 4: Install the App on Your Site
Install the Student Management app on your site:
# Install the app
bench --site your-site.localhost install-app student_management
# If the site already exists and you're adding the app
bench --site your-site.localhost install-app student_management
Step 5: Start the Development Server
Start the Frappe development server:
# Start bench (this starts all services)
bench start
# Or start specific services
bench start --only-web
bench start --only-worker
Step 6: Access the Application
- Open your web browser
- Navigate to
http://your-site.localhost:8000 - Login with the administrator credentials
- The Student Management app will be available in the app menu
📖 Usage
Creating a New Student Record
- Login to your Frappe site
- Search for "Student" in the awesome bar (search bar at the top)
- Click "New" to create a new student record
- Fill in the student details:
- Student Name
- Enrollment Date
- Grade/Class
- Contact Information
- Status (Active/Inactive/Graduated)
- Any other required fields
- Click "Save" to save the record
Viewing Student Records
- Search for "Student" in the awesome bar
- You'll see a list of all student records
- Click on any student name to view detailed information
- Use the search and filter options to find specific students
Editing Student Information
- Open the student record you want to edit
- Make the necessary changes
- Click "Save" to update the record
Managing Student Status
- Open a student record
- Update the status field (Active/Inactive/Graduated)
- Save the changes
📸 Screenshots
Student List View
View all students in a organized list format with search and filter capabilities.

Student Form View
Create and edit student records with an intuitive form interface.

Student Dashboard
Monitor student statistics and overview with the dashboard view.

🔧 Challenges Faced & Solutions
During the development of this application, several challenges were encountered and resolved. Here's a detailed account:
Challenge 1: MariaDB Configuration & Character Encoding
Issue: During initial setup, the application encountered character encoding issues, particularly with special characters and Unicode support. This caused problems when storing student names with non-ASCII characters.
Solution:
- Configured MariaDB to use UTF8MB4 character encoding
Modified
/etc/mysql/my.cnfto include:[mysql] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ciRestarted MariaDB service
- Recreated the database with proper encoding
- Verified encoding with
SHOW VARIABLES LIKE 'character_set%'
Learning: Proper database configuration is crucial for international character support in educational applications.
Challenge 2: Virtual Environment & Package Management
Issue: Encountered permission errors when installing Python packages using pip. This was particularly problematic when trying to install Frappe and its dependencies in a system-wide Python environment.
Solution:
- Used
pipxfor isolated bench installation to avoid conflicts - Created virtual environments for each Frappe bench
- Used
benchcommand-line tool which handles virtual environments automatically - Ensured proper user permissions for the bench directory
- Used
--userflag as a fallback when needed
Learning: Isolated environments prevent dependency conflicts and permission issues in multi-project setups.
Challenge 3: Understanding Frappe's DocType System
Issue: Initially struggled with understanding Frappe's ORM (Object-Relational Mapping) and field types. Creating custom DocTypes with proper field configurations required understanding Frappe's meta framework.
Solution:
- Studied official Frappe documentation extensively
- Experimented with different field types (Data, Link, Date, Select, etc.)
- Used Frappe's built-in DocType builder in the UI to understand field configurations
- Referenced existing Frappe apps for best practices
- Learned about Frappe's JSON-based DocType definitions
- Understood the relationship between DocTypes, Forms, and List Views
Learning: Frappe's meta framework is powerful but requires understanding of its unique approach to data modeling.
Challenge 4: Frappe Bench Setup on WSL
Issue: Setting up Frappe Bench on Windows Subsystem for Linux (WSL) presented unique challenges with file permissions, service management, and path handling.
Solution:
- Configured WSL with proper Ubuntu distribution
- Set up systemd for service management (if needed)
- Handled Windows-WSL file system interactions carefully
- Used WSL-specific paths and configurations
- Ensured proper permissions for bench directory
- Configured Redis and MariaDB to start automatically in WSL
Learning: WSL requires additional configuration considerations compared to native Linux installations.
Challenge 5: Git Repository Setup & Remote Configuration
Issue: Initial git repository setup had ownership and remote configuration issues, making it difficult to push code to GitHub.
Solution:
- Configured git safe directories for WSL paths
- Set up proper git user configuration
- Added remote repository correctly
- Handled file permissions for git operations
- Used proper authentication (SSH keys or HTTPS with token)
Learning: Proper git configuration is essential for version control and collaboration.
🛠️ Technology Stack
This application is built using the following technologies:
- Framework: Frappe Framework v15.0
- Backend Language: Python 3.10+
- Database: MariaDB 10.6+
- Frontend: Frappe's built-in UI (based on Vue.js)
- Cache: Redis 6+
- Runtime: Node.js 18.x/20.x
- Version Control: Git
- Package Management: pip, npm
- Build Tool: Frappe Bench
📁 Project Structure
student_management/
├── student_management/
│ ├── __init__.py
│ ├── hooks.py # App configuration and hooks
│ ├── modules.txt # App modules
│ ├── patches.txt # Database migration patches
│ ├── config/ # Configuration files
│ ├── public/ # Public assets (CSS, JS)
│ ├── templates/ # Jinja templates
│ └── www/ # Web pages
├── screenshots/ # Application screenshots
├── pyproject.toml # Python project configuration
├── README.md # This file
├── license.txt # MIT License
└── .gitignore # Git ignore rules
💻 Development
Setting Up Development Environment
- Clone the repository
- Install dependencies using Frappe Bench
- Create a developmen
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)
