From January to September of 2011 I was the sole front end developer for a new global financial application built from scratch for a Hong Kong based company called Investlab. Created as a cost effective solution for bankers and their clients to access global markets, it was architectured in a very modular way, with nearly all areas as self contained widgets that could exist in any configuration; working alone or inter messaging other widgets.
The backend architecture used JMS brokers, ActiveMQ and STOMP for messaging, keeping everything in cache rather than as database objects. Passing data through a socket connection to the front end, Flex utilized a number of very interesting frameworks to allow a very quick and clean modular approach.
PureMVC and it’s subset Fabrication allowed me to create Flash a multi-core (a sort of multi-singleton approach) application using multiple flex modules built from the same value objects, models and interchangeable views while retaining their own controllers. PureMVC’s multicore has a utility called ‘Pipes’ (think plumbing) that allows the modules to communicate, but Fabrication really came in handy as it did all the heavy lifting of ‘fabricating’ the piping structure; allowing one to send messages from one module to another with ease. For example if moduleA wants to send a message to all modules within the main application it would do so as “*” and all modules could receive that message if interested; if moduleA wanted to communicate with moduleB it could do so as a named module (i.e. “/modules/moduleB”). Or multiple instances of the same module could receive a message sent to ‘/infoModules/*’ etc.
Programming as modular widgets allowed us to revisit exactly how the user would interact with the system easily, and within this short time frame there were a number of developmental changes and tests. Taking a bit of the unused Verizon interface I tried to sketch out some ideas on how the application could function, this one based on initial ideas given to me.
I was also asked to mock out a version the way I thought would be best, in this case I thought a tablet / iPad application would work really well.
The demo at this point is nearly a full featured product, saving data to the cache and taking orders through the rules.
The ability to create users and accounts, attribute them to a firm, give each account a base currency and country. Users can trade on multiple accounts, tracking orders, lots and balances. A user can look up symbols on multiple exchanges under multiple currencies, seeing historical data or recent news articles on the symbol before putting in an order.