• A Complete
    SaaS Framework
    The 4th Recess Software as a Service application development framework allows you to build high performance SaaS apps quickly and with greater confidence. Our component based approach saves money and increases quality.




Design and Develop



The 4th Recess SaaS Framework is an extendable, full featured application development framework that was designed for companies looking to build powerful Software as a Service apps in a rapid, cost effective manner.



Deploy and Host



Rest easy knowing that your applications will be deployed in our highly secure, dedicated server infrastructure.  We leverage server redundancy, load balancing, and advanced failover features to ensure your applications are available when your business depends on them.



Manage and Support



We cover the full spectrum of your SaaS support needs, from your Help Desk, to Account and Billing management, to user Training and Online Support. Our Frameworks provide a fully customizable help interface that allows you to build help documentation, tutorials, and user forums.


 Single Page Application Architecture (SPAA) considerations

The 4th Recess Software as a Service framework was designed using the Single Page Application architecture, which we believe delivers the most rewarding experience for end-users.  Single page applications don't exactly have a single page, the term is used more to describe how the application is initialized and loaded into the browser.  With a single page design, all of the html, javascript, css, sprite maps, etc are loaded during the first call to the web application server.  HTML pages that are not in the initial view are hidden using javascript, or in our case the jQuery framework.  As a user goes through the application, pages are exposed and hidden as required by the navigation.

The key benefit of this approach is that all interaction with the server after initialization is primarily for data.  Little, if any, html, css, or javascript is exchanged after initialization.  This provides several key benefits to your application:

Read more: Single Page Application Architecture (SPAA) considerations

Linux Web Server Configuration - VirtualBox

by Kerry Mraz, Development Lead

General Server Configuration for Basic SaaS Installation

I am providing these steps for installation on an Ubuntu Server as a known tested and good method for working SaaS installation using CodeIgnitor and 4thRecess approved software apps. This is done mostly as a fall back to personal study, a procedure to follow should a restore be necessary, and a training guide for future techs or developers. 

Current server settings used for testing:

  • Installation on any computer system that is supported by Ubuntu Linux distro will work fine. Below are the known working and tested systems. Below are the minimum recommended.
    • CPU (dual core or better, AMD or Intel)
      • Recommend a dual core at a minimum; however, for a minimally use service, single cores can be utilized for power, space and heat savings
    • 1024 MB RAM
      • More memory will help with access speeds with more clients and user access
    • 10 GB
      • Recommend an SSD for boot and operation, RAID hdds for large storage and backup redundancy
  • Ubuntu Server Latest LTS Release (64bit) - Ubuntu.com

Minimum recommendations for VirtualBox installations:

  • Oracle VirtualBox GUI4.3.12 r93733 - Oracle VirtualBox
    • Host system can be Linux or Windows
    • Default settings
    • 1024 MB RAM
    • 1 CPU
    • 10 GB VDI
    • Network
      • Bridge Adapter (allows network access of website)
    • Normal installation

After installation of Ubuntu Server on the Virtual Box, run these commands to install Apache2, MySQL, PHP5 and Samba. More information can be found at this Digital Ocean page.

- If you forget to sudo something, you can type: sudo !! to repeat the previous code with sudo.
- You can run multiple commands by && (anding) them together. i.e. sudo apt-get update && sudo apt-get upgrade
- You can bypass the installation confirmation (Y/n) message by adding -y to the command. i.e. sudo apt-get install -y mysql-server

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

#install apache2
sudo apt-get -y install apache2
sudo apt-get -y install mysql-server libapache2-mod-auth-mysql php5-mysql
sudo mysql_install_db
sudo mysql_secure_installation
sudo apt-get -y install php5 libapache2-mod-php5 php5-mcrypt php5-curl

#add index.php to front of search for index files
sudo nano /etc/apache2/mods-enabled/dir.conf
sudo service apache2 restart

#to show available php install packages use
apt-cache search php5-

#for more information about the package use
apt-cache show package_name

#install samba file sharing
sudo apt-get -y install samba samba-common system-config-samba python-glade2 gksu

#install and set up Uncomplicated Firewall
sudo ufw allow 80 #web server
sudo ufw allow samba
sudo ufw enable
#option ports to enable depending on your configuration
sudo ufw allow 22 #ssh
sudo ufw allow 21 #FTP

You will also need a MySQL database administration tool, such as PHPMyAdmin or Oracle MySQL Workbench. The command below will install PHPMyAdmin on Ubuntu.

sudo apt-get install phpmyadmin
select apache2

If this is to be a production server, make sure to secure the access to PHPMyAdmin through the following Digital Ocean article. PHPMyAdmin can be accessed from any computer on the network via the server name or the IP address through a web browser. To find the IP address of the linux server type:


The IP address is provided by the network router and typically has the values 192.168.X.X or 10.0.X.X depending upon the make and model of the router. From the other computer (even the computer hosting the VirtualBox) in a web browser, you can type into the address bar: http://<ip address>/ and the default apache welcome screen should appear.

Apache2 Default Welcome Page

 On the Linux system, you can locate the default "www" folder at:


You will need to add your Linux user (<username>) to the "www-data" group and change the permissions on the "www"  and subfolders. It is not recommended to do work on these folders as the root user. To check which groups your user is part of, type:

groups <username>

To verify that "www-data" is a valid group type:

cat /etc/group |more

To add a new user to the group "www-data", type:

sudo useradd -G www-data <username>

To add your user to the group, type:
(It is important to add the -a, otherwise you will make the group primary for the user and remove other groups.)

sudo usermod -a -G www-data <username>

Create a samba password:

sudo smbpasswd -a <username>

To change directories to view and make modifications use the "cd" command:

cd /var

To view the contents of the folder with their permissions, type:

ls -l

This will give you the files, directories in a list format and tell you the owner:group permissions. They should say, "root:root" as the owner and group. We need to modify this to say, "<username>:www-data". To do this, type:

sudo chown -R <username>:www-data www/

-R makes the command recursive (i.e. will also change permissions on all sub-directories and files in the sub-directories).

If you create folders in here, they will also be folders on the website. For example, if you create a folder called "example": (We no longer need to use "sudo" in front of the commands, since we want all future files and directories to be owned by your username and not by root.)

mkdir /var/www/html/example

To view the new folder and its permissions, type:

ls -l

In the browser on the other computer, you can now access this new folder at the following url:

http://<ip address>/example

Image of Index of Example folder we just created

You will need a code editor. There are many out there. If you have one already, use it. If not, here is a list of some I've used, seen, and recommend.

Modifying the web content of the VirtualBox from your network system

There are many ways to modify content on a server. Since this testing server happens to reside on your network, it is easiest to access and modify this content directly. The main risk with this method is that there is a single copy of the content. Modifications you make remotely are irreversible once you close the text editor you are using unless you make constant back-ups of your site content. This should only be used for development and testing sites.

Earlier, we installed Samba. This is a software program that is used for file sharing to Windows and Mac based networks. We want to share the"html" folder to the network. Here is how:

cd /etc/samba
sudo mv smb.conf smb.conf.bak
sudo nano smb.conf

We went to the samba directory that is owned by the root user. We moved the Samba configuration file to a backup file. Now we are going to create a new one with the "nano" program. The code below will set up the Samba file share program. Make any modifications below to suit your needs. For example, "test_server" will be the server's name on the network and can be used in place of the ip address. (http://<ip address>/ == http://test_server/). Type: 

workgroup = WORKGROUP #this is where the computer will be listed on the workgroup
server string = Samba Server %v
netbios name = test_server #this is the name of the computer you will see on the network
security = user
map to guest = bad user
dns proxy = no
#=========================Share Definitions==============================
#Secured Share
[www] #This will be the name of the folder visible on the network
path = /var/www/html
valid users = @www-data #gives read and write access to these users
guest ok = no #yes, if you want this to be readable to anonymous users
writable = yes
browsable = yes

Press Ctrl+O to save, and then Ctrl+X to close. Now, to restart the Samba server with the new configuration, type:

sudo service smbd restart
sudo service nmbd restart

From your computer, you should now see a new computer called "test_server" on the "WORKGROUP" with a folder called "www" on the network. Unless you modified these values in the configuration file above. If you do not know how to access a computer from the network, you can try:


Click Start -> Run, and type:



\\<ip address>

I like to map this folder as a network drive for easy access. If you need help doing this, do a Google search for "map network drive".

Modifying Web Content

Now you have access from your computer to modify content on the web server you just created. Now we are going to create a little content. First we have to remove the Apache2 default web page. On the Linux VirtualBox, type:

mv /var/www/html/index.html /var/www/html/index.html.bak

On the system with the text editor, create a new file. Paste this in the new file:

<!DOCTYPE html>
    <head><title>My first page title</title>

    <h1>My First Heading</h1>
    <p>My first paragraph.</p>

When you save the file, call it "index.html". Be sure to save it in that new shared folder on the server. You can browse to it through the network, or type "\\test_server\www\index.html" in the File Name text box.

In your browser, access the url, "http://test_server/" and you should see your page displayed.

Installing the Training Module for 4thRecess

Application Architecture

We employ a module based approach to Application Architecture.  The 4th Recess SaaS Application Framework allows for modules to easily be inserted in any application deployment for immediate reuse.  Modules can be developed using existing SaaS Application Patterns, or can be custom developed to meet your specific business needs.  This technique reduces the development effort and cost, while greatly increasing the speed to market.

Account Management

The 4th Recess SaaS Framework provides a robust interface for managing your accounts and deployed environments.  The Account Management interface lets you view and manage your account payments, service and usage metrics, contacts, and service pricing.  From the Account Management screen you are able to administer billing and payments, automate late payment notifications, and manage the account closing process.


Our billing interface allows you to set up and test your merchant accounts and your billing preferences.  We provide a simple billing process for your accounts so that your customers will have enough options to accommodate their preferences.  Once we establish your pricing model, we'll configure your billing methods, timelines, and repeatable billing options.

Infrastructure Management

We're serious about our system infrastructure and managing your data.  Our infrastructure facilities use world class security and network components, along with multiple backup and recovery and disaster recovery options .  We provide a high-availability architecture to minimize the risk of any business disruptions caused by server or network failures.  We leverage Cloud technologies to provide elastic high-end performance and availability.

Help Desk

Your users won't be in the dark with our multi-level help desk options.  We provide several options for help ticket management and phone support.  Your clients will have several Service Level Agreement options available to them, promising a quick response to problems, and a quick turnaround for defect resolution.

Training & Support

Whether your users are savvy application experts, or internet beginners, we have their training needs covered.  We can provide person to person training, screen capture videos, online forums, FAQ's, and training documentation.  Whatever your situation, we'll work to ensure your Clients get up to speed quickly.

Authentication & Identification

We greatly value your application security and user privacy.  We have several methods available for user authentication and identification.  We can leverage an existing user repository, or create a new repository.  We provide multiple security policy features allowing you to setup and control the password structure, expirations, and multi-factor authentication.

Single & Multi-Tenent Architecture

There are multiple ways to develop Software as a Service applications.  Do you want your clients to have their own application instance and database, or should they be in a shared environment commingled with other accounts.  We'll help you understand the pro's and con's of each, and explain how these decisions will affect your pricing model and approach to change and configuration management.

Pricing Models

How do you determine the value of your applications, in the context of your market and the services you are delivering?  We'll help you understand the tradeoffs involved in your pricing choices, and help you establish a long term pricing strategy.

Once you've decided on your pricing model and application features, we'll assist you in developing a straightforward sales strategy.

The 4th Recess Software as as Service Framework provides the fundemental components of a robust, dynamic reporting engine.

Go to top