Skip to content

Textual Versioning and Indexing for TEMS Trial 6 + Trial 8 Applications

Issue Description

This ticket outlines the requirements for implementing server-side indexing and search functionalities for the TEMS Trial 6 and TEMS Trial 8 applications. The goal is to address performance issues with client-side search, support multi-server and multi-type scenarios, and enable scalable search and indexing capabilities for future iterations.


Functional Requirements

Existing Functionalities (as described by the lead developer):

  1. Account Management:
    • Users can create an account, log in, and log out.
  2. Catalog Browsing:
    • Users can list objects in a catalog (e.g., 3D models, articles, providers, etc.).
  3. Dynamic Search:
    • Users can search for objects using dynamic criteria based on the object types present in the catalog.
  4. Object Details Display:
    • Users can view individual object details in a dynamically generated modal based on the object type.
  5. Add to List:
    • Users can add any tems:Object to their list.

Important Characteristics:

  • The type of objects and catalogs governs the display logic.
  • All types are compatible with one another, ensuring interoperability.

Indexing and Search Requirements

Server-Side Indexing:

  • Implement indexing to handle:
    • Multi-server architecture.
    • Multi-type object compatibility.
    • Multi-contract permissions (potentially using contracts for managing access).

Search Features:

  • Enable server-side search for better performance and scalability.
  • Implement server-side pagination to manage large datasets effectively.
  • Address dynamic search needs, with criteria based on object types.

Performance Considerations:

  • Current client-side search performs well with a small number of objects.
  • Server-side search and indexing are required to handle hundreds or thousands of objects without degrading performance.
  • Long-term goal: Achieve "Google by Startin’blox" performance levels.

Object Data Structure:

  • The tems:Object type and its subtypes must be indexed.
  • Generic fields include:
    • Title
    • Description
    • Copyrights
    • Website
    • Licenses
    • Images
    • Providers

Open Questions

  1. Permissions Management:
    • How should contracts be integrated to manage permissions for accessing indexed data?
  2. Dynamic Display Logic:
    • How should the dynamic modals adapt to future ontology-related developments?
  3. Indexing Scope:
    • Should indexes be limited to specific fields or expanded dynamically?
  4. Pagination Approach:
    • What is the optimal server-side pagination strategy for large datasets?
  5. Performance Metrics:
    • What benchmarks should be set for acceptable performance levels?

Next Steps

  1. Define UX for server-side search and indexing.
  2. Develop and test a basic indexing prototype.
  3. Align indexing work with potential future ontology developments.
  4. Implement server-side pagination and validate performance improvements.
  5. Conduct performance testing with increasing dataset sizes.