Ensure you are in the root directory (Rosla-Technology) before running these commands.
pip install -r flaskr/requirements.txtpython flaskr/app.pyflask runOpen your web browser and go to: http://127.0.0.1:5000
See the flaskr/requirements.txt file for a full list of Python package dependencies. You will need Python 3.x installed.
- Flask: A micro web framework for Python.
- Source: https://palletsprojects.com/p/flask/
- License: BSD-3-Clause
- Werkzeug: A comprehensive WSGI web application library.
- Source: https://palletsprojects.com/p/werkzeug/
- License: BSD-3-Clause
- sqlite3: A lightweight, disk-based database library.
- Source: https://docs.python.org/3/library/sqlite3.html
- License: Python Software Foundation License
- Chart.js: Simple yet flexible JavaScript charting library for the modern web
- Soruce: https://www.chartjs.org/
- License: MIT License
- Google Fonts: Web fonts provided by Google.
- Source: https://fonts.google.com/
- License: Apache License, Version 2.0
- OpenDyslexic: A typeface that uses typeface shapes & features to help offset some visual symptoms of Dyslexia. Now in SIL-OFL.
- Source: https://github.com/antijingoist/opendyslexic
- License: SIL OPEN FONT LICENSE
- Geoapify API: Used for geocoding and retrieving building geometry.
- Source: https://www.geoapify.com/
- GetAddress.io API: Used for UK address autocompletion.
- Source: https://getaddress.io/
- Google Gemini API: Used for processing text data (e.g., from OCR).
- Source: https://ai.google.dev/
- OCR API: Used for extracting text from images/documents (Specific service not identified in code excerpts).
-
register.png: Image used on login and registration pages- Soruce: Josh Hernandez
- Licnese: All Rights Reserved - Replcae Imagie in production
-
solar.svg: Solar panel icon used in solar consultation results- Soruce: Made My Self
- Licence: None
-
index.png: Main image for the homepage- Soruce: Josh Hernandez
- Licnese: All Rights Reserved - Replcae Imagie in production
-
infoHub/reduceCFPIcon.svg: Icon for the Reduce Carbon Footprint info page- Soruce: Made My Self
- Licence: None
-
infoHub/Arrow.svg: Navigation arrow used across info page- Soruce: Made My Self
- Licence: None
-
infoHub/reduceCFP.svg: Link image on the Info Hub page- Soruce: Made My Self
- Licence: None
-
infoHub/evChargers.svg: Link image on the Info Hub page- Soruce: Made My Self
- Licence: None
-
infoHub/smartHome.svg: Link image on the Info Hub page- Soruce: Made My Self
- Licence: None
-
infoHub/greenEnergy.svg: Link image on the Info Hub page- Soruce: Made My Self
- Licence: None
-
infoHub/title.svg: Title graphic for the Info Hub page- Soruce: Made My Self
- Licence: None
- Limitation: The application uses SQLite, which is suitable for development and small-scale applications but may not perform well under high traffic or with very large datasets due to its file-based nature and limited concurrency support.
- Improvement: Consider migrating to a more robust database system like PostgreSQL or MySQL for production environments.
- Limitation: Current authentication relies on password hashing but lacks advanced security features such as multi-factor authentication (MFA), rate limiting, or account lockout mechanisms after multiple failed login attempts.
- Improvement: Implement MFA (e.g., using TOTP), add rate limiting to login attempts, and implement account lockouts to enhance security against brute-force attacks.
- Limitation: Database connections and cursors are opened and closed within individual functions in
db.py. This is repetitive and less efficient. - Improvement: Centralise database connection management. Using Flask's application context (
gobject) or an Object-Relational Mapper (ORM) like SQLAlchemy can help manage connections more effectively and reduce code redundancy.