Skip to main content

Welcome to Mint 🍡

Mint is a powerful application boilerplate designed to streamline the development of web applications integrated with Sinequa services. It provides a robust set of tools and features to help developers build efficient, secure, and highly configurable applications.

warning

This project is only compatible with Angular 20+
Node.js v20+ is required to run the project.

Technical stack​

General structure of the application​

πŸ“ app                // Contains files related to the application
β”œβ”€β”€ πŸ“ components // Groups components specific to the application
β”œβ”€β”€ πŸ“ pages // Contains components related to pages
β”œβ”€β”€ πŸ“ registry // Contains the registry of components used in the application (subject to change)
πŸ“ assets // Contains static resources like images, global CSS files, and other necessary files
// for the application
πŸ“ css-overrides // Contains CSS overrides (mandatory) to use the Assistant component.
πŸ“ environments // Contains environment-specific configuration files to manage environment variables
// and other deployment-specific configurations

πŸ“ app​

The app folder is the core of the Angular application, containing the main components, configurations, routes, and services needed to build the user interface. Here is a detailed description of its content and role in the application:

πŸ“ app                      # Main application folder (components, pages, config, routes)
β”œβ”€β”€ πŸ“ components # App-specific reusable components
β”œβ”€β”€ πŸ“ pages # Page-level components (home, search, widgets, etc.)
β”œβ”€β”€ πŸ“ registry # Document type registry and related logic
β”œβ”€β”€ 🏷️ tokens.ts # App-wide tokens
β”œβ”€β”€ βš™οΈ app.config.ts # App configuration and providers
β”œβ”€β”€ 🧩 app.component.ts # Root component logic
β”œβ”€β”€ πŸ“ app.component.html # Root component template
β”œβ”€β”€ πŸ—ΊοΈ routes.ts # Application routes
└── 🌐 transloco-loader.ts # i18n loader

In summary, the app folder contains the essential elements for the operation of the Angular application, including the root component, global configuration, routing, and internationalization. It serves as the entry point for the application's structure and business logic.

πŸ“ pages​

This is where the application pages are located as described in the routes file: app.routes.ts.

There are currently 4 main pages:

  • Home, the home page
  • Search, the search page. It is further divided into several other pages by existing tabs.
    • All, which contains the component(s) that will be used to display search results for the "All" tab.
    • Other tabs can be added as needed.
  • Widgets, which contains the widgets used in the application.
  • Assistant, which contains the layout for the assistant feature. This route needs a specific configuration to be enabled.
```ascii
πŸ“‚ pages
β”œβ”€β”€ πŸ“ assistant/ # Contains the layout for the assistant feature.
β”‚ └── 🧩 assistant.layout
β”‚
β”œβ”€β”€ πŸ“ home/ # This is the landing page. It displays the most
β”‚ β”‚ recently viewed documents, recent searches, and bookmarks.
β”‚ └── 🧩 home
β”‚
β”œβ”€β”€ πŸ“ search/ # Contains the search page layout and its subpages.
β”‚ β”œβ”€β”€ πŸ“ all/ # Contains the component(s) that will be used to display
β”‚ β”‚ β”‚ search results for the "All" tab.
β”‚ β”‚ └── 🧩 search-all
β”‚ └── 🧩 layout
β”‚
β”œβ”€β”€ πŸ“ widgets/
β”‚ β”œβ”€β”€ πŸ“ bookmarks/ # Contains components related to bookmarks widget.
β”‚ β”œβ”€β”€ πŸ“ collections/ # Contains components related to collections widget.
β”‚ β”œβ”€β”€ πŸ“ recent-searches/ # Contains components related to recent searches widget.
β”‚ β”œβ”€β”€ πŸ“ saved-searches/ # Contains components related to saved searches widget.
β”‚ └── 🧩 layout # Layout component for widgets section.
β”‚
└── 🧩 app.component # The main application component.
note

It is possible to use different components for each tab or for each type of returned documents. For this, you need to look at the file app/registry/document-type-registry.ts.

For simplicity reasons, in "Mint" we use only one component to display a result regardless of the tab or its type (html, pdf, slide...)