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.
This project is only compatible with Angular 20+
Node.js v20+ is required to run the project.
Technical stackβ
- Tailwindcss: Utility-first CSS framework. https://tailwindcss.com/docs/installation
- tanstack query: Asynchronous state management. https://tanstack.com/query/latest
- ngrx/signals/signal-store: Fully-featured state management solution. https://ngrx.io/guide/signals/signal-store
- @jsverse/transloco: Internationalization library. https://jsverse.github.io/transloco/
- @sinequa/atomic: Sinequa's core Atomic library (framework-agnostic logic, services, and utilities). https://www.npmjs.com/package/@sinequa/atomic
- @sinequa/atomic-angular: Angular-specific Sinequa components and features. https://www.npmjs.com/package/@sinequa/atomic-angular
- @sinequa/ui: Sinequa's UI component library. https://www.npmjs.com/package/@sinequa/ui
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.
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...)