I'd use provider hosted app, meaning that you build your application with whatever browser supported technology you like, and bake that into sharepoint Add-In. Depending on the data and amount of it, you can decide whether it is better to be stored in SharePoint list or in Azure SQL or some other online data storage.
There isn't really any strict guidlines when to store what where, but if you have lots of data, then consider SQL based storage. If users need to be able to update data, or you don't need to store lots of historical data then use SP list based storage. Roughly said, if you'd need to have more than 5000 rows of data, then consider SQL based storage over SP list based, although that is NOT a strict limit of any kinds.
Benefit of SP list is that you have ready-made UI for viewing data and updating it, with custom app, you need to custom build both.
Provider hosted app is basically a IFRAME showing your application, and from that application you can access SharePoint via client side object model (CSOM).
For lighter applications, I'd use SPFx, but there isn't really anything against using that for multi-page apps either.
About Provider hosted app
About SPFx