BizDoc Online Overview

Jump to the section you’re interested in:

  1. The Story Behind Me Taking Over BizDoc Online
  2. The Creation of BizDocOnline.net for Account and Website Administration
  3. The Re-Creation of BizDocOnline.com with a Properly Normalized Database

The Story Behind Me Taking Over BizDoc Online

The BizDoc Online Web Application began as a joint effort between Instructional Software, Inc and Nevada Corporate Headquarters, which employed a web development team in India to produce a website called corporationdocs.com. Nevada Corporate Headquarters paid for the development team in India and Instructional Software agreed to help produce the website. In exchange, Nevada Corporate Headquarters could use the application with its clients for free and Instructional Software, Inc could sell access to its own version of the web application on another website.

I was brought in to test this web application late in development, after the database and framework were pretty much laid out, but there were major functionality problems as well as improper English in the legal documents produced by the application.

The most frustrating thing for me as a QA Tester was when the problems that I posted to GoogleDocs were marked as fixed by the development team and then when I went to test it again, nothing had been fixed. This occurred over and over again and many exceptions were made to try to get a working version of the website.

Eventually Nevada Corporate Headquarters pulled the plug on the project, but I was allowed to download copies of the website and the MySQL database.

Everything became clear when I looked at the database. In fact, I had first gotten copies of the website and the database toward the end of my work with the development team in India. I can’t be too specific about the problems with the database since this is a website in production for my employer.

Rather than doing more videos on the problems with the functionality on the website, I did a video from within the PHPMyAdmin GUI explaining database normalization and the various ways in which the database was violating first and second normal form.

My recording was rejected by the project manager, who said that they would have to completely reconstruct the entire framework of the application in order to do the things I was suggesting. He was correct about that and I seriously feared for the project. Even if they could repair all the holes in the stock register and the various bugs throughout the entire application, there was no way the application could serve any sizeable client base in a professional capacity without a properly normalized database.

In addition to the various database problems their use of the CodeIgniter framework was very sloppy. For the user section of the site, they had a login controller, controllers for document and report creation and only one controller for all the various forms throughout the rest of the user section of the application. This meant that one file contained over 11,000 lines of code for various different forms and this one file hooked in throughout dozens of different views.

Their use of javascript and jquery wasn’t much better. They had one header file for the entire front end with a long list of jquery plugins linked in to every single page regardless of whether it was used on that page or not. This was one of the many reasons why their application ran so slowly.

A developer working for Nevada Corporate Headquarters took over the project for a while and I felt sorry for him having to work with such a mess. It wasn’t long after this that Nevada Corporate Headquarters completely gave up.

The Project Manager then allowed me to do what I had suggested with the database and completely reconstruct the entire framework. The HTML and CSS for the web site’s pages was fairly well done, but out of date, so I updated it to make it responsive as shown here.

One of the first things I did was to throw away their administration section of the web site and create a WordPress site for the administration. We were already planning on doing this because the administration section was designed for use with Nevada Corporate Headquarter’s clients and we wanted to offer these services to clients through resellers.

The Creation of BizDocOnline.net for Account and Website Administration

Unlike with BizDocOnline.com, the HTML and CSS for BizDocOnline.net were designed and created entirely by me, using the Bootstrap 3 framework.

BizDocOnline.net is the entry point for all resellers seeking to use BizDoc Online services and for anyone seeking to learn about the application’s features or learn from the online tutorials. A reseller account must first be created on BizDocOnline.net before anything can be done with BizDocOnline.com.

For the front of the web site, where visitors are introduced to the application, I created four custom post types. Below are examples of each of the four custom post types in action on the BizDocOnline.net website along with links to posts where the custom post types are described in more detail.


The Features Custom Post Type leads to descriptions of some of the more prominent features in the application

The Tutorial Custom Post Type contains various tutorials for how to use BizDocOnline.net and BizDocOnline.com

The FAQ Custom Post Type allows website administrators to quickly and easily add frequently asked questions and their answers

The List Custom Post Type contains lists of the documents and reports used in the application

There are also several custom WordPress administration pages, which I can’t show here for security reasons. These allow updates of urls to things like Secretary of State pages for the Online Resources page and other links found elsewhere in the web application as well as allowing updates to the document templates for the Create Documents page.

The registration process involves vetting any potential companies to make sure they’re legitimate companies before creating their accounts and, since the clientele is so specific, the websites are both hidden from web crawlers using robots meta tags in order filter out the vast majority of spam and potential hacking attempts.

Once a Reseller obtains a BizDoc Online account, the Reseller section of BizDocOnline.net can be logged into.

This is where administrative activities can be performed related to the accounts.


From the Manager Console page, the reseller can choose to create clients, select a client account, or view all the reseller accounts for the business service company and their monthly charges

Once a client is selected from the left hand sidebar, the reseller can perform administrative activities for the client account or log in to the client account on BizDocOnline.com by pressing the button at the top of the Edit Client form.


From the Edit Client page, Resellers can perform administrative activities for their client’s accounts or log in to that client’s account on BizDocOnline.com

For more specific information about the BizDocOnline.net website, click one of the links below:

  1. BizDocOnline.net
  2. The Features Custom Post Type for BizDocOnline.net
  3. The FAQ Custom Post Type for BizDocOnline.net
  4. The Tutorial Custom Post Type for BizDocOnline.net
  5. The List Custom Post Type for BizDocOnline.net
  6. WordPress AJAX Functionality for User Change Logs

The Re-Creation of BizDocOnline.com with a Properly Normalized Database

Once the original bizdoc database was normalized and combined with the WordPress tables for BizDocOnline.net, I completely reconstructed the entire framework for BizDocOnline.com and modernized the html and css from corporationdocs.com.

Login Page

One of the first changes I made was with the login. The login for corporationdocs.com looked like nothing more than a sloppy template drawn from the logged in portions of the site with the login in the upper right corner of the page where the logout button is located after logging in.

Since the BizDocOnline.net website already contained all the marketing and informational related material, I decided on a very straight forward no nonsense login page with the login and password reset buttons front and center. Below is a video illustrating the difference between the two login pages.



As I say in the video, I did modernize a lot of the HTML and CSS used in the application to make it responsive. To learn more about what was done click here.

Updating Javascript and jQuery

Along with updating their HTML and CSS, I replaced a lot of their jquery plugins with my own vanilla javascript and jquery functions. Below are links to examples of some of the things I changed.

  1. Vanilla JS Drop Down List instead of ddsmoothmenu.js jQuery Plugin
  2. AJAX SELECT Request to Decrease Page Load Time for Create Documents Page
  3. UX and Functionality Improvements for Image and Document Storage and Insertion
  4. jQuery AJAX INSERT Instead of GET Requests for the Create Documents Form
  5. Vanilla AJAX SELECT for Owner Meeting Attendees
  6. JQuery AJAX DELETE for Simple Owner Register
  7. Vanilla AJAX SELECT for More Intuitive Resources Page UX
  8. CSS Loading Animation with jQuery fadeOut instead of Using GIF Image

Welcome Page

For the initial welcome page, rather than just having a welcome message, I also included a drop down list for changing their current time zone. This is used to help determine the date and time that will be inserted in to documents and reports.


Select from a long range of options for maintaining records, including a list of Client options for performing administrative activities from within BizDocOnline.com

Company Profile, People Profile, and Titles & Responsibilities

I normalized the relationships between the Company Profile, the People Profile, and the Titles and Responsibilities forms shown below, updated the CSS and HTML, and completely redid the Javascript front end functionality and the PHP back end functionality.


Store Company Data that can be inserted into dynamically generated and professionally written corporate legal document templates

Store Data for People associated with the companies in the company profile

Set titles for people associated with companies in order to determine whether to insert them into documents and reports

Group Owners

The Group Owner form also involved a badly designed database table, which had to be normalized and I updated and redid a lot of the same things I did for the other pages.


Record data for groups of owners not found on the people profile or the company profile forms

Meetings

The Meetings form involved yet another badly designed database table. Rather than a multi-valued company field, this table had a multi-valued attendee table. Another problem was with not accounting for ownership at the time of the meeting. Everyone currently marked as an owner in the stock register table was included in the list of attendees at owner meetings regardless of whether the person owned certificates on the day that the meeting took place. For information on how this was handled using AJAX click here


Store meeting data for companies, including the location and attendees, and insert the data into professionally written document templates

The Two Owner Registers

There are two different owner registers. One owner register is a simple owner register that I constructed on my own for companies that don’t change ownership. An image is shown below.


Store simple ownership data for companies that don’t change ownership

The stock register is much more complicated and is used to track transactions for a company over time. Problems with this portion of the website and the Create Documents form were the foremost reasons for Nevada Corporate Headquarters abandoning the project before I took it over. Below is an image of the Stock Owner Register with links to the five different Stock Register forms.


Use the Stock Register forms to track stock transactions and dividend distributions for companies that have frequently traded ownership

In order to learn more about the specifics of how the Owner Register works and how I improved on the original interface, click here.

Resources

The MySQL database table for the Resources form had severe normalization problems, which I can’t fully describe since this is a website in production for an employer. This form has six different options, including Resident Agents, Accountants, Attorneys, Bankers, Brokers, and Realtors as shown below.

To view a video displaying improvements made to the Resources form click here


Store data about Resident Agents, Attorneys, Accountants, Bankers, Brokers, and Realtors that can be automatically inserted into documents

Create Documents

Once all the data is entered, it can be inserted into the documents on the Create Documents form. As stated above, this form was one of the main reasons for Nevada Corporate Headquarters abandoning the project.

To view a more detailed account of the problems with the Create Documents form and how I fixed them, click one of the links below:

  1. AJAX SELECT Request to Decrease Page Load Time for Create Documents Page
  2. UX and Functionality Improvements for Image and Document Storage and Insertion
  3. jQuery AJAX INSERT Instead of GET Requests for the Create Documents Form

Insert data from the database into over 200 professionally written document templates

Saved Documents

Once the documents have been created, they can be downloaded into one of four different formats or saved to the database. Documents that have been saved to the database are presented in the Saved Documents form.


View, edit, or download documents that have been saved to the database from the Saved Documents form

To see more detailed explanations about BizDocOnline.com click one of the following links:

  1. BizDocOnline.com
  2. Vanilla JS Drop Down List instead of ddsmoothmenu.js jQuery Plugin
  3. AJAX SELECT Request to Decrease Page Load Time for Create Documents Page
  4. UX and Functionality Improvements for Image and Document Storage and Insertion
  5. jQuery AJAX INSERT Instead of GET Requests for the Create Documents Form
  6. BizDoc Online PDF, DOCX, RTF, and ODT Document Downloads
  7. Vanilla AJAX SELECT for Owner Meeting Attendees
  8. JQuery AJAX DELETE for Simple Owner Register
  9. Vanilla AJAX SELECT for More Intuitive Resources Page UX
  10. CSS Loading Animation with jQuery fadeOut instead of Using GIF Image