Raviya Technical
Published in

Raviya Technical

Github | Project Documentation Compendium | Codebase Structure Templates

These are the directories that we are actively using in the development:

+ [frontend/server/controllers](https://github.com/kylelobo/The-Documentation-Compendium/tree/master/frontend/server/controllers):
The controllers do the business logic and expose the server API.
+ [frontend/server/libs](https://github.com/The-Documentation-Compendium/tree/master/frontend/server/libs): Libraries and
utilities.
+ [frontend/server/libs/dao](https://github.com/The-Documentation-Compendium/tree/master/frontend/server/libs/dao): Data
Access Objects [DAO] and Value Objects [VO]. Classes used to represent database schemes and facilitate their use by the controllers.
+ [frontend/templates](https://github.com/The-Documentation-Compendium/tree/master/frontend/templates): Smarty templates
used to generate the HTML that is displayed to users.
+ [frontend/www](https://github.com/The-Documentation-Compendium/tree/master/frontend/www): The complete contents of the
Internet page.

### frontend / www
Content:

+ js /
+ css /

#### js
As the name implies, here is where all the javascript fonts and javascript frameworks reside. When you want to make changes, please minify the javascript and then upload.

#### css
Similar to js, here are the minified css files.

### frontend / server
Content:

* dao /
* controllers /

None of these modules should be accessible to the outside world. The only one that can call them is the user interface. That's why they're under the www folder.

#### DAO / VO

The *dao* folder contains the classes for the data access layer. It has 2 things to know: *data access objects* and *value objects*. The *value objects* (VO) are nothing much but classes that are mapped directly to each of the tables in the database. Therefore, there is a class in there called Users, since there is a table with the same name. This class has its setters and getters for each of the fields in the database. The *data access objects* (dao) are static classes for each of the tables, and they serve to obtain and make the objects persistent *vo*.

[Here is more info about this model](http://www.ibm.com/developerworks/java/library/j-dao/)

#### Controllers
The controllers are where the decisions are made. The controller uses the dao's and vo's to make decisions, and never call the database directly. This way, we avoid having separate controllers for each module of the project.

--

--

--

PHP, Laravel And Flutter Development

Recommended from Medium

React Router DOM version 6 updates and changes

11 webpack plugins which you should Know them

The React lifecycle methods

Introduction to Dynamic Programming — Memoization

Setting Up Google OAuth Using Passport.js in your Node Application

I guess I am missing Glacier too. #camping read here: https://t.co/GdRs9rI3hg

Clojure vs. Javascript mindsets

restQL V3 is here

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Raviya Technical

Raviya Technical

raviyatechnical.blogspot.com

More from Medium

Github | Project Documentation Compendium | Issue Templates

How to Implement login with google in laravel * DevRohit Think simplified

Laravel orderBy, groupBy and limit Example

How to Pass Data to All Views in Laravel -