Writing modular / composable phoenix code

Hi, my current Phoenix project involves a website with a lot of different functionality, like a digital store, chat system, file uploads, blog posts, comments, etc. How can I go about developing this project so that each feature is a self-contained unit that I can reuse in future projects? For example, how can I make the digital store (with its contexts, views, templates, routes, etc) a unit that can plug into the project and plug into future projects? I know Django has a concept called apps that serves this purpose. Does Phoenix have a similar feature? I have seen people mention umbrella projects and I have made a small umbrella project before when I read the book “Programming Phoenix”, but I am not sure how to go about splitting these features so that they are almost pluggable. Any advice is appreciated and I would like to know how some of the more experienced Phoenix developers reuse code between projects to avoid reimplementing functionality.