What are the basic features of a modern web application? The short answer is user management: every application requires both authentication and authorization. A typical design of user management in an enterprise application is that authentication is only partially implemented, i.e. no registration protocol and direct modification of user account data in database. But let me be frank, both browser and desktop applications should use same procedure: if user does not have an account, he/she should create one using standard account registration protocol. Also, a user should not be forced to contact system administrator if he/she loses the password, but rather, use one of the de-facto recovery protocols. Authorization is typically done with application level roles (should be different from the system level roles!): it gives authenticated users access to protected resources when they have been assigned to a role that has required permissions.
The basic blocks should be easily accessible in the static header (cf. Facebook header) which is a popular design nowadays – especially when a mobile navigation button is introduced. The following sections discuss what buttons and menus should be available to a user.
System settings (single button). This is for controlling displayed properties of the system. For example, a user landing on a web page usually wants to change the language to be his/her native language. However, the native language might not be supported and therefore it is different from the users language in the account settings.
User settings (single button, or a sub-menu). This explains what kind of data is needed from the user to have an account in the system. Minimum for user settings menu consists of 1) Account information (e.g. name, mobile, email, address, etc.), 2) Localisation information (city, country, continent, time-zone, currency, etc.), and 3) Credentials information (user password, email, mobile (for 2-FA)).
Sign in / out. (single button, display “Sign in” if user is not authenticated, and “Sign out” if user is authenticated). “Sign in” option should have also an option for recovering a lost password. This process should require both a email address for the username and a mobile phone number (MSISDN) for a secondary authentication/authorization mechanism (e.g. two-factor authentication).
Sign up / as. (single button, display “Sign up” if user is a guest or has no account in the system, and “Sign as” if user has an account in the system and has several application roles (levels), like manager, operator, administrator, etc.) “Sign up” basically means registration and signing “as” means switching application role (i.e. changing role) to another (role level elevation should user 2-FA request-response challenge (two-factor) authentication and not require extra passwords because the system would have to handle them too, which would just add complexity for no reason. And yes, switching roles should be a separate menu and “immediately” reachable, i.e. one button click.
Tasks (single button, reveals more features). A feature group for assigning tasks and marking them as done on completion. This feature is meant for individuals and groups, and it is typical at least in any enterprise software that models business processes. Often tasks are basis for monitoring and measuring performance of a organization like corporation, that is “money-meter”.
Messages (single button, reveals more features). A feature group for writing and reading messages that are either individual or bound to objects (like tasks). Basically way of commenting and carrying out conversations between individual people and groups of people. C’mon, Facebook has messages! And comments are everywhere on the modern Internet.
Notifications (single button, place for alerts) Notifications, or alerts, represent meaningful events: events can be related to tasks, people, performance, statistics, conversations, comments, etc. Typically, if you see a notification it means that you have to react to it: read it or do something. For instance, a notification could arrive if you have not done something on time or there is a DL approaching.
People (optional). This is not a typical or common feature. But actually it could be very powerful. It allows a person in your company to find people and attach them to groups (open or closed, join freely or by and invitation). Perhaps this should be understood as “helping people to organize themselves”. Social media uses this heavily…
Search box (optional). Search anything from application. Makes user experience (UX) better and helps people be productive. Downside is that building an effective search is a difficult and tedious tasks. Typically meant for self-help…
Help box (optional). Again, this is a feature that improves UX and makes any system more usable. Although, people tend to ask from other people, this kind of a feature that saves employees’ and their co-workers’ time. Could be just a link to another page with more information or help chat, etc…
Logo and mobile button. Logo is for building brand and mobile button is a button for further menus and sub-menus – useful especially in mobile devices. Continuously gains popularity!
This is the bare minimum for building an enterprise application. But nothing prevents you from starting for instance with a combination “sign in, out, as, and up” and proceeding from there! These actually steps I am taking in my new open source project called JeePlate (check out my Github account from About-tab).