Customizable Dashboards

Is it possible to create a collection of panels (or widgets) that users can select from to then build a dashboard that meets their individual needs? It would need to be persistent across sessions and not allow them to edit anything other than what appears on their own personal dashboard.

Thanks.