graph LR
User_Interface_State_Management["User Interface & State Management"]
Internationalization_Service["Internationalization Service"]
Configuration_Generation_Core["Configuration Generation Core"]
Specific_Configuration_Modules["Specific Configuration Modules"]
Output_Presentation["Output & Presentation"]
Unclassified["Unclassified"]
User_Interface_State_Management -- "requests language change" --> Internationalization_Service
User_Interface_State_Management -- "submits configuration parameters" --> Configuration_Generation_Core
Internationalization_Service -- "provides localized text" --> User_Interface_State_Management
Configuration_Generation_Core -- "utilizes specific configuration logic" --> Specific_Configuration_Modules
Configuration_Generation_Core -- "outputs generated configuration" --> Output_Presentation
Specific_Configuration_Modules -- "provides configuration snippets" --> Configuration_Generation_Core
Output_Presentation -- "notifies of copy event" --> User_Interface_State_Management
The nginxconfig.io project is structured around a clear separation of concerns, facilitating the generation of NGINX and Docker Compose configurations through a user-friendly web interface. The core data flow begins with user interactions on the User Interface & State Management component, which captures configuration preferences. These preferences are then processed by the Internationalization Service for localized content and passed to the Configuration Generation Core. This central component orchestrates the generation process by leveraging Specific Configuration Modules to produce the final NGINX or Docker Compose output. Finally, the Output & Presentation component handles the display and interaction with the generated configuration, including syntax highlighting and clipboard functionality.
The primary client-side component responsible for rendering the application's visual elements, capturing user input through interactive forms, and managing the overall configuration state based on user selections. It acts as the central orchestrator for user interactions.
Related Classes/Methods:
Manages the application's multi-language capabilities. It handles the loading, setting, and verification of language packs to provide a localized user experience across the UI.
Related Classes/Methods:
The central business logic component responsible for orchestrating the transformation of structured configuration parameters (from the UI) into valid NGINX or YAML configuration syntax. It delegates to specific configuration modules for detailed generation.
Related Classes/Methods:
src/nginxconfig/generators/index.jssrc/nginxconfig/generators/to_conf.jssrc/nginxconfig/generators/to_yaml.js
A collection of specialized modules that provide specific NGINX configuration snippets and logic for various features (e.g., website settings, general NGINX directives, PHP-FPM, security, SSL/LetsEncrypt) and Docker Compose YAML structures. These modules are consumed by the Configuration Generation Core.
Related Classes/Methods:
src/nginxconfig/generators/conf/website.conf.jssrc/nginxconfig/generators/conf/general.conf.jssrc/nginxconfig/generators/conf/php_fastcgi.conf.jssrc/nginxconfig/generators/conf/security.conf.jssrc/nginxconfig/generators/yaml/dockerCompose.yaml.js
This component is responsible for the final presentation of the generated NGINX or YAML configuration. It integrates syntax highlighting (via Prism.js) and provides functionalities like copying the configuration to the user's clipboard.
Related Classes/Methods:
Component for all unclassified files and utility functions (Utility functions/External Libraries/Dependencies)
Related Classes/Methods: None