yes it is.
You first have to decide where you will store it, but this would probably belong to user home, may be his profile|preferences here (there's no obligation here). /home/users/u/user/profile|preferences/...
Think about ACLs and if the data you want to manage follow specific rights different from the profile|preference node, create a new one with its own ACLs.
that's it if you just want a store/retrieve feature: now that you decided the location, just
use POST for writing data
use UserPropertiesServlet to retrieve it http://dev.day.com/docs/en/cq/current/javadoc/com/adobe/granite/security/user/servlets/Use rPropertiesServlet.html
If you want fancier feature around that (presence of it in the context store, ability to load those data in the context store, dynamically change it, ...)
you have write a/several context store components like the one in /libs/cq/personalization/components/contextstores
Thanks for the reply Nicolas. I understand that we can store user preferences under /home/users/. But an employee can customize anything from pages to themes to bookmarks to widgets etc
Is that recommended to store huge customized data for each employee in CRX repository?
well, there's no specific restriction around that. How many users, what average set of customization do you plan?
Its a corporate level portal so anywhere between 20k+. Few other questions:
1. how do we achieve customization of themes? We want users to select color/theme for their pages from a available list.
Is there anything available OOB with CQ5.5 to dynamically load CSS?
2. How to let Users personalize portal pages by adding, removing, positioning content or portlet attributes (for e.g., zip code for weather portlet)
3. Document Management by users to be able to upload/view documents. Can we upload documents to DAM and have access control to it based on logged in user?