One way of organising the app that I felt the right balance across small and big apps is this

| app (for expo router)
    |-- (public)
        |-- (auth)
        |-- (protected)
            |-- (tabs)
            		|-- home
								|-- settings
								|-- profile
						|-- notifications
						|-- messages						
        |-- (common)
| src
		|-- components
		|-- containers
		|-- providers
		|-- state-management
		|-- infra
        |-- storage
        |-- database
        |-- services (apis)
    |-- utils