Main > Reference Manual > Introduction > Architecture > User interface and database layer
FrePPLe includes a user interface based on the impressive Django web application framework (see http://www.djangoproject.com). It allows quick and easy definition of the data model, automatically creates an administration user interface and allows you to construct performant and scalable web sites.
The user interface can be deployed in different architectures, depending on the requirements. With increasing levels of scalability and performance, we can basically distinguish the following three main deployment scenario's.
The user interface and its database structure can easily be customized to meet your own business processes and data sources.
Standalone/all-in-one application

The windows installer includes a standalone application.
The application is an all-in-one installation containing:
- Python interpreter and Python libraries.
- Web server CherryPy, written in Python.
- Django web application.
- Database SQLite, which is part of the Python standard library.
This one-stop installation package (< 18MB download) makes it very easy to get started with frePPLe, as a tutorial or for educational purposes. It is also suitable to deploy frePPLe as an application to an end user's PC.
The server can run in console window (recommended for development and debugging) or as a windows service (recommended for day to day production usage).
This configuration should only be used for single-user access to small models.
Python application and a database

The SQLite database does an excellent job for relatively small datasets. But for the complex reporting queries used by frePPLe it is no match for the "real" database applications.
As a first measure for increasing scalability and performance, the database needs to be separated out. FrePPLe supports the Oracle, MySQL and postgreSQL databases.
The windows all-in-one installer provides the web server and the application. You'll need to install and configure the database separately upfront.
This configuration is suitable for a) larger models with a single user or b) when a few users access frePPle with low concurrency (i.e. very limited simultaneous use).
Apache web server with mod_wsgi and a database

This is by far the best and preferred deployment option for production servers!
Apache is now used as the web server. Using the mod_wsgi module it executes the Django Python code.
The Apache server assures excellent scalability, performance and security.
In most cases a single Apache web server and a single database server will suffice.
For high-volume deployments with plenty of concurrent users additional components can be added to guarantee the right scalability and availability of the system: memory caches, separated web servers for static and dynamic content, replicated databases, load balanced web servers, enterprise authentication such as LDAP, ...