Skip to content

Latest commit

 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🖥️ Flask Web Application

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.


📘 Project Overview

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.


🧠 Development Goals & Learning Objectives

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.

⚡ Features

  • 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.

🏗️ Application Architecture

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:

  1. User interacts with a web form.
  2. Flask receives the request.
  3. Python validates and processes the data.
  4. MongoDB stores or retrieves information.
  5. Jinja2 renders the updated page.

🧩 Folder Structure

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

🚀 Installation & Setup

  1. Ensure Python 3.13 is installed on your system.
  2. Clone the repository:
    git clone https://github.com/Sheikh-H/Flask-Website.git
    
  3. Navigate into the project directory:
    cd Flask-Website
    
  4. Install required dependencies:
    pip install -r requirements.txt
    
  5. Run the Flask application:
    python app.py
    
  6. Open your browser:
    localhost:5000/
    

🌐 Live Deployment

The application can also be viewed through its deployed version:

https://flask-website-xfss.onrender.com/

📸 Application Preview

Application Preview


⚙️ Core Application Components

🐍 Flask Backend

The Flask backend manages:

  • Application routing.
  • User requests.
  • Form submissions.
  • Database communication.
  • Template rendering.

🗄️ MongoDB Database Integration

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 Template System

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.

📝 Text Analysis System

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.

🧪 Current Limitations & Future Improvements

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.

🧰 Requirements & Dependencies

  • Python Runtime: Python 3.13
  • Framework: Flask
  • Database: MongoDB
  • Template Engine: Jinja2
  • Libraries: Listed inside requirements.txt

📄 Licence

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.

Footnote

🗣️ Feel free to follow, connect, and chat!

GitHub LinkedIn Gmail Portfolio

⭐ If you like this project, please give it a star on GitHub!

About

This was recreated as a part of a project in the 30 days of Python course by Asabeneh Yetayeh to showcase my skills in full-stack development.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages