Over the last days we revisited the entire stack, cleaning up the code and improving the design until we were happy with it.
We've polished these functionally distinct pieces:
- Registration flow.
- Login/logout and authentication details.
- Discovery feed - equivalent of a facebook newsfeed, with infinite scrolling.
- Chat, delivering messages and presence notifications reactively.
- Reactive navbar.
- Profile view with public and private photos, liking and ability to favorite.
That covers only functionality polished from front to the end. We also have backend implemented for the rest of the system (drafts, favorites, online lists, reviewing, alerts, history, flirts etc).
Facebook Flux Architecture was a pleasure to work. It is more simple and elegant than any other web UI stack I've worked with before. Composition and reuse of UI components is superb.
Flux methodology would be quite familiar to anyone who has dealt with CQRS/ES concepts before. It is very easy to reason about and leads to clean and intuitive codebases.
We used isomorphic Flux components from Yahoo to speed up our development (the ones from the next version of Yahoo Mail), basing the initial frontend layout on the chat sample from Yahoo.
To summarize. Our tech stack and software design went through many iterations. We optimized for:
- simplicity of the code and design;
- performance and scalability;
- ability to evolve, grow and perform A/B testing;
- ability to develop and maintain with very few people.
Resulting design looks quite simple:
This combination of technologies and tools is optimized for a growing social web site with 600000 members (50% of them - active) and planned expansion to multiple countries. All that - with a limited development effort and resources.