What is an App
An app is a standalone bundle of data and functionality. It contains the green and blue parts of the following diagram + any kind of additional material used to build these parts like JavaScript frameworks which are bundled in the App:
Everything belonging to the App is stored in these locations
- The App folder contains all the green parts in the image above, including templates, C# code, JavaScript files etc.
- The database contains all the data of the app
- The ADAM folder contains the Assets for the App items
Important
An App doesn't need all of the parts above. Apps can be really trivial.
For example they may only contain 1 simple Hello World
template and no data at all. And they may also contain 100'000 data items and complex list/details templates.
Apps are Installed per Site
The EAV is multi-site capable and each Site in the platform corresponds to a Zone in the EAV. A Site corresponds to a Portal in Dnn or a Site in Oqtane. Each Zone contains at least 1 default app called Content and additional Apps as configured.
Note
The ZoneId is usually different than the Dnn PortalId or the Oqtane SiteId, so Dnn has a PortalSetting to connect this and Oqtane has a matching Setting.
Tip
Apps are installed per Site. So if your platform has multiple Sites, then each site can have different apps, or the same app may be installed multiple times.
Types of Apps
Your App can be anything you want it to be. The following types are more to give you a sense of how Apps can be used, but these types are not clearly defined. An App can also be many of these at the same time.
Data Focused Apps
This is the kind of App a developer usually thinks of - with lots of data and various list/details templates. The core idea of these apps is that the data is one or many shared tables and the output will show parts of this data based on rules, filters etc. Examples of such Apps would be:
- News
- Blog
- References
- FAQ
- Custom Forms Apps
Content Focused Apps / Site Builder Apps
This is the kind of App an editor usually thinks of. The core ideas is that the editor adds an App to a page, and adds data to that instance. The data belongs to that instance, so even if it's technically in a shared table, the user experience makes it feel like each use is autonomous. Examples of such Apps would be:
Page Enhancing Apps
This is an App which does something on every page of the Site. The core idea is that a functionality can be used on every page and the logic and data to ensure this is in the App. This kind of App is usually added to the Skin/Theme of the Site so it's available on all pages by default. Examples of such Apps would be:
- Add Script or CSS Snippets to a page
- SEO or Open-Graph Enhancements on each page
- Page protection systems where a part of the page is overlayed until people subscribe
- Adding third-party extensions such as Disqus, AddSearch or Google Search/Analytics to a page
SPA Apps (Single Page Applications)
This is an App which contains a JavaScript SPA which will then be the entire UI for users. The data is usually accessed using either the Headless API or custom C# WebAPIs which are also part of the App. Examples of such Apps would be:
- Customer management SPA
- A complex search/filter SPA
You can create such SPAs using any popular JavaScript Framework such as
- Angular
- React
- Vue
The Content App
👉 See The Content App
The Primary App
👉 See The Primary App
You may want to learn more about