User:Starcracker/sandbox

TreeFrog Framework is a fast open-source and full-stack Web application framework written in C++. It is based on the cross-platform application framework Qt which supports HTTP and WebSocket protocol. The general main focus of TreeFrog Framework is to make Web applications lightweight in resource demands, easy to make and fast. TreeFrog Framework strictly follows the policy of “convention over configuration” which results in reduced development costs and higher productivity. The Web application configuration process with TreeFrog Framework has been reduced to a smallest possible minimum as it provides support on automatic code generation for template systems (scaffolding) on a MVC-based architecture, O/R mapping system, and ORM. TreeFrog Framework was first released under the terms of the BSD-3-Clause by Kazuharu Aoyama in January, 2011. The TreeFrog Framework open-source project is accessible on the web-based Git repository hosting service Github.

TreeFrog Framework is a cross-platform framework that runs on all widely common operation systems, such as Windows, Linux and macOS. When a Web application is supposed to run on multiple platforms the flexibility of TreeFrog Framework becomes obvious. The source code just needs to be written once and can be compiled to its targeting operation system.

FreeFrog Framework is currently supported in two languages: English and Japanese. A forum for discussions, suggestion for improvements, critics and support is available.

MVC-based architecture
TreeFrog Framework uses the advantages of the MVC software pattern to separate visualized data from stored data which targets to more modularized programming and re-usability and extension of programming code.

Model
TreeFrog Framework is equipped with an O/R mapping system (named SqlObject) which is a powerful tool in the model layer in dealing with stored objects in the system or inside an external database. The O/R mapper takes over most of the work when dealing with SQL, helping software developers to focus more on logic of their program. Complicated and complex conditions in SQL queries can be easily and safely realized due to the use of placeholders. TreeFrog Framework supports several database programs, i.e. MySQL, Oracle, SQLite, PostgreSQL and OBDC.

View
In the view layer, TreeFrog currently supports two template syntaxes which can be used in combination with HTML files: Embedded Ruby (ERB) and Otama. In both template systems, the output data in a browser can be managed by using C++ code (since TreeFrog Framework is written in C++). The difference in these two systems lies into their way of implementation. While in ERB C++ code can be directly embedded inside HTML files, the Otama template systems completely separates the presentation logic from the template which, therefore, allows collaboration between programmers and designers. Both have their benefits and downsides: compared with Otama, ERB makes it easier to understand the mechanism of the desired output, but makes it difficult to check or change the Web design.

Controller
The control layer provides useful features such as login authentication, access control, cookie storage/usage and form validation. It also provides an easy way to obtain data representing HTTP request/response and information about the session. A further ability of the controller is the support of an URL routing system for call methods. It allows routing of call methods from a requested URL to their required actions. A one-by-one definition of rules in the configuration file as well as a setup of distribution rules of any action requests is no longer required.

Features

 * Usage of the MVC software architecture and the server engine of C++


 * Operation system portability
 * Support of WebSocket, which ensures a full range of interactivity between a browser and a web server
 * Support of different database programs, such as MySQL, PostgreSQL, ODBC, SQLite, Oracle and DB2
 * Automatic generation of scaffolds and Makefiles
 * Support of open-standards such as XML and JSON, as well as AJAX for asynchronous Web applications

Requirements
TreeFrog Framework supports the following operation systems: Windows 7/8/10, UNIX-like OS and macOS. Additionally, the cross-platform application framework Qt needs to be installed.

To develop a Web application with TreeFrog Framework, a few C++ development tools are required. The following list provides a proposal of the recommended tools that should be used (other tools may be used as well):
 * On Windows:
 * MinGW (or something similar with a ported g++ compiler)


 * On UNIX-like OS:
 * Using the packages provided by the distribution


 * On macOS:
 * Xcode (or something similar with a ported g++ compiler)

Documentation
TreeFrog Framework provides a comprehensive documentation (including a API reference) on the TreeFrog Framework homepage in English and Japanese language.