The full-stack framework that we leveraged for the project is the MEAN stack.
MySQL, Express, Angular, and NodeJs.

The code is structured in a way to make it modular and easier to work with and extend.

There are two seperate folders: one including the front-end (client) and one including the back-end (server).
It is recommended to create seperate git repositories for both of these folders so that deploying them to Heroku is easier.

First, a description of the Angular front-end folder structure will be provided:

	On the front-end (client) under src->app, there are three main folders and the facebook authentication file:

		1. Core: This folder has the subfolders services, models and helpers.

				Services: Used for dependency injection, such as http requests from back-end api or other apis.

				Models: This includes interfaces which is for creating user data types with Typescript on the models obtained from the back-end.
					They are not required, but it is good practice for making it easier to debug code on the front-end.

				Helpers: These are used to make sure the user is logged in (auth.guard.ts), and to catch errors and jwt authentication.
					 I wouldn't worry too much about these since authentication is currently handled by Facebook.

					(Services): The authentication.service.ts file does the FB auth handling, along with role authorization handling (admin, instructor, student) to use on the
					 route modules (look into the canActivate function).

		2. Modules: This folder has the subfolders admin, course, and home.
				In each subfolder, is a routing module for handling the routes between components,
				a module to handle the component declarations (which are lazy loaded in the app-routing.module.ts routes),
				and the components themselves to handle front-end displaying and business logic.

		3. Shared: This folder has the header and footer components which are displayed (shared) throughout every route in the LMS-FIU application.
		
		4. src/app/app.component.ts: This file has included the Facebook authentication service (using npm package angularx-social-login) 
		                     which is stores the user in localstorage for the app to authenticate them through the core/services/authentication.service.ts file.
		
	The server.js file is used in the client for the front-end to build and run on Heroku and Facebook.
	(make sure to use the local testing https server code in server.js and comment out the app.listen() code unless testing for production)
	
	To run the front-end, make sure you have installed the node packages by using 'npm install'
	Then, fix any packages by using 'npm audit fix'
	Finally, run using the angular cli with 'ng serve' 


Second, a description of the Nodejs, Express, MySQL back-end folder structure will be provided:

	On the back-end (server) under /app there are four main folders which help modularize the main file (server.js):
	
		1. Config: This folder contains the configuration details for:
				   the database (db.config.js) (and the Facebook application (keys.js) *Can be ignored for now).
				   
				   The database config was obtained from Heroku's ClearDB MySQL server.
				   (First install ClearDB add on to your heroku app for the server, then
				   see the config vars for the ClearDB database url, set the database_url config vars,
				   and use the url to replace the db.config.js with mysql://username:password@hostname/database_name?reconnect=true
				   retrieved from the url. For more info, go here https://devcenter.heroku.com/articles/cleardb)
				   
				   The Facebook app (keys.js) clientID and clientSecret where obtained from the creation of a Facebook app.
				   https://developers.facebook.com/
				   
				   Also in this folder, passport-setup.js is included. This was used for testing authentication before the Facebook login was working and can be ignored.
				   
		2. Models: The models are classes (like in Java or C++) which contain a constructor with properties obtained from the database's columns (fields) for a specific table.
					Also included are functions which provide access to certain data from the MySQL table using SQL queries and returning the result(s) (rows) to the controller.
					These should be created first (you may use previously created models as a reference).
					
		3. Controllers: The controllers import the model, and use functions to handle the requested data from the front-end and send back a response.
						Express is used with body-parser package to simplify the code for the requests and responses. (req, res).
						http://expressjs.com/
						These should be created second (you may use the previously created controllers as a reference).
						
		4. Routes: The routes import the controllers and use their functions to create a RESTful api using Expressjs.
				   Endpoints are defined here for the front-end to call those endpoints and send and/or retrieve data.
				   These should be created third (you may use the previously created routes as a reference).
		
		5. server.js: The main file which starts the NodeJs/Express app, it should
					  be written to when creating models/controllers/routes to require(import) the routes and passing in the express app for the routes files to use.
					  (Look at the bottom-most requires(imports) of server.js).
					  Import the routes when you are finished creating them here.
					  
	To run the back-end, first use 'npm install',
	then 'npm audit fix',
	then 'npm run dev'.
				  
Finally, a description of handling the Database folder files will be provided:

	Make sure that you have access to a ClearDB MySQL server (Heroku add-on).
	
	First, make sure you have MySQL workbench installed on your computer. (https://www.mysql.com/products/workbench/)
	Then, import the Dump folder with the sql files included.
	Lastly, run the SQL queries under the 'Views and Procedures' sql file.
	This should get you up-to date with some data that was included for testing, along with the Database Schema, Tables, Views, and Procedures.