# Recipes

- [Writing a Single Page Application](/elm-cookbook/recipes-1/writing-a-single-page-application.md)
- [Share state across pages](/elm-cookbook/recipes-1/writing-a-single-page-application/share-state-across-pages.md)
- [Debounced Validation](/elm-cookbook/recipes-1/writing-a-single-page-application/debounced-validation.md)
- [Reusable views](/elm-cookbook/recipes-1/writing-a-single-page-application/reusable-views.md)
- [Making impossible states Impossible](/elm-cookbook/recipes-1/making-impossible-states-impossible.md)
- [Non empty lists using Zippers](/elm-cookbook/recipes-1/making-impossible-states-impossible/non-empty-lists-using-zippers.md)
- [Restrict records using Opaque Types](/elm-cookbook/recipes-1/making-impossible-states-impossible/restrict-records-using-opaque-types.md)
- [Write safer functions using Phantom Types](/elm-cookbook/recipes-1/making-impossible-states-impossible/write-safer-functions-using-phantom-types.md)
- [Designing Elm package APIs](/elm-cookbook/recipes-1/designing-a-api.md)
- [Create upwards compatible APIs](/elm-cookbook/recipes-1/designing-a-api/create-upwards-compatible-apis.md)
- [Future topics](/elm-cookbook/recipes-1/future-topics.md)
