At the time of this post, Fred is still in development, but all systems have been already designed and specified.
The stack so far is quite complex, because of the mixed languages and frameworks, but they complement each other.
- Individual native apps for Android (Java), iOS (Objective-C, sorry no Swift – edit: yes, now we also accept Swift) and Windows Phone (C# and yes, we care about WP).
- Chat server: XMPP with ejabberd, with modules being written both in Erlang and Elixir.
- Non chat backend and Restful APIs: a bit in Elixir and Phoenix and most of them in PHP and Slim (even although Fred is still in development the PHP code is legacy already, but we can’t just replace it at the moment because it is a huge e-commerce and authentication API, but eventually we’ll migrate everything to Elixir and Phoenix).
- Bots: Python and Elixir.
- Messaging database: Riak (edit: we are using Cassandra now).
- Main database (accounts, bots, transactions, etc.): PostgreSQL.
- In memory stores: ets and Redis.
- Queues: RabbitMQ.
- Admin dashboards (bot creation interface, user management, etc.): AngularJS.
- UI design: Sketch 3.
Hopefully we won’t go crazy with all these mixed languages, frameworks and platforms – but who knows, specially that we are in crunch time for the past 3 months and we’ll probably be for an additional 4 months
Image source: official ejabberd site.