# Web Apps Create multi-page web applications with custom layouts and content. ## Overview Web Apps allow you to build custom multi-page applications with unique URLs (slugs). Each app can have multiple pages with different content types including maps, datasets, tables, and charts. ## Creating Web Apps ### Access - Navigate to Web Apps management (`web_apps.php`) - Only admins can create and manage web apps - Apps are accessible via unique slug URLs ### App Structure Web apps consist of: - **App Configuration**: Name, slug, description, active status - **Pages**: Multiple pages with different content - **Widgets**: Content widgets on each page - **Navigation**: Page navigation system ## App Configuration ### Basic Settings - **Name**: Display name of the app - **Slug**: URL-friendly identifier (e.g., `my-app`) - **Description**: App description - **Active Status**: Enable/disable app ### Access Apps are accessed via: ``` /app.php?slug={app_slug} ``` Or with specific page: ``` /app.php?slug={app_slug}&page={page_id} ``` ## Pages ### Page Types Each page can contain different content types: - **Map**: Interactive map display - **Dataset**: Dataset viewer - **Table**: Data table - **Chart**: Data visualization ### Page Configuration - **Title**: Page title - **ID**: Unique page identifier - **Content Type**: Map, dataset, table, or chart - **Widgets**: Content widgets on the page ## Widgets ### Map Widget Interactive map with layers. **Configuration**: - Dataset selection - Basemap selection - Layer styling - Initial extent ### Dataset Widget Dataset viewer widget. **Configuration**: - Dataset selection - View mode (data/map/chart) - Display options ### Table Widget Data table display. **Configuration**: - Dataset selection - Columns to display - Sorting and filtering - Pagination ### Chart Widget Data visualization. **Configuration**: - Dataset selection - Chart type - X/Y axis configuration - Styling options ## Building Web Apps ### Step 1: Create App 1. Navigate to Web Apps 2. Click "New Web App" 3. Enter name and slug 4. Set description 5. Save app ### Step 2: Add Pages 1. Open app editor 2. Add new page 3. Configure page settings 4. Select content type 5. Save page ### Step 3: Configure Widgets 1. Select page 2. Add widgets 3. Configure widget settings 4. Link to datasets 5. Save configuration ### Step 4: Publish 1. Set app to active 2. Test app via slug URL 3. Share app URL 4. Monitor usage ## Use Cases ### Public Applications - Public data portals - Community applications - Information systems - Data exploration tools ### Internal Tools - Internal dashboards - Workflow applications - Data entry systems - Reporting tools ### Custom Solutions - Client-specific applications - Project-specific tools - Specialized interfaces - Branded applications ## App Management ### Editing - Edit app configuration - Modify pages - Update widgets - Change permissions ### Publishing - Activate/deactivate apps - Set public/private access - Configure permissions - Monitor usage ### Maintenance - Update content - Refresh data - Modify layouts - Add new pages ## Permissions ### Access Control - **Public**: Accessible without authentication - **Private**: Requires authentication - **Group-based**: Access by user groups - **User-specific**: Individual user access ### Editing Permissions - Only admins can create/edit apps - App creators can edit their apps - Permissions can be delegated ## Example Web App A typical web app might include: 1. **Home Page**: Overview with map and key statistics 2. **Data Page**: Dataset browser and viewer 3. **Analysis Page**: Analysis tools and results 4. **About Page**: Information and documentation ## API Access Web apps can be accessed programmatically: ```bash # Access app GET /app.php?slug={app_slug} # Access specific page GET /app.php?slug={app_slug}&page={page_id} ``` ## Best Practices ### Design - Keep navigation simple - Use consistent layouts - Optimize for mobile - Test across browsers ### Content - Organize content logically - Use clear page titles - Provide navigation aids - Include help text ### Performance - Optimize widget loading - Use efficient queries - Cache when appropriate - Monitor performance ## Related Documentation - [Dashboard](dashboard.md) - [Accordion Stories](accordion.md) - [UI Components](../ui/index.md)