Как я это вижу - Когда пользователь логинится в приложение, нужно открыть соединение по вебсокету с сервером и слушать различные события.
стили
input[type="checkbox"] + span{background-repeat:no-repeat;
background-position:left top;
display:inline-block;
width:21px;height:35px;
vertical-align:middle;}
input[type="checkbox"] + span{background-image:url(data:image/png;base64, ....картинка... );}
input[type="checkbox"]:checked + span{background-image:url(data:image/png;base64,....картинка...);}
верстка для чекбокса
<label><input name="" type="checkbox" ><span tabindex=целое_число></span> текст пояснение </label>