feat: Add README files for various modules and routes

This commit is contained in:
Scott Idem
2025-11-17 20:28:34 -05:00
parent 3a0d901a05
commit 5c67421d7e
10 changed files with 353 additions and 0 deletions

36
src/routes/core/README.md Normal file
View File

@@ -0,0 +1,36 @@
# Core Module
This directory (`src/routes/core`) contains Svelte pages and components for managing the core data objects of the Aether (AE) system. While the primary data logic, API interactions, and database definitions are located in `src/lib/ae_core`, this directory provides the user-facing interfaces for interacting with that data.
## Core Data Modules
The Aether system is built on a foundation of several core modules. The UI components for these modules are, or will be, located here.
### Accounts
- **Description:** Manages client accounts (not to be confused with user accounts). An account is the top-level organizational unit.
- **Logic:** `src/lib/ae_core/core__account.ts`
### Hosted Files
- **Description:** Handles file uploads, storage, and retrieval. Provides components for file upload buttons and video players.
- **Logic:** `src/lib/ae_core/core__hosted_files.ts`
- **Route:** `/hosted_files`
### People
- **Description:** Manages information about individuals. A "person" can be a user, a contact, an event presenter, etc. This is the central object for representing people in the system.
- **Logic:** `src/lib/ae_core/core__person.ts`
- **UI Components:**
- `ae_comp__person_obj_tbl.svelte`: A table for displaying a list of people.
- `person_view.svelte`: A component for displaying the details of a single person.
### Sites & Site Domains
- **Description:** Manages different sites or instances of the application and their associated domain names. This allows for multi-tenant configurations.
- **Logic:** `src/lib/ae_core/core__site.ts` and `core__site_domain.ts`
### Users
- **Description:** Manages user accounts, including authentication, permissions, and user-specific settings.
- **Logic:** `src/lib/ae_core/core__user.ts`

View File

@@ -0,0 +1,32 @@
# Events - Presentation Management Module
This module provides the user interface for managing the core components of an event, with a focus on sessions, presentations, and associated files. It allows event organizers to structure the event program, manage presentation details, and handle related content.
This directory (`src/routes/events`) contains the Svelte components and pages that constitute the user interface for this feature.
## Features
- **Event Program Structure:** The UI allows for viewing and managing the hierarchy of an event, including its sessions and the presentations within those sessions.
- **Session Management:** View lists of sessions for an event, wrapped in various UI components for different display needs (`li`, `tbl`).
- **Presentation Management:** View lists of presentations associated with sessions.
- **File Management:** A key feature is the ability to manage event-related files. This includes uploading new files and viewing lists of existing files associated with the event.
## UI Components & Pages
- `+page.svelte`: The main landing page that displays a list of all events.
- `[event_id]/+page.svelte`: The main page for a single event, which serves as the hub for managing its details.
- `ae_comp__event_session_obj_li.svelte` / `..._tbl.svelte`: Components that render lists of event sessions in different formats.
- `ae_comp__event_presentation_obj_li.svelte`: A component that renders a list of presentations for a session.
- `ae_comp__event_file_obj_tbl.svelte`: A component for displaying a table of files related to the event.
- `ae_comp__event_files_upload.svelte`: A component providing the UI for uploading files.
- `ae_comp__events_menu_nav.svelte` / `..._opts.svelte`: Navigation and option menus specific to the events module.
## Core Logic & Data Models
The underlying data models, API interactions, and database logic for this module are located in `src/lib/ae_events/`. The key data models include:
- **`Event`**: The top-level object for an event.
- **`EventSession`**: Represents a session within an event.
- **`EventPresentation`**: Represents a presentation within a session.
- **`EventPresenter`**: Represents a speaker for a presentation.
- **`EventFile`**: Represents a file associated with any part of the event.

View File

@@ -0,0 +1,39 @@
# Events - Badges Module
This document describes the **Events - Badges** module, which is a sub-module of the Events module. It provides functionality for finding, reviewing, and printing badges for event attendees.
## Overview
The Badges module is designed to streamline the badge printing process at events. It allows event staff to quickly find an attendee's badge, review the information, and print it on demand.
## Data Models
The Badges module is based on two main data models:
- **`EventBadge`**: Represents a badge for an event attendee. It contains all the information that will be printed on the badge, such as the attendee's name, professional title, affiliations, and badge type. It also includes override fields that allow for last-minute corrections.
- **`EventBadgeTemplate`**: Represents a template for a badge. It defines the layout, style, and content of the badge, including logos, headers, footers, and ticket information.
## Features
- **Search:** The module provides a powerful search functionality that allows users to find badges by name, email, or affiliations.
- **QR Code Scanning:** It includes a QR code scanner that can be used to find a badge by scanning the QR code on an attendee's registration confirmation.
- **Badge Review:** Before printing, the module displays a preview of the badge, allowing the event staff to review the information and make any necessary corrections.
- **Printing:** The module provides a simple interface for printing badges.
- **Client-Side Caching:** The module uses Dexie.js for client-side caching in IndexedDB, which improves performance and enables offline access.
## UI Components
The Badges module is composed of the following UI components:
- **`+page.svelte` (in `src/routes/events_badges`):** The main entry point for the Badges module. It provides a restricted access page with some general information.
- **`review/+page.svelte`:** The main UI for finding and reviewing badges. It includes the search bar, QR code scanner, and the list of search results.
- **`/event/badge/view_badge` (route not in this directory):** A page that displays a preview of the badge and provides the printing functionality.
## How it Works
1. The event staff navigates to the `events_badges/review` page.
2. They can either search for an attendee by name, email, or affiliations, or they can use the QR code scanner to find the attendee's badge.
3. The module displays a list of badges that match the search criteria.
4. The staff clicks on a badge to view the details.
5. The user is redirected to the `/event/badge/view_badge` page, which displays a preview of the badge.
6. The staff can then print the badge.

View File

@@ -0,0 +1,48 @@
# Events - Leads Module
This document describes the **Events - Leads** module, which is a sub-module of the Events module. It provides a lead retrieval solution for exhibitors at an event.
## Overview
The Leads module allows exhibitors to capture, manage, and export leads from event attendees. It is designed to be used on a variety of devices, including desktops, tablets, and smartphones.
## Data Models
The Leads module is based on two main data models:
- **`EventExhibit`**: Represents an exhibitor at an event. It contains information about the exhibitor, such as their name, description, and booth number. It also includes configuration options for the lead retrieval service, such as custom questions and the number of licenses.
- **`EventExhibitTracking`**: Represents a lead captured by an exhibitor. It links an exhibitor (`event_exhibit_id`) with an attendee's badge (`event_badge_id`) and includes fields for notes and responses to custom questions.
## Features
- **Authentication:** The module supports two types of authentication for exhibitor staff:
- **Shared Passcode:** A shared passcode can be used by all staff members of an exhibitor.
- **License-based:** Individual licenses can be assigned to staff members, each with their own email and passcode.
- **Lead Capture:** Leads can be captured by:
- **Scanning QR Codes:** The module includes a QR code scanner that can be used to scan the QR code on an attendee's badge.
- **Manual Entry:** The attendee's badge ID can be entered manually.
- **Lead Management:** The module provides a comprehensive interface for managing leads, including:
- Viewing a list of all captured leads.
- Viewing the details of a single lead.
- Adding notes to a lead.
- Answering custom questions for a lead.
- **Lead Export:** Leads can be exported to a CSV or Excel file for further processing.
- **License Management:** Exhibitors can manage their licenses, including adding, editing, and removing licenses.
- **Client-Side Caching:** The module uses Dexie.js for client-side caching in IndexedDB, which improves performance and enables offline access.
## UI Components
The Leads module is composed of the following UI components:
- **`exhibit/[slug]/+page.svelte`:** The main entry point for an exhibitor. It provides a tabbed interface for accessing the different features of the module.
- **`exhibit/[slug]/leads_add_scan.svelte`:** A component for adding a new lead by scanning a badge or entering the badge ID manually.
- **`exhibit/[slug]/leads_list.svelte`:** A component for viewing and managing the list of captured leads.
- **`exhibit/[slug]/leads_manage.svelte`:** A component for managing the exhibitor's settings and exporting leads.
- **`exhibit/[slug]/leads_view_lead.svelte`:** A component for viewing the details of a single lead.
## How it Works
1. The exhibitor navigates to the `events_leads/exhibit/[slug]` page, where `[slug]` is their exhibitor ID.
2. They authenticate using either the shared staff passcode or their individual license.
3. They can then use the different tabs to capture new leads, manage their existing leads, and configure their settings.
4. All data is fetched from the API and cached in IndexedDB for offline access and faster loading times.

41
src/routes/idaa/README.md Normal file
View File

@@ -0,0 +1,41 @@
# IDAA Integration Module
This module integrates features from the Aether (AE) application into the IDAA (International Doctors in Alcoholics Anonymous) website, which is powered by a system called Novi. The integration is achieved by embedding Aether pages within iframes inside the Novi site.
This directory (`src/routes/idaa`) contains the Svelte routes that correspond to the pages on the main IDAA site.
## Architecture
The integration uses a multi-step iframe-based approach:
1. **Novi Page:** A page on the IDAA website contains a snippet of code that loads a static HTML file from this Aether project's `static/` directory into an iframe.
2. **Static HTML Bridge:** The static file (e.g., `static/idaa_novi_iframe_archives.html`) acts as a bridge. It contains JavaScript that:
a. Executes within the context of the Novi site, allowing it to access Novi-specific data like the current user's unique ID (`<%=Novi.User.CustomerUniqueId%>`).
b. Uses the Novi user ID to make a call to the Novi API to get more user details (like email and full name).
c. Uses the retrieved user details to construct a URL for the actual Aether application page.
d. Loads the Aether page into a nested iframe on the static page.
3. **Aether Application:** The final Aether page (e.g., `/idaa/archives`) receives the user information via URL parameters and displays the relevant content.
This architecture allows the Aether application to securely authenticate and identify the Novi user without a complex SSO integration.
## Sub-modules
The IDAA integration includes the following features, each corresponding to a route in this directory and a static HTML bridge file.
### IDAA - Archives
- **Route:** `/idaa/archives`
- **Bridge File:** `static/idaa_novi_iframe_archives.html`
- **Functionality:** Provides access to the Aether Archives module, allowing IDAA members to view and search archived content.
### IDAA - Bulletin Board (BB)
- **Route:** `/idaa/bb`
- **Bridge File:** `static/idaa_novi_iframe_bulletin_board.html`
- **Functionality:** Provides a bulletin board or forum feature, powered by the Aether Posts module.
### IDAA - Recovery Meetings
- **Route:** `/idaa/recovery_meetings`
- **Bridge File:** `static/idaa_novi_iframe_recovery_meetings.html`
- **Functionality:** Displays a list of recovery meetings. This may also integrate with a Jitsi meeting interface (`idaa_novi_iframe_jitsi_meeting.html`).

View File

@@ -0,0 +1,26 @@
# Journals Module
The Journals module provides a user-facing application for creating and managing personal journals. It can be used for various purposes such as a personal diary, a blog, a notebook, or any other form of chronological or topical record-keeping.
This directory (`src/routes/journals`) contains the Svelte components and pages that constitute the user interface for the Journals feature.
## Features
- **Journal & Entry Management:** The UI allows for full CRUD (Create, Read, Update, Delete) functionality for both journals and their entries.
- **Rich Content Editing:** Journal entries can be written using Markdown for rich text formatting.
- **Encryption:** The UI provides an interface for setting and using passcodes to encrypt and decrypt journal entries.
- **Offline Support:** The application uses a local IndexedDB cache (via Dexie.js) for all data, allowing for offline access and faster interactions. Data is synchronized with the backend API.
## UI Components & Pages
- `+page.svelte`: The main landing page that displays a list of all journals for the current user.
- `[journal_id]/+page.svelte`: The page for viewing a single journal and its list of entries.
- `ae_comp__journal_obj_li.svelte`: A component that renders the list of journals.
- `ae_comp__journal_obj_id_view.svelte`: A component for viewing the details of a selected journal.
- `ae_comp__journal_entry_obj_li.svelte`: A component that renders the list of entries for a journal.
- `ae_comp__journal_entry_obj_id_view.svelte`: A component for viewing the content of a single journal entry.
- `ae_comp__journal_obj_id_edit.svelte`: A modal component for creating and editing journals.
## Core Logic
The underlying data models, API interactions, and database logic for this module are located in `src/lib/ae_journals/`.