Giter VIP home page Giter VIP logo

lumina_web's Introduction

LUMINA


Lumina is a project which is intended to calculate how many lighting fixtures are needed in a room based on its physical characteristics, its use or the activities that will be performed there, and also based on the characteristics of the chosen type of light.


This tool is intended to help the architectural or lighting designer, therefore, a lot of the terms are to be understood by an architectural professional that is able to judge the design problem and determine the best parameters based on the design's requirements.


The user will be able of specifying the dimensions of the space, the characteristics of the materials and finishes on the floor, wall, and ceiling/roof, and then choose a lighting fixture from the app database with its real specifications.


I tried to expand my knowledge a bit more further the Flask lesson, that is the reason I used SQLAlchemy in this project, which is a library that allows to interact with the SQL database with an Object Oriented Programming approach. This helped me a lot, as I needed to spend some time to take the Database to the Third Normal Form, and once that done, SQLAlchemy made it pretty easy to make queries and updates to the Database itself in all the places of the code where it was referenced.


Also, this project was a great exercise to practice AJAX and jQuery in order to connect functionalities between the front-end and the back-end, as I wanted to make the Project Page as dynamic and reactive as possible inside of the knowledge I have in the moment. For the next project I expect to explore and learn more about Django and React.


In matter of the front-end, this was a great opportunity to practice Bootstrap in order to get the page to look exactly as I wanted. Combining it with some JS scripts allowed me to give the front-end with the aspect and interactivity that I exactly wanted.


This was a very iterative process, I used some reinforcement knowledge that I learnt from other courses which helped me to understand even more how a lot of web processes work, and also test different ideas and implementations of those ideas, it was definitely a sandbox for me. Also, I have to remark that before finishing this course I was able of finding a great job as a developer for the AEC industry, which allowed me to see with a new perspective this final project as I started it about 10 months ago and that I was able of finishing it now.


Files descriptions

  • run.py: Is the file from where everything is run. To start the server just execute "python run.py" from your command line and the Flask server will be started. It will run in Debug mode
  • databaseManipulation.py: This is an utility script I created to populate the database with default data in order to save time each time I needed to recreate the database when testing.
  • DBPopulationData.py: This file contains the data that is read by databaseManipulation.py and then written to the database
  • Lumina package (__init__.py): Contains the initialization of the Flask app, the SQLAlchemy database object, login managers, and Bcrypt
  • forms.py: Contains the classes of all the forms used in the project, created with WTForms
  • routes.py: Contains all the routes and relevant backend procedures.
  • helpers.py: Contains helper functions used throughout the project.
  • models.py: Contains the SQLAlchemy models representing each table in the SQL Database.
  • utilizationFactorTables.py: It is part of the lighting calculation, it is a table used to get a value which is relevant on this calculation based on the room's and lighting specifications.
  • lumina_db.db: The SQL database.
  • project.js: Front-end procedures for the /project page.
  • loadProject.js: Front-end procedures for the /loadProject page.
  • heightFiller.js and heightFiller_ProjectPage: Helper jQuery scripts to assist the styling of the pages.
  • Branding, Color Palette, and icons folders: Folders containing relevant graphics for the project.
  • Bootstrap folder: Bootstrap library.


In summary, this was a great exercise to practice everything, DB creation and manipulation, UI/UX Design, folder structure, Python, JS, AJAX, jQuery, Bootstrap. Definitely it has been a great experience.


Now, I intend to continue learning and taking the CS50w course, learn about Django, React.js, three.js (in order to complement my knowledge in 3D and Rendering), and Tailwind is in my sight as well, I would like to start experimenting with it.


This app is the final project of CS50x from Ricardo Salas

lumina_web's People

Contributors

ricardosalasv avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.