╔═══════════════════════════════════════════════════════╗
║ ██████╗ ███████╗██╗ ███╗ ███╗███████╗ ║
║ ██╔══██╗██╔════╝██║ ████╗ ████║██╔════╝ ║
║ ██████╔╝███████╗██║ ██╔████╔██║███████╗ ║
║ ██╔═══╝ ╚════██║██║ ██║╚██╔╝██║╚════██║ ║
║ ██║ ███████║███████╗██║ ╚═╝ ██║███████║ ║
║ ╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝╚══════╝ ║
║ ║
║ Primary School Learning Management System v1.0 ║
║ Flask-based Modular School Management ║
╚═══════════════════════════════════════════════════════╝
pslms (Primary School Learning Management System) is a modular Flask-based web application for managing users and events in a school setting. It supports roles such as Admin, Student, Teacher, and Public. The app includes user authentication, event handling, database setup, and logging, with scripts to automate environment and database initialization.
The system is designed to be scalable, maintainable, and easy to deploy, making it ideal for primary schools looking to digitize their administrative and learning processes.
| Role | Access Level | Features |
|---|---|---|
| Admin | Full System Access | Dashboard, student/teacher management, section/subject assignment, resource management |
| Teacher | Teaching Tools | Teacher dashboard, class management, student grading, resource sharing |
| Student | Learning Portal | Student dashboard, view assignments, access learning materials |
| Public | Limited Access | View public pages, home, about, contact information |
| Feature | Description |
|---|---|
| Modular Blueprint Architecture | Flask blueprints for Admin, Student, Teacher, Public, and Login modules |
| Automated Database Setup | Python initialization script (init.py) for creating tables, admin account, and default subjects |
| Cross-Platform Setup | Shell script (init.sh) for Linux, macOS, and Windows environment initialization |
| Event Handling System | Dedicated event module for system notifications, error messages, and success alerts |
| Logging System | Automatic log directory creation for organized data management |
| Excel Integration | Excel directory creation for data export and reporting |
| User Authentication | Secure login/logout functionality for all user roles |
![]() |
![]() |
| 🏠 Home Page Public interface |
🔐 Login Page Secure entry |
![]() |
![]() |
| 👨💼 Admin Panel Centralized management |
📊 Dashboard At-a-glance insights |
Click on any image to view full size (if browsing on GitHub).
- Python 3.8 or higher
- pip package manager
- Git (for cloning the repository)
git clone https://github.com/omerKkemal/Work.git
cd WorkLinux / macOS:
python -m venv venv
source venv/bin/activateWindows:
python -m venv venv
venv\Scripts\activatepip install -r requirements.txtbash init.shThis script will:
- Run the Python initialization script (
init.py) - Create necessary database tables
- Set up default admin account
- Insert default subjects
- Create required directories (logs, excel, etc.)
- Launch the application
Work/
│
├── 📄 app.py # Main Flask application entry point
├── 📄 init.py # Python initialization script
├── 📄 init.sh # Cross-platform setup script
├── 📄 requirements.txt # Python dependencies
│
├── 📂 admin/ # Admin module (blueprint)
│ ├── 📄 __init__.py
│ ├── 📄 routes.py # Admin routes
│ └── 📂 templates/ # Admin templates
│
├── 📂 student/ # Student module (blueprint)
│ ├── 📄 __init__.py
│ ├── 📄 routes.py # Student routes
│ └── 📂 templates/ # Student templates
│
├── 📂 teacher/ # Teacher module (blueprint)
│ ├── 📄 __init__.py
│ ├── 📄 routes.py # Teacher routes
│ └── 📂 templates/ # Teacher templates
│
├── 📂 login/ # Authentication module (blueprint)
│ ├── 📄 __init__.py
│ └── 📄 routes.py # Login/logout routes
│
├── 📂 public/ # Public module (blueprint)
│ ├── 📄 __init__.py
│ └── 📄 routes.py # Public routes (home, about)
│
├── 📂 event/ # Event handling module
│ ├── 📄 __init__.py
│ └── 📄 event.py # Error and success handlers
│
├── 📂 database/ # Database management
│ ├── 📄 __init__.py
│ ├── 📄 setup.py # Table creation
│ └── 📄 seed.py # Default data insertion
│
├── 📂 utility/ # Helper functions
│ ├── 📄 __init__.py
│ ├── 📄 setting.py # Configuration settings
│ ├── 📄 processer.py # Data processors
│ └── 📄 filters.py # Template filters
│
├── 📂 data/ # Static data files
│ ├── 📄 subjects.json
│ └── 📄 grades.json
│
├── 📂 static/ # Static assets
│ ├── 📂 css/
│ ├── 📂 js/
│ └── 📂 images/
│
├── 📂 logs/ # Application logs (auto-generated)
│ └── 📄 app.log
│
├── 📂 excel/ # Excel exports (auto-generated)
│
└── 📂 note/ # Optional note-taking feature
python app.pyOn first run, follow the prompts in the terminal to complete the setup, such as:
- Inserting default subjects
- Configuring admin credentials
- Setting up academic terms
Once running, the application will be accessible at:
http://127.0.0.1:5000/
| Role | Default Credentials (after setup) |
|---|---|
| Admin | Set during initialization |
| Teacher | Created by admin |
| Student | Created by admin or teacher |
| URL | Access | Description |
|---|---|---|
/ |
Public | Home page |
/about |
Public | About page |
/login |
Public | Login page for all users |
/admin/* |
Admin Only | Admin dashboard and management |
/teacher/* |
Teacher Only | Teacher dashboard and tools |
/student/* |
Student Only | Student portal |
| Technology | Version | Purpose |
|---|---|---|
| Flask | 2.0+ | Web framework |
| Python | 3.8+ | Core programming language |
| SQLite | 3.x | Database |
| Jinja2 | - | Template engine |
| HTML5 | - | Frontend structure |
| CSS3 | - | Styling |
| JavaScript | ES6 | Frontend interactions |
| Feature | Description |
|---|---|
| Attendance System | Track student attendance with reports |
| Gradebook | Comprehensive grading system with analytics |
| Parent Portal | Dedicated access for parents to monitor children |
| Calendar Integration | School event calendar with reminders |
| Messaging System | Internal communication between teachers and parents |
| Report Cards | Automated report card generation |
| Mobile App | Companion mobile application |
| API Integration | RESTful API for third-party integrations |
Omer Kemal
Full Stack Developer & Education Technology Specialist
| Platform | Link |
|---|---|
| GitHub | @omerKkemal |
| Website | https://www.omerkemal.com |
| @omerKkemal | |
| omer-kemal |
For questions, feedback, or contributions, please open an issue on GitHub or contact through the channels above.
This project is licensed under the MIT License.
MIT License
Copyright (c) 2024 Omer Kemal
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.




