How to Design Software — Tags and Groups

Learn how to design a tagging system and provide the ability to order, filter, group, or organize records based on some arbitrary properties.