Technological Architecture - Orpheuz/LDSO-5B GitHub Wiki
Technological Architecture
We will build this app using Ruby on Rails to access the data, benefiting from the framework's Model-View-Controller architecture, using Rails' Active Record modelling, the layer of the system responsible for representing business data and logic. Active Record facilitates the creation and use of business objects whose data requires persistent storage to a database. It is an implementation of the Active Record pattern which itself is a description of an Object Relational Mapping system. In Rails we can easily generate new controllers, which are responsible for orchestrating the whole process of handling requests in Rails, normally handing off heavy code the Model. When it's time to send a response back to the user, the Controller hands things off to the View. The database will be built with MySQL because it provides scalability, flexibility and a high performance usefull for our application.
To manage the view, we will use Angular.js, manipulating and binding the data easily and providing a more dynamic view to the user with RESTful Web API.
We chose to use both of these technologies together because Angular on Rails is a well-know implementation design that facilitates the use of templates and gems to make our product richer.
Bootstrap will be used to build a responsive interface via high-quality HTML , CSS and JavaScript .
Physical Architecture
File/folder | Purpose |
---|---|
app/ | Contains the controllers, models, views, helpers, mailers and assets for the application. |
app/assets/javascripts | Contains not only the js files normally used but also the templates used by angularjs and angular-templates gem |
bin/ | Contains the rails script that starts the app and can contain other scripts used to setup, deploy or run your application. |
config/ | Configuration of the application's routes, database, and more. This is covered in more detail in Configuring Rails Applications. |
config.ru | Rack configuration for Rack based servers used to start the application. |
db/ | Contains the current database schema, as well as the database migrations. |
Gemfile Gemfile.lock | These files allow us to specify what gem dependencies are needed for the Rails application. These files are used by the Bundler gem. |
lib/ | Extended modules for the application. |
log/ | Application log files. |
public/ | The only folder seen by the world as-is. Contains static files and compiled assets. |
Rakefile | This file locates and loads tasks that can be run from the command line. The task definitions are defined throughout the components of Rails. |
test/ | Unit tests, fixtures, and other test apparatus. |
tmp/ | Temporary files (like cache, pid, and session files). |
vendor/ | A place for all third-party code. this includes vendored gems. |