PCG is a financial services application. This application manages various investment themes and
investors can choose themes to invest in, allocate funds and move their money across different
themes as desired. The application will present an overview public page that requires both
prospective and paying clients to register/login for more information.
There are mainly 2 different types of users for the platform:
1. Perspective client
2. Paying client
Any visitor to portal can register themselves to gain access to login restricted information. After
visitor got register, the admin staff reviews information and allow/grant access to the secured
area. Only limited information can be accessed by the Perspective client. When any perspective
client signs contract and mutual agreement with PCG, the PCG Admin then converts the
perspective client into a paying client. The paying client can view their portfolio performance,
buy/sell any theme, do fund transfer from one theme to another etc.
PCG is expected to operate automatically for all the transaction related operation. There are 3
rd
party APIs which provides the real time data with respect to theme, client and overall
performance statistics which are highlighted on the portal for clients to review and track. System
will pull raw information like individual trades in the portfolio and performance statistics for each
piece of the portfolio. However, to the user it will present % day-to-day/monthly/quarterly
increase or decrease from previous for each piece of the portfolios.
The following four-tier development approach was adopted to equip the site with
numerous features and functionality mentioned before:
• The Database layer containing MySQL Server Database, Tables, triggers and so on.
• The Data Access layer managed by Doctrine 2.x which containing the Data Access DLL
responsible for accessing data from database.
• The Business Logic layer consisting of all business logic procedures for modules.
• The User Interface Layer which forms the Graphical User Interface of the website. This
part/aspect of platform is built using Symfony’s View layer.
Operating System &
Server Management
Red Hat Linux OS, Multi-Server Architecture with Staging &
Production Environment through Version Controlling releases, Server
Optimization, Security & SSL Implementation, Scheduler for Back-ups,
Alert Monitoring System Integration, Server Performance Tuning at
regular intervals, Software Firewall Configuration & Maintenance
Development Tools &
Environments
PHP5+, Symfony Framework, Microsoft Visio, NetBeans IDE, Java
Script, HTML5, CSS3, SVN etc.
Database MYSQL Database Server, DB Clustering, DB Optimization, Master
Slave Replication, Query Optimization, Scheduler for Backups
The design approach was built around Symfony 2.3 and MySQL SERVER 5 due to the affiliate
nature of the website. Symfony 2.3 is used in order to follow rapid application development and
do not repeat yourself (DRY), Keep it simple stupid (KISS) principle. Symfony 2.x have many
community contributed bundles available which helps to make development really faster,
efficient and more reliable for platform building.
Symfony 2.x has been used in order to keep platform more secure, stable and easy to maintain.
In order to most effectively access the database in an object-oriented context, an interface
translating the object logic to the relational logic was used to communicate with the relational
databases in an object-oriented manner. Doctrine 2.0 is used for database interaction layer. An
intermediary abstraction layer was created for accessing data from the database. Triggers, store
procedure and custom MySQL functions were used for complex calculation of data from multiple
tables and were utilized in heavy conditional syntax to ensure smooth performance of the
website.
The UI layer was kept free of any business logic with images, applications and data being called
from their respective servers. Web usability guidelines provided and supported by Twitter
Bootstrap bundle/package were strictly followed during development and the interface was made
easily navigable through judicious use of AJAX, CSS3 and HTML5 controls.