about architecture - N4SJAMK/teamboard-meta GitHub Wiki
Architecture
Current System
teamboard-client-react
The client application is a fairly simple SPA (single-page-application).
The user interface is split into components, which are implemented with ReactJS. The application follows the Flux architecture, with ImmutableJS used for Stores.
As you can see, all the remote data will flow through as actions, similarly to what actual user would create when using the application.
teamboard-api
Express4 service with Mongoose for MongoDB abstraction.
- Provides API for authentication and resources. In the future, the API should for resources should probably be separate from the authentication, expect for checking tokens and stuff.
- Authentication uses
bcrypt
. - Actions generate
Events
, which are emitted usingsocket.o-emitter
. - The API is initialized with the experimental
cluster
module for multicore support.
teamboard-io
Socket.IO service that is used to transmit the events from teamboard-api
to
teamboard-client
.
- Uses
redis
as a MemoryStore to enable easy scaling and automatic handling of events originating fromteamboard-api
. - Supports only
board:join
andboard:leave
as user emitted events. - Emits 'board:event' for various
Events
.