Now Multi-tenant Real Estate web app

This app consists of a consumer facing web site and a separate web site for content creation and administration. Target customers are real estate agents who can add their properties for sale or rent. Every agent will have their own custom domain where end users can look and search for properties. Their search criteria will be stored locally on their device so they will only see the kind of properties they are really interested in. They can request a daily or weekly emails of new properties filtered by their search criteria and they can schedule a date and time to inspect the property.

Technologies used:
Node.js, Vue.js, Vuetify, AWS API Gateway, AWS Lambda, AWS Dynamo, micro-services, App Manifest, Geo-location, Offline caching, JSON Web Tokens, AWS CloudWatch logging and monitoring, AWS Simple Queue Service and AWS Simple Email Service.

signal sender image
Real Estate Progressive Web App Admin page

Both sites are built as Progressive Web Apps using geolocation to show properties near you and push notifications for notifying users of new properties and other issues. It will use a lot of caching to make the app super fast but also save a lot of money on hosting and data transfer costs.

The backend will be totally serverless, meaning there will be no servers to maintain or to setup thereby paying only for what you use. The backend uses the AWS API Gateway to sanitize inputs and AWS Lambda functions to handle processing. For example; when an agent uploads a new image, it will be automatically optimized into different sizes to show on different devices. Finally, the data is stored in an AWS Dynamo NoSQL database and images are stored in AWS S3 buckets. The web sites are cached with AWS CloudFront CDN to move images closer to the user's location.

In later versions we will add a blog and/or news section to keep users informed about any developments on the real estate market. This is a multi-tenant system, including a user subscription service with recurrent payments requests.

2017 Cloud Trade Copier

The Cloud Trade Copier is a cloud based Binary Options Trading System system where Signal Providers send signals to the service using a web based interface. When a signal arrives, all the subscribers to that signal are gathered from a Redis in-memory key-value store. Per user we check to broker they use and send the signal to other micro-services (one ore more per broker) that will send the purchase transaction to the broker's server.

Technologies used:
Node.js, Express.js, MongoDb, Redis, Websockets, Vue.js, Bootstrap CSS, queues, micro-services, JSON Web Tokens, Docker, PM2, Jelastic, Winston logging and Loggly logging.

signal sender image
Cloud Trader administration web site

The front end website is a responsive design built using Vue.js and Bootstrap. It's used for generating signals and gives the Signal Provider feedback on this performance and his customers.

The system has it's own subscription system where end-users can subscribe and join the channels of Signal Providers. The front end is stateless and uses JWT (Jason Web Tokens) for authentication and authorisation. It's role-based where Signal Providers can designate other traders to send signals on their behalf. The front end is a static site hosted on AWS S3 buckets and uses AWS CloudFront as its Content Delivery Network.

The backend consists of a collection of loosely coupled micro-services using node.js as the run-time. In Options Trading fast execution speed and low latency is the most important feature. By implementing all functions as micro-services that can run in parallel on different servers we can simply scale horizontally to keep the total throughput under the required one second, no matter how many users the system has to trade for. We just add more instances of services.

The main service will receive signals via a websockets interface and add add every user who subscribed to the signal to a Redis in-memory queue. The users are also stored in the same Redis database for ultra-fast retrieval. When all applicable users are added to the queue, the service will send a message via websockets to all broker services.

Upon the reception of the message the broker service will fetch a user from the queue and process the signal. When done, it will get a new user from the queue until the queue is empty. It will then sleep until it gets a new message. This way multiple instances of the same broker service act as workers to process the queue as fast as possible. Below is a code snippet from the signal-service finding and adding users to a queue. Note: the code is all ES6

The system also uses a Mongo NoSQL database for storage of users, their expiry dates and their trading results. Mongo however, is too slow for retrieving users while a signal is received. When the main service starts, all valid users are copied to the Redis in-memory store. When a new user is added or removed the API server will signal the signal service via websockets and a user is added or removed from the Redis store

All parts of the system, except the front end are hosted inside Docker containers using the node process manager PM2 and running on a Jelastic hosting platform. PM2 monitors the node processes and gives feedback about their performance and can automatically restart any crashed process it manages. Jelastic is a platform for running services and provides automatic horizontal and vertical scaling.

Lastly there is a separate API server for serving data to the front end web site, all protected by Jason Web Tokens. The API server is built with node, express and MongoDb. The API server is behind a load balancer to improve resilience and enable A/B testing with different implementations of features. It also enables updating code with zero downtime.

Click here for a code snippet of the signal service

2016 Windows and Mac Desktop Trade Copier App

This Binary Options Trade Copier Desktop app for Mac and Windows accepts messages from private Pusher channels and will execute a trade on the website of one or more brokers the user has an account with.

Technologies used:
Electron, Node.js, jQuery, Express.js, MongoDb, Jason Web Tokens, Docker, Pusher, Winston logging and Loggly logging.

signal sender image
Desktop Signal Sender program

This Desktop app is built with node, html and css, together with Electron. The latter is a sort of a shell program that includes the Open Source Chromium browser together with the V8 Javascript runtime. Electron creates full native desktop programs but using html/css/js. It has full access to the file system and any other native resource. It also allows you to inject javascript into existing websites. This function is heavily used in the Desktop Trade Copier.

The user chooses from a number of available brokers, enter their credentials and set some money management settings. When a Signal Provider enters a trade in a special Desktop app created for that purpose, that signal is sent to our server, validated and forwarded to pusher.com, a messaging service. The user's Desktop Trade Copier app, receives the signal and our custom code that was injected into the broker's web site, is clicking the right buttons and filling in the required fields.

This app utilizes jQuery in many places for getting screen objects and firing events. It supports ten different Binary Options brokers. It also includes a user subscription service with automatic expiries.

signal sender image
Desktop Trade Copier with Settings screen

2005-2013 Complete Bookkeeping Program Windows

A Windows Desktop program for bookkeeping created for the Dutch market. We did the design, architecture and programming of this app. At it's time it was a refreshing new approach to accounting and got thousands of users. The goal was to make it as easy as possible for non specialists to do keep their books up-to-date

It's created using C# and other dot.net technologies. For storing data it uses MS SQL Server and for the User Interface DevExpress libraries were used. DevExpress made it very easy to adapt screens to your own preferences. Exstensive reporting is an important feature of this product.

Technologies used:
C#, Dev Express, SQL Server

signal sender image
Bookkeeping program for Windows