A full-stack Flask educational management platform built with Python, Jinja2, and MongoDB.
Designed to explore backend development, API integration, NoSQL databases, and dynamic web rendering.
Flask Web Application is a full-stack web project developed using the Flask framework as part of the 30 Days Of Python learning journey by Asabeneh Yetayeh.
The application was created as a practical exploration of web development concepts using Python. The primary objective was to move beyond basic scripting and understand how backend systems communicate with databases, process user input, and dynamically generate web content.
The project simulates an educational institute management system where administrators can manage student information through a browser-based interface. Users can create, update, view, and delete student records stored inside a MongoDB NoSQL database.
Alongside database management, the application also includes additional learning-focused features such as text analysis tools, review collection, and dashboard visualisation. These features were implemented to gain practical experience with Flask routing, Jinja2 templates, form handling, and data processing.
This project represents a second iteration of the original website attempt. The previous version focused primarily on getting functionality working, whereas this rewrite placed greater emphasis on cleaner organisation, improved structure, and better separation between application logic and presentation layers.
The application was designed around several core learning objectives:
- Backend Development: Understanding Flask routing, request handling, and server-side application flow.
- Database Integration: Learning how Python applications communicate with NoSQL databases through MongoDB.
- Template Rendering: Using Jinja2 to dynamically generate HTML pages from Python data.
- Application Structure: Separating templates, static assets, and Python logic into organised project layers.
- CRUD Operations: Implementing create, read, update, and delete functionality for stored records.
- Educational student management system.
- Add new student records to MongoDB.
- View stored student information.
- Modify existing student details.
- Delete student records.
- Text analysis tool for analysing written passages.
- Dynamic page rendering using Jinja2 templates.
- Review submission and dashboard functionality.
- Python-powered data processing.
- Responsive browser-based interface.
The application follows a traditional Flask structure where backend logic, templates, and static resources are separated.
User Browser
|
↓
Flask Routes
|
↓
Python Application Logic
|
↓
MongoDB Database
|
↓
Dynamic Jinja2 Templates
The workflow follows this pattern:
- User interacts with a web form.
- Flask receives the request.
- Python validates and processes the data.
- MongoDB stores or retrieves information.
- Jinja2 renders the updated page.
Flask-Web-Application/ │ ├── app.py # Main Flask application │ ├── python_functions/ │ ├── __init__.py │ ├── review_dashboard_function.py │ └── text_analyser_functions.py │ ├── templates/ │ ├── layout.html # Base HTML layout │ │ │ ├── partials/ │ │ ├── footer.html │ │ ├── main_nav.ico │ │ └── database_nav.ico │ │ │ └── pages/ │ ├── about.html │ ├── add_new_student.html │ ├── database_home.html │ ├── home.html │ ├── leave_a_review.html │ ├── review_dashboard.html │ ├── student_database_home.html │ ├── testimonial_database_home.html │ ├── text_analyser.html │ └── update_student.html │ ├── static/ │ ├── img/ │ │ ├── favicon.ico │ │ ├── female.png │ │ ├── graph_chart.png │ │ ├── male.png │ │ ├── male2.png │ │ ├── pie_chart.png │ │ ├── preview.png │ │ ├── student.png │ │ └── Sheikh_Logo_3.png │ │ │ └── css/ │ └── main.css │ ├── requirements.txt ├── README.md └── LICENSE
- Ensure Python 3.13 is installed on your system.
-
Clone the repository:
git clone https://github.com/Sheikh-H/Flask-Website.git
-
Navigate into the project directory:
cd Flask-Website
-
Install required dependencies:
pip install -r requirements.txt
-
Run the Flask application:
python app.py
-
Open your browser:
localhost:5000/
The application can also be viewed through its deployed version:
https://flask-website-xfss.onrender.com/
The Flask backend manages:
- Application routing.
- User requests.
- Form submissions.
- Database communication.
- Template rendering.
The application uses MongoDB as a NoSQL database for storing student information and user-generated content.
The database layer provides:
- Student record storage.
- Record retrieval.
- Student updates.
- Student deletion.
Jinja2 is used to dynamically populate HTML templates with Python-generated data.
This allows the application to:
- Generate dynamic pages.
- Display database records.
- Reuse common layouts.
- Create interactive forms.
The built-in text analyser processes user-provided passages and extracts useful information using Python logic.
Features include:
- Text statistics.
- Word analysis.
- Character counting.
- Basic content processing.
Although the application successfully demonstrates Flask and database integration, several improvements could be implemented in future versions.
- User authentication and account management.
- Improved database security.
- Expanded student management features.
- REST API integration.
- Better frontend styling.
- Production deployment configuration.
- Automated testing.
- Python Runtime: Python 3.13
- Framework: Flask
- Database: MongoDB
- Template Engine: Jinja2
-
Libraries: Listed inside
requirements.txt
This project is licensed under the MIT Licence — see the LICENCE file for details.
MIT Licence Copyright (c) 2026 Sheikh Hussain 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.
