Optimizely Shell contains a profile API store for storing editor settings; similar to the ASP.NET profile but more practical to use and has a client API available for Dojo components.
## Client API
### Initialize the client profile object
Usually, the client profile is registered in the service locator where multiple components can manipulate the same profile and observe changes on the profile. Optimizely Content Management System (CMS) already performs this initialization so it you do not have to when you create CMS components.
### Access and store the global profile object on a component
To work with the client profile, assign an object field during component initialization.
### Read from the client profile object
To access values in the profile, use the `get
` method.
### Write to the client profile object
To set values in the profile, use the `set
` method.
### Observe changes to the client profile
The profile is a Dojo observable object and you can use the Dojo API for observing changes.
## Server API
This section shows how to use the Shell profile from server-side code.
### Read profile data
To read profile values, use the profile repository.
### Write profile data
To set profile values programmatically, get a profile using the profile repository, change it, and use the save method on the profile repository. Keep in mind that the value must be a type supported by DDS.
### Give new profiles default values
Setting values on a profile involves listening to events on the profile repository, and manipulating the profile object before it is used for the first time. A good place for doing this is in an initializable module.