diff --git a/commandList.json b/commandList.json index b2146a5f78..d23e28ca07 100644 --- a/commandList.json +++ b/commandList.json @@ -1 +1 @@ -{"cs":"docs\\language\\basics\\lang-classes","4D":"docs\\language\\basics\\lang-classes","super":"docs\\language\\basics\\lang-classes","this":"docs\\language\\basics\\lang-classes","type":"docs\\language\\basics\\lang-data-types","valueType":"docs\\language\\basics\\lang-data-types","null":"docs\\language\\basics\\lang-null-undefined","undefined":"docs\\language\\basics\\lang-null-undefined","copyParameters":"docs\\language\\basics\\lang-parameters","countParameters":"docs\\language\\basics\\lang-parameters","clearVariable":"docs\\language\\basics\\lang-variables","abort":"docs\\language\\commands\\abort","abortProcessByID":"docs\\language\\commands\\abortProcessByID","abs":"docs\\language\\commands\\abs","addToDate":"docs\\language\\commands\\addToDate","arctan":"docs\\language\\commands\\arctan","assert":"docs\\language\\commands\\assert","asserted":"docs\\language\\commands\\asserted","base64Decode":"docs\\language\\commands\\base64Decode","base64Encode":"docs\\language\\commands\\base64Encode","blobToPicture":"docs\\language\\commands\\blobToPicture","bool":"docs\\language\\commands\\bool","callChain":"docs\\language\\commands\\callChain","callWorker":"docs\\language\\commands\\callWorker","changeString":"docs\\language\\commands\\changeString","char":"docs\\language\\commands\\char","characterCode":"docs\\language\\commands\\characterCode","clearSemaphore":"docs\\language\\commands\\clearSemaphore","combinePictures":"docs\\language\\commands\\combinePictures","compareStrings":"docs\\language\\commands\\compareStrings","convertFromString":"docs\\language\\commands\\convertFromString","convertPicture":"docs\\language\\commands\\convertPicture","convertToString":"docs\\language\\commands\\convertToString","cos":"docs\\language\\commands\\cos","createThumbnail":"docs\\language\\commands\\createThumbnail","currentDate":"docs\\language\\commands\\currentDate","currentMethodName":"docs\\language\\commands\\currentMethodName","currentProcess":"docs\\language\\commands\\currentProcess","currentProcessName":"docs\\language\\commands\\currentProcessName","currentTime":"docs\\language\\commands\\currentTime","date":"docs\\language\\commands\\date","dayNumber":"docs\\language\\commands\\dayNumber","dayOf":"docs\\language\\commands\\dayOf","dec":"docs\\language\\commands\\dec","delayProcess":"docs\\language\\commands\\delayProcess","deleteString":"docs\\language\\commands\\deleteString","ds":"docs\\language\\commands\\ds","equalPictures":"docs\\language\\commands\\equalPictures","exp":"docs\\language\\commands\\exp","false":"docs\\language\\commands\\false","file":"docs\\language\\commands\\file","folder":"docs\\language\\commands\\folder","formula":"docs\\language\\commands\\formula","formulaFromString":"docs\\language\\commands\\formulaFromString","generateDigest":"docs\\language\\commands\\generateDigest","generatePasswordHash":"docs\\language\\commands\\generatePasswordHash","generateUUID":"docs\\language\\commands\\generateUUID","getAssertEnabled":"docs\\language\\commands\\getAssertEnabled","getPictureFileName":"docs\\language\\commands\\getPictureFileName","getPictureMetadata":"docs\\language\\commands\\getPictureMetadata","getProcessActivity":"docs\\language\\commands\\getProcessActivity","highestProcessNumber":"docs\\language\\commands\\highestProcessNumber","insertString":"docs\\language\\commands\\insertString","instanceOf":"docs\\language\\commands\\instanceOf","int":"docs\\language\\commands\\int","jsonParse":"docs\\language\\commands\\jsonParse","jsonResolvePointers":"docs\\language\\commands\\jsonResolvePointers","jsonStringify":"docs\\language\\commands\\jsonStringify","jsonValidate":"docs\\language\\commands\\jsonValidate","killWorker":"docs\\language\\commands\\killWorker","lastErrors":"docs\\language\\commands\\lastErrors","length":"docs\\language\\commands\\length","log":"docs\\language\\commands\\log","lowercase":"docs\\language\\commands\\lowercase","mailConvertFromMIME":"docs\\language\\commands\\mailConvertFromMIME","mailConvertToMIME":"docs\\language\\commands\\mailConvertToMIME","matchRegex":"docs\\language\\commands\\matchRegex","methodCalledOnError":"docs\\language\\commands\\methodCalledOnError","milliseconds":"docs\\language\\commands\\milliseconds","mod":"docs\\language\\commands\\mod","monthOf":"docs\\language\\commands\\monthOf","newCollection":"docs\\language\\commands\\newCollection","newObject":"docs\\language\\commands\\newObject","newSharedCollection":"docs\\language\\commands\\newSharedCollection","newSharedObject":"docs\\language\\commands\\newSharedObject","newSignal":"docs\\language\\commands\\newSignal","not":"docs\\language\\commands\\not","num":"docs\\language\\commands\\num","objectClass":"docs\\language\\commands\\objectClass","objectCopy":"docs\\language\\commands\\objectCopy","objectEntries":"docs\\language\\commands\\objectEntries","objectIsDefined":"docs\\language\\commands\\objectIsDefined","objectIsEmpty":"docs\\language\\commands\\objectIsEmpty","objectIsShared":"docs\\language\\commands\\objectIsShared","objectKeys":"docs\\language\\commands\\objectKeys","objectRemove":"docs\\language\\commands\\objectRemove","objectValues":"docs\\language\\commands\\objectValues","onErrCall":"docs\\language\\commands\\onErrCall","openDatastore":"docs\\language\\commands\\openDatastore","pictureProperties":"docs\\language\\commands\\pictureProperties","pictureSize":"docs\\language\\commands\\pictureSize","pictureToBlob":"docs\\language\\commands\\pictureToBlob","position":"docs\\language\\commands\\position","processInfo":"docs\\language\\commands\\processInfo","processNumber":"docs\\language\\commands\\processNumber","processState":"docs\\language\\commands\\processState","random":"docs\\language\\commands\\random","replaceString":"docs\\language\\commands\\replaceString","round":"docs\\language\\commands\\round","semaphore":"docs\\language\\commands\\semaphore","session":"docs\\language\\commands\\session","setAssertEnabled":"docs\\language\\commands\\setAssertEnabled","setPictureFileName":"docs\\language\\commands\\setPictureFileName","setPictureMetadata":"docs\\language\\commands\\setPictureMetadata","setRealComparisonLevel":"docs\\language\\commands\\setRealComparisonLevel","sin":"docs\\language\\commands\\sin","splitString":"docs\\language\\commands\\splitString","squareRoot":"docs\\language\\commands\\squareRoot","storage":"docs\\language\\commands\\storage","string":"docs\\language\\commands\\string","substring":"docs\\language\\commands\\substring","tan":"docs\\language\\commands\\tan","testSemaphore":"docs\\language\\commands\\testSemaphore","throw":"docs\\language\\commands\\throw","time":"docs\\language\\commands\\time","timestamp":"docs\\language\\commands\\timestamp","timeString":"docs\\language\\commands\\timeString","trace":"docs\\language\\commands\\trace","transformPicture":"docs\\language\\commands\\transformPicture","true":"docs\\language\\commands\\true","trunc":"docs\\language\\commands\\trunc","uppercase":"docs\\language\\commands\\uppercase","verifyPasswordHash":"docs\\language\\commands\\verifyPasswordHash","webEvent":"docs\\language\\commands\\webEvent","webForm":"docs\\language\\commands\\webForm","webServer":"docs\\language\\commands\\webServer","webServerList":"docs\\language\\commands\\webServerList","yearOf":"docs\\language\\commands\\yearOf","zipCreateArchive":"docs\\language\\commands\\zipCreateArchive","zipReadArchive":"docs\\language\\commands\\zipReadArchive","httpParseMessage":"docs\\language\\HTTPRequestClass"} \ No newline at end of file +{"cs":"docs\\language\\basics\\lang-classes","4D":"docs\\language\\basics\\lang-classes","super":"docs\\language\\basics\\lang-classes","this":"docs\\language\\basics\\lang-classes","type":"docs\\language\\basics\\lang-data-types","valueType":"docs\\language\\basics\\lang-data-types","null":"docs\\language\\basics\\lang-null-undefined","undefined":"docs\\language\\basics\\lang-null-undefined","copyParameters":"docs\\language\\basics\\lang-parameters","countParameters":"docs\\language\\basics\\lang-parameters","clearVariable":"docs\\language\\basics\\lang-variables","abort":"docs\\language\\commands\\abort","abortProcessByID":"docs\\language\\commands\\abortProcessByID","abs":"docs\\language\\commands\\abs","addToDate":"docs\\language\\commands\\addToDate","arctan":"docs\\language\\commands\\arctan","assert":"docs\\language\\commands\\assert","asserted":"docs\\language\\commands\\asserted","base64Decode":"docs\\language\\commands\\base64Decode","base64Encode":"docs\\language\\commands\\base64Encode","blobToPicture":"docs\\language\\commands\\blobToPicture","bool":"docs\\language\\commands\\bool","callChain":"docs\\language\\commands\\callChain","callWorker":"docs\\language\\commands\\callWorker","changeString":"docs\\language\\commands\\changeString","char":"docs\\language\\commands\\char","characterCode":"docs\\language\\commands\\characterCode","clearSemaphore":"docs\\language\\commands\\clearSemaphore","compareStrings":"docs\\language\\commands\\compareStrings","convertFromString":"docs\\language\\commands\\convertFromString","convertPicture":"docs\\language\\commands\\convertPicture","convertToString":"docs\\language\\commands\\convertToString","cos":"docs\\language\\commands\\cos","createThumbnail":"docs\\language\\commands\\createThumbnail","currentDate":"docs\\language\\commands\\currentDate","currentMethodName":"docs\\language\\commands\\currentMethodName","currentProcess":"docs\\language\\commands\\currentProcess","currentProcessName":"docs\\language\\commands\\currentProcessName","currentTime":"docs\\language\\commands\\currentTime","date":"docs\\language\\commands\\date","dayNumber":"docs\\language\\commands\\dayNumber","dayOf":"docs\\language\\commands\\dayOf","dec":"docs\\language\\commands\\dec","delayProcess":"docs\\language\\commands\\delayProcess","deleteString":"docs\\language\\commands\\deleteString","ds":"docs\\language\\commands\\ds","exp":"docs\\language\\commands\\exp","false":"docs\\language\\commands\\false","file":"docs\\language\\commands\\file","folder":"docs\\language\\commands\\folder","formula":"docs\\language\\commands\\formula","formulaFromString":"docs\\language\\commands\\formulaFromString","generateDigest":"docs\\language\\commands\\generateDigest","generatePasswordHash":"docs\\language\\commands\\generatePasswordHash","generateUUID":"docs\\language\\commands\\generateUUID","getAssertEnabled":"docs\\language\\commands\\getAssertEnabled","getPictureFileName":"docs\\language\\commands\\getPictureFileName","getPictureMetadata":"docs\\language\\commands\\getPictureMetadata","getProcessActivity":"docs\\language\\commands\\getProcessActivity","highestProcessNumber":"docs\\language\\commands\\highestProcessNumber","insertString":"docs\\language\\commands\\insertString","instanceOf":"docs\\language\\commands\\instanceOf","int":"docs\\language\\commands\\int","jsonParse":"docs\\language\\commands\\jsonParse","jsonResolvePointers":"docs\\language\\commands\\jsonResolvePointers","jsonStringify":"docs\\language\\commands\\jsonStringify","jsonValidate":"docs\\language\\commands\\jsonValidate","killWorker":"docs\\language\\commands\\killWorker","lastErrors":"docs\\language\\commands\\lastErrors","length":"docs\\language\\commands\\length","log":"docs\\language\\commands\\log","lowercase":"docs\\language\\commands\\lowercase","mailConvertFromMIME":"docs\\language\\commands\\mailConvertFromMIME","mailConvertToMIME":"docs\\language\\commands\\mailConvertToMIME","matchRegex":"docs\\language\\commands\\matchRegex","methodCalledOnError":"docs\\language\\commands\\methodCalledOnError","milliseconds":"docs\\language\\commands\\milliseconds","mod":"docs\\language\\commands\\mod","monthOf":"docs\\language\\commands\\monthOf","newCollection":"docs\\language\\commands\\newCollection","newObject":"docs\\language\\commands\\newObject","newSharedCollection":"docs\\language\\commands\\newSharedCollection","newSharedObject":"docs\\language\\commands\\newSharedObject","newSignal":"docs\\language\\commands\\newSignal","not":"docs\\language\\commands\\not","num":"docs\\language\\commands\\num","objectClass":"docs\\language\\commands\\objectClass","objectCopy":"docs\\language\\commands\\objectCopy","objectEntries":"docs\\language\\commands\\objectEntries","objectIsDefined":"docs\\language\\commands\\objectIsDefined","objectIsEmpty":"docs\\language\\commands\\objectIsEmpty","objectIsShared":"docs\\language\\commands\\objectIsShared","objectKeys":"docs\\language\\commands\\objectKeys","objectRemove":"docs\\language\\commands\\objectRemove","objectValues":"docs\\language\\commands\\objectValues","onErrCall":"docs\\language\\commands\\onErrCall","openDatastore":"docs\\language\\commands\\openDatastore","pictureProperties":"docs\\language\\commands\\pictureProperties","pictureSize":"docs\\language\\commands\\pictureSize","pictureToBlob":"docs\\language\\commands\\pictureToBlob","position":"docs\\language\\commands\\position","processInfo":"docs\\language\\commands\\processInfo","processNumber":"docs\\language\\commands\\processNumber","processState":"docs\\language\\commands\\processState","random":"docs\\language\\commands\\random","replaceString":"docs\\language\\commands\\replaceString","round":"docs\\language\\commands\\round","semaphore":"docs\\language\\commands\\semaphore","session":"docs\\language\\commands\\session","setAssertEnabled":"docs\\language\\commands\\setAssertEnabled","setPictureFileName":"docs\\language\\commands\\setPictureFileName","setPictureMetadata":"docs\\language\\commands\\setPictureMetadata","setRealComparisonLevel":"docs\\language\\commands\\setRealComparisonLevel","sin":"docs\\language\\commands\\sin","splitString":"docs\\language\\commands\\splitString","squareRoot":"docs\\language\\commands\\squareRoot","storage":"docs\\language\\commands\\storage","string":"docs\\language\\commands\\string","substring":"docs\\language\\commands\\substring","tan":"docs\\language\\commands\\tan","testSemaphore":"docs\\language\\commands\\testSemaphore","throw":"docs\\language\\commands\\throw","time":"docs\\language\\commands\\time","timestamp":"docs\\language\\commands\\timestamp","timeString":"docs\\language\\commands\\timeString","trace":"docs\\language\\commands\\trace","true":"docs\\language\\commands\\true","trunc":"docs\\language\\commands\\trunc","uppercase":"docs\\language\\commands\\uppercase","verifyPasswordHash":"docs\\language\\commands\\verifyPasswordHash","webEvent":"docs\\language\\commands\\webEvent","webForm":"docs\\language\\commands\\webForm","webServer":"docs\\language\\commands\\webServer","webServerList":"docs\\language\\commands\\webServerList","yearOf":"docs\\language\\commands\\yearOf","zipCreateArchive":"docs\\language\\commands\\zipCreateArchive","zipReadArchive":"docs\\language\\commands\\zipReadArchive","httpParseMessage":"docs\\language\\HTTPRequestClass"} \ No newline at end of file diff --git a/docs/api/overview.md b/docs/api/overview.md index cdbf048340..7690ac73bd 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -14,7 +14,7 @@ Qodly provides a sophisticated REST server that facilitates direct access to dat To effectively use the Qodly REST API, you will need to obtain the API Key and Endpoint URL, which are essential for authenticating and directing your API calls. :::info -To fetch these credentials, please refer to the detailed steps in the [API Keys](../cloud/api-key#managing-api-keys) section of this documentation. +To fetch these credentials, please refer to the detailed steps in the [API Keys](../cloud/apiKeys.md#managing-api-keys) section of this documentation. ::: ## Configuring Data Access diff --git a/docs/cloud/api-key.md b/docs/cloud/api-key.md deleted file mode 100644 index e35d533235..0000000000 --- a/docs/cloud/api-key.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -id: api-key -title: API Keys ---- - -import Column from '@site/src/components/Column' - - -## Overview - -Enable secure access to your Qodly application by utilizing **API keys** and **endpoint URLs** for external clients. - - -### API Endpoint - -The API endpoint is a gateway through which developers can programmatically access features or data using standard HTTP methods to execute operations tailored to the needs of their applications. Combined with the [`openDatastore`](../language/commands/openDatastore.md) command or [REST requests](../api/overview.md), it is used specifically to facilitate interactions between external applications and the Qodly application. This could include managing data, triggering actions, or retrieving information from Qodly's apps. - -### API Key - -An API key is a unique identifier used to authenticate a client or user trying to access the Qodly Cloud application. It helps the API provider control and monitor how the API is being used, typically to prevent misuse or abuse and to manage quotas. - -This key is linked to a specific [**role**](../studio/roles/rolesPrivilegesOverview.md), defining the scope of actions that the client can perform based on the permissions associated with that role. - -The key must be included in the HTTP header of every REST requests sent as a means of identifying the requester and checking their access permissions. [See below](#using-api-keys) for more information. - - -## Managing API Keys - -To authenticate connections to your Qodly application resource, you'll need to generate API keys and get its endpoint. - -### Accessing API Keys - - - - Navigate to the API keys tab in your environment setup. Here, you'll find a table listing all existing keys and their endpoints. - - - - - - -
- - -The API management table displays the API Endpoint specific to your environment and lists any API keys that have been created, though it is initially empty by default. - - - - - -### Copying API Endpoint - -Click the copy button beside the endpoint URL to use it in your application's REST calls. - - - - -### Creating a New API Key - - - - To configure a new API key, start by clicking on to launch the configuration dialog. Then, follow the detailed property guidelines outlined in the table below to complete your setup. - - - - - - - -| Property | Description | -|--------------------|------------------------------------------------------------------------------------------------------------------------| -| **Description** | Enter a brief yet descriptive identifier for the key, which will aid in recognizing its purpose within the application. | -| **API Type** | Choose between two types:

1. **Standard**: This is the regular type, appropriate for most users, where access permissions are managed according to the assigned role.

2. **Administration**: Intended for developers of custom components, offering extended privileges that allow for comprehensive access and management of application data, bypassing standard role-based restrictions. | -| **Role** | Assign a specific role to the API key, dictating its access level within the application. The selection menu includes all [roles defined in the application](../studio/roles/rolesPrivilegesOverview.md), such as Admin, which is set by default. | -| **Expiration Date** | Set the validity period of the API key, with a maximum limit of one year to ensure security protocols are maintained. | -| **Allowed Hosts** | By default, an API key can be used from any client machine. To restrict its usage to specific hosts, use the **Add IP address** button to specify the IP addresses from which the key can accept requests. | - -:::tip - - - - This API key is initially configured for public access, allowing usage from any host. To specify restrictions to specific hosts, add their IP addresses. - - - - - - -::: - -Once you've entered all the necessary details in the configuration dialog, click `Submit` to generate your API key. - - -### API Management Table - -In the Qodly Cloud Management Console, the API key management panel provides several key functionalities: - - - - - - - - - - -## Using API keys - -A Qodly API key must be included in the **HTTP header** of every REST requests sent to the server. You can do it in two ways: - -- using the [`openDatastore`](../language/commands/openDatastore.md) command to target another Qodly application: you pass both API endpoint and API key through `hotsname` and `api-key` properties in the *connectionInfo* parameter and that's it! Underlying REST requests automatically handle the API keys in HTTP headers. -- using the [REST API](../api/overview): use the API endpoint url and insert the `api-key` header with API key value in every REST requests (for more information, see [this example](../api/overview.md#api-endpoint-usage-example-in-postman)). - -## How to manage your API Access (Tutorial video) - -See this tutorial video to learn how to: - -- Access the API Key from your Qodly app dashboard. -- Authenticate requests with different roles and privileges for secure data access. -- Read product data based on user permissions. -- Create new products using the API. - - diff --git a/docs/cloud/apiKeys.md b/docs/cloud/apiKeys.md new file mode 100644 index 0000000000..8e81018153 --- /dev/null +++ b/docs/cloud/apiKeys.md @@ -0,0 +1,125 @@ +--- +id: apiKeys +title: API Keys +--- + +import Column from '@site/src/components/Column' + + +## Overview + +The API Keys tab in Qodly allows you to create and manage API keys for secure, programmatic access to your application’s resources. These keys enable external systems or scripts to interact with your application in a controlled and secure manner. + + +### API Endpoint + +The API endpoint serves as a gateway, allowing developers to interact with Qodly applications programmatically. Using standard HTTP methods, the endpoint can facilitate data access, trigger actions, or retrieve information by integrating with Qodly’s [`openDatastore`](../language/commands/openDatastore.md) command or [REST requests](../api/overview.md). + +### API Key + +An API key acts as a unique identifier for authenticating external clients. Each key is linked to a specific [**role**](../studio/roles/rolesPrivilegesOverview.md), controlling the scope of access and actions permitted within the application. It must be included in the HTTP headers of all REST requests to validate the requester’s permissions. [See below](#using-api-keys) for more information. + + +## Managing API Keys + +To set up secure access, generate API keys and retrieve the relevant endpoint. + +### Accessing API Keys + + + + In your environment setup, navigate to the API keys tab, where you’ll see the API endpoint and a list of any previously created keys. + + + + + + +
+ +The initial API key management screen shows the environment’s API endpoint and provides an interface for creating new keys. + + + + +### Creating a New API Key + + + + Click the button to open the API key configuration dialog. Define properties such as the key’s description, type, assigned role, expiration date, and allowed hosts. + + + + + + + +| Property | Description | +|--------------------|------------------------------------------------------------------------------------------------------------------------| +| **Description** | A brief identifier for the key to help recognize its purpose. | +| **API Type** | Choose between two types:

1. **Standard**: This is the regular type, appropriate for most users, where access permissions are managed according to the assigned role.

2. **Administration**: Intended for developers of custom components, offering extended privileges that allow for comprehensive access and management of application data, bypassing standard role-based restrictions. | +| **Role** | Assigns access level based on [application-defined roles](../studio/roles/rolesPrivilegesOverview.md). Default is Admin. | +| **Expiration Date** | Sets a validity period up to one year for security purposes. | +| **Allowed Hosts** | Restrict the API key’s use to specific IPs by adding IP addresses under this setting. | + + +:::tip + + + + This API key is initially configured for public access, allowing usage from any host. To specify restrictions to specific hosts, add their IP addresses. + + + + + + +::: + +Once complete, click `Submit` to create the API key. + + +### Copying API Endpoint + +Click the copy button beside the endpoint URL to use it in your application's REST calls. + + + + +### API Management Table + +In the API management section, each key includes options to: + + + + + + + + + + + +## Using API Keys + +To authenticate REST requests to the Server, the API key must be included in the **HTTP header**. Here are two ways to handle API key integration: + +- **Using the [`openDatastore`](../language/commands/openDatastore.md) Command**: When connecting to another Qodly application, use the `openDatastore` command. Simply pass the API endpoint and key through the `hostname` and `api-key` properties in the `connectionInfo` parameter. This method automatically includes the API key in the HTTP headers for underlying REST requests. + +- **Using the REST API Directly**: Insert the `api-key` into the HTTP header with the API endpoint URL in all REST requests. For a practical example, refer to the [API endpoint usage example in Postman](../api/overview.md#api-endpoint-usage-example-in-postman). + + +## How to Manage Your API Access - Tutorial Video + +This tutorial video provides a step-by-step guide on managing API access: + +- Accessing the API Key in the Qodly Console. +- Authenticating requests with role-based permissions. +- Reading data based on user permissions. +- Creating new records via the API. + + diff --git a/docs/cloud/billingSubscriptionManagement.md b/docs/cloud/billingSubscriptionManagement.md new file mode 100644 index 0000000000..c554175d96 --- /dev/null +++ b/docs/cloud/billingSubscriptionManagement.md @@ -0,0 +1,215 @@ +--- +id: billingSubscriptionManagement +title: Billing Subscription Management +--- + +import Column from '@site/src/components/Column' + +The **Billing** and **Subscription** pages in Qodly offer comprehensive tools for managing payments, invoices, and environment-specific subscriptions. + +## Billing Page + +The **Billing Page** provides a detailed overview of your current subscription, payment methods, and past invoices. It is designed to give you control over payment details and an understanding of upcoming charges. + + + +### Next Invoice + +The **Next Invoice** section displays the amount and date of your next scheduled payment, with the option to view a detailed breakdown. + + + + + + + + + + + + + + + + + + +### Subscription Overview + +This section provides the status and cycle of your subscription, along with the associated payment method. + + + + + + + + + + +### Change Payment Method + +Clicking the Change Payment Method card opens a dialog box where you can update the card details, including: + + + + + + + + + + + +Updating the payment method ensures the next payment is processed without interruptions. + + +### Invoices + +The **Invoices** section lists past invoices with downloadable options for receipts and invoice details: + + - **Date**: When the invoice was issued. + - **Status**: Displays whether the invoice has been paid. + - **Invoice Number**: A unique identifier for each invoice. + - **Total Amount**: The total charge for that invoice. + + + +

+ + + + Clicking the Download Invoice button redirects you to a detailed invoice page where you can: +

+ +
+ + + +
+ + +### Manage Subscription + +The **Manage Subscription** button directs you to the [Subscription Page](#subscription-page), where you can manage services and environments, including upgrading or deleting environments. + + +## Subscription Page + +The **Subscription Page** is designed for managing environment-specific services and associated costs. It allows you to upgrade, delete, or add environments, providing detailed control over the resources allocated to each environment. + +### Environment Overview + +The **Environment Overview** section lists all environments with details of their configurations and associated costs. + + + +Clicking on an environment card reveals detailed configurations and associated costs for the environment: + +- **Qodly Power**: Displays the computing resources (CPU and memory) assigned to the environment, along with the monthly cost. +- **Extra Storage**: Shows any additional storage allocated to the environment. +- **Internet Outbound Data Transfer Pack**: Indicates the bandwidth included for outbound data transfers. +- **Backup Service**: Displays if the database backup option is enabled. + + + + +### Add Environment + +The **Add Environment** button enables the creation of new environments. Users can: + +- Add multiple environments in one session. + +- Customize each environment with specific computing power, storage, bandwidth, and additional services. + +- Review configuration summaries and total costs before finalizing. + +- Either submit all configured environments or discard the entire session. + + + + +:::tip +The configuration options for each environment in this section are the same as those in the [Step 3: Configure Application Details](./myApps.md#step-3-configure-application-details) section when creating a new app for the first time. Each added environment requires independent configuration, including options for: +::: + + +### View Environment + +The **View Environment** button opens the [selected environment’s overview page](./environmentsOverview.md) for further details and monitoring. + +### Upgrading an Environment + +The **Upgrade** button opens a configuration panel where you can adjust the resources allocated to a specific environment, enhancing its capabilities based on your project needs. + +:::tip +The current configuration settings for the environment are pre-selected by default, making it easy to adjust specific elements as needed. +::: + +The upgrade panel includes the Environment Configuration options, consistent with the settings available in the [Step 3: Configure Application Details section](./myApps.md#environment-configuration) during initial app creation. Changes can be applied by clicking "Save Changes" or discarded by selecting Cancel . + + + +:::tip +Billing adjustments are prorated for the remaining duration of the current billing cycle, as displayed in the summary panel to the right. +::: + +:::info +If the Database Backup Service was enabled during the initial creation of the environment, it remains locked and cannot be deselected in the upgrade configuration. +::: + +### Deleting an Environment + +The **Delete** button removes the selected environment (except Development) after confirmation: + + + + + + + + + + diff --git a/docs/cloud/consoleOverview.md b/docs/cloud/consoleOverview.md new file mode 100644 index 0000000000..f5514a1851 --- /dev/null +++ b/docs/cloud/consoleOverview.md @@ -0,0 +1,251 @@ +--- +id: consoleOverview +title: Console Overview +--- + +import Column from '@site/src/components/Column' + +## Overview + +The Console homepage provides a centralized view of all applications associated with your Qodly account. Here, you can access, manage, and monitor various types of applications, including your Sandbox, paid applications, and applications shared with you by other users. + + +## Console Homepage + +The Console homepage displays an organized list of your applications, grouped by type: + +- [**Sandbox**](./sandbox.md): Appears as a separate section, with a single entry (since each user is limited to one Sandbox at a time). + + +- [**My Apps**](./myApps.md): Lists all applications you’ve created, including any paid applications or clones of the Sandbox. + + +- **Shared Applications**: Lists applications owned by other users that have been shared with you. Access permissions vary based on the owner’s settings, allowing you to collaborate with some limitations. + + + +Each application is displayed with key details: + +- **Name**: The name assigned to the application. + +- **Environments**: The number of environments associated with the app (e.g., Development, Staging, Production). + +- **Created At**: The date and time when the application was created. + +- **Status**: The current state of the app (e.g., Created, Running, or Inactive). + +- **Actions**: Quick-access management actions that vary slightly depending on the type of application. + + +## Managing Applications + +Each application, whether Sandbox, My Apps, or Shared Applications, provides a set of actions that you can access directly from the Console homepage. These actions include: + +| Action | Sandbox | My Apps | Shared Applications | +|---------|---------|---------|---------------------| +| **Clone** | Cloning converts the Sandbox into a fully functional paid application with additional features and no Sandbox limitations. | Cloning duplicates the configuration and code of the paid application (excluding data) to create a new project based on the same codebase. | Not Available. | +| **Users** | Allows you to add users for collaborative testing, but with Sandbox limitations. | Allows adding users with various roles (e.g., developer, tester, admin) for full project collaboration. | Not Available. | +| **Delete** | Permanently deletes the Sandbox. | Permanently deletes the paid application. | Not Available. | +| **Wake Up** | Available for the Sandbox when it enters Sleep Mode after inactivity. | Not Available. | Not Available.| + + +## Application Overview Details + +The **Overview Page** in the Console provides a summary of essential information for any application, including Sandbox, paid applications, or Shared Applications. This is the first screen you see upon accessing an application in the Console, giving you a quick snapshot of its current status, resources, and recent activities. Here’s a breakdown of each section: + + + +### Instance Information + +The top section of the Overview page displays key metrics and the status of your application’s environment, helping you monitor its health and resource usage: + + +- **Refresh button**: The button to refresh the information about the environment. + +- **Instance**: Shows the current state of the application instance. + + - **RUNNING**: The instance is active and operational. + + - **PENDING**: The instance is being set up and has not fully started yet. + + - **OFFLINE**: The instance is unavailable or has been shut down. + + +- **Server**: Indicates the server’s current status. + + - **ONLINE**: The server is accessible and fully operational. + + - **OFFLINE**: The server is not accessible. + +- **Disk**: Displays the percentage of disk storage currently in use, providing a quick overview of your storage consumption. This metric helps you manage and adjust storage resources as needed. + + +- **Memory**: Shows the memory utilization percentage of your application. Monitoring memory usage ensures that your application has sufficient resources to operate smoothly. + + +- **Outbound**: Tracks the data consumption of your application, listing both the current usage and the allocated limit (e.g., 94/1024MB). Exceeding your bandwidth limit can lead to additional charges or a throttling of data transfers. + + :::info Edit Alert Button + + + An Edit Alert button is available in this section, allowing you to configure threshold alerts for outbound data usage. This feature ensures that you are notified before reaching critical levels of bandwidth consumption. +

+ Steps to Configure an Alert: + +
+ + + +
+ ::: + +- **Users**: Indicates the number of active users who have access to the environment. + + +- **Version**: Displays the current version of Qodly running in the environment, with updates logged in the Activity section. + + :::info Upgrade to the Latest Version + + + If a new version is available, a (Upgrade to latest version) link will appear beside the version number. Clicking this link initiates the upgrade process. + + + + + + ::: + + :::danger + Upgrading may cause temporary downtime depending on the changes being applied, so plan upgrades during non-critical hours if possible. + ::: + +### Activity History + +Below the instance information, the **Activity** section logs recent actions and events within the application. This is particularly useful for tracking system changes and monitoring user activities over time, like: + +- **Update Version**: Logs version updates of Qodly for the environment, including the user who performed the update. + +- **Sandbox Wake Up**: Indicates when the sandbox was reactivated after a period of inactivity or sleep mode. + +- **Start Server**: Records each instance of the server being started, providing an audit trail of server uptime. + + + + + Each entry in the Activity history includes: +

+ +
+ + + +
+ + +### Accessing Qodly Studio + +To begin working on your application, you can click the **Open Studio** button located in the top-right corner of the Overview page. This button provides direct access to Qodly Studio, where you can build, configure, and customize your application. + + +:::info +Qodly Studio is only accessible in the development environment. Other environments, such as staging or production, do not offer access to Qodly Studio and are primarily intended for testing, showcasing, or final user deployment. +::: + + +## Qodly Account Management + +The account management section in Qodly provides users with functionalities to manage their personal account details, view invoices for applications, and securely log out of the platform. + +### Account Dropdown Menu + +Located in the top-right corner of the Qodly interface, the **Account Dropdown Menu** provides three options: + + + + + + + + + + + +### My Account Page + +The **My Account Page** displays an overview of the user's account details: + +- **Company Name**: The company associated with the account. +- **Name**: The user’s name. +- **Email**: The email address used to access the account. +- **Role**: The user’s assigned role in Qodly. +- **Country**: The user’s country. + + + +This section provides two main actions: + +1. **Update Account Details**: Clicking on **Update Account Details** opens a form where users can update their: + + + + +
+ After editing, click Update to save the changes or Cancel to discard them. +
+ + + +
+ +2. **Change Password**: Clicking on **Change Password** opens a form requiring: + + + + +
+ Once all fields are filled, click Update to apply the changes or Cancel to discard them. +
+ + + +
+ + +### Invoices Page + +The **Invoices Page** provides a comprehensive view of all application invoices, offering detailed financial information and download options. + +- Displays all invoices related to your applications in a tabular format. Columns include: + - **Date**: The invoice issue date. + - **Status**: Payment status (e.g., Paid). + - **Invoice Number**: Unique identifier for the invoice. + - **Total Amount**: Total cost covered by the invoice. + - **Download Invoice**: Allows you to download the invoice as a PDF. + + \ No newline at end of file diff --git a/docs/cloud/dataManagement.md b/docs/cloud/dataManagement.md new file mode 100644 index 0000000000..9497d66bd9 --- /dev/null +++ b/docs/cloud/dataManagement.md @@ -0,0 +1,79 @@ +--- +id: dataManagement +title: Data Management +--- + +import Column from '@site/src/components/Column' + +## Overview + +The **Data** tab provides essential tools for managing and monitoring backups within your application's environment. This feature allows you to schedule regular backups, view backup history, and monitor backup activities. Note that the **Data** tab and backup functionalities are only available with a subscription. + +## Subscription Requirement + +- If you are viewing a shared application, you’ll see a message prompting you to ask the app owner to upgrade the application for backup access. + +- For owned applications without an active subscription, the tab will display an option to **Upgrade subscription**, allowing you to unlock the backup features directly. + +## Data Administration + +The **Data Administration** section includes settings for managing the backup frequency and viewing details about the latest backup. + +- **Frequency**: Displays the current backup schedule, such as daily or weekly, including the specific time (GMT) when backups are performed. This frequency can be set according to your data protection requirements. + +- **Last Backup**: Shows the date and time of the most recent backup, ensuring you can keep track of the latest data preservation point. + + +There are additional actions available to help you manage your backups effectively: + +- **Refresh**: Updates the displayed information to reflect any recent changes to backup settings or the last backup. + +- **Settings (gear icon)**: Opens a dialog where you can configure the backup frequency and other backup-related settings. + + +## Configuring Backup Frequency + +To adjust the backup frequency: + +1. Click the **Settings** (gear) icon within the **Backup Info** section. + +2. Set the desired frequency (e.g., daily, weekly) and specify the time for the backup to occur. + +3. Click **Save** to confirm your changes. + +This configuration ensures that your application data is periodically backed up based on the schedule that best fits your operational needs. + + +## Backup History + +The **Backup History** section provides a log of all completed backups, allowing you to review each backup's details and status. + +- **Time**: Displays the exact timestamp of each backup event. + +- **Type**: Indicates the type of backup (e.g., full backup or incremental backup). + +- **Size**: Shows the size of the backup, helping you manage storage usage. + +- **Qodly Version**: Reflects the application version at the time of backup, allowing for version tracking. + +- **Release**: Displays the release associated with the backup, if applicable. + +- **Status**: Displays the verification status of each backup. Backup verification involves checking data integrity, which may include verifying records and/or indexes to ensure that data can be restored accurately. + + +Each backup entry provides essential actions to manage your backups efficiently: + +- **Download**: Available for each backup entry, allowing you to download a copy of the backup for offline storage or testing. + +- **Restore**: Allows you to restore the application to the state captured in the backup. Note that this action should be used with caution as it will revert your data to the specified backup point. + + +## Activity Log + +At the bottom of the **Data** tab, the **Activity** section tracks recent actions related to data management and backup settings. + +- **Set Backup Frequency**: Logs changes to the backup frequency, including the user who made the change and the specific schedule set. + +- **Create Backup**: Records each instance of a manual or scheduled backup, showing the timestamp and user involved. + +This log helps maintain an audit trail for data management activities, providing transparency and accountability for any changes to backup configurations or data state. \ No newline at end of file diff --git a/docs/cloud/deployment.md b/docs/cloud/deployment.md deleted file mode 100644 index c2e2016297..0000000000 --- a/docs/cloud/deployment.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -id: deployment -title: Release Management and Deployment ---- - -Managing releases and deployments involves a unique approach that links releases between different environments, such as development and staging. This behavior is designed to ensure the integrity and consistency of your deployment pipeline but may lead to specific constraints when it comes to deleting releases. - -## Creating a Release in Development - -When initiating a **release** within the **development** environment, it begins as a standalone release that has not yet been pushed to any other environment. The steps involved include: - -1. Navigate to the **Deploy** tab. - -2. Click on the button, where you can provide a title and a brief description for the release. - -![release](img/release.png) - -:::info -During this phase, you have the freedom to delete this release as needed. - -This is particularly useful for cases where a release in development may have issues or requires modifications before being promoted to other environments. -::: - - -## Release Deployment - -To commence the deployment of a release, simply click on the deployment icon positioned adjacent to the release in question. - - - -

- -:::info -A distinct behavior emerges when a release is deployed to the **staging** environment. Qodly establishes a connection between the releases in the **development** and **staging** environments, linking the release in **staging** with the one in **development**. This linkage is replicated when deploying to the **production** environment, ensuring a continuous deployment process. -::: - -## Inability to Delete a Release - -Once a release becomes connected or is deployed to a subsequent environment, such as the staging phase, deletion of the release is no longer an available option. This restriction is evident through the icon next to the release, which signifies the inability to remove it from either the **development** or **staging** environments. - - - -

- -:::info -This is a deliberate design choice made to ensure that releases are not accidentally removed, which could lead to disruptions or inconsistencies in the deployment process. -::: \ No newline at end of file diff --git a/docs/cloud/application-management.md b/docs/cloud/environmentsOverview.md similarity index 62% rename from docs/cloud/application-management.md rename to docs/cloud/environmentsOverview.md index 6c154e65b6..de1998fee4 100644 --- a/docs/cloud/application-management.md +++ b/docs/cloud/environmentsOverview.md @@ -1,81 +1,24 @@ --- -id: application-management -title: Application Management +id: environmentsOverview +title: Overview --- import Column from '@site/src/components/Column' -When you select an application from the Apps list, it opens a dedicated panel where you can perform various actions: +By default, Qodly applications come with a Development environment, but you can add additional environments as needed for Staging, Production, or other custom purposes. Following best practices, environments are typically named according to their role. -## View Environment Status +:::tip Notes on Environment-Specific Access -You have two options to check the status of every environment: +- **Development Environment**: Since the **Studio** is only available here, developers assigned to the development environment can actively work on the application code and configuration. This environment is ideal for users with development responsibilities. + +- **Others Environments**: These environments do not provide Studio access. They are used for testing and final deployment, where roles like Viewer or limited Admin access may be more common, ensuring stable and controlled use of the application without modification risks. -- In the `Overview`, you can see the status of each [environment](getStarted.md#environments-and-services) represented by an icon: - - - -- Alternatively, you can click on the left-side tabs to manage your apps individually for each environment: - - - -## Stop or restart Qodly Server - -Useful for resetting server memory. - - - -## Open Qodly Studio - -You can directly access your application in Qodly Studio in two ways: - -- By clicking the **Studio** button on the Overview page - - - -- Or, by clicking the "Studio URL" in the **General** tab for the current environment. - - - -## Monitor Resources - -Access the **Metrics** tab of an environment to monitor its resources. - - - -## Update Qodly Server - -Click the cloud icon to update your Qodly Server with the latest provided by the Qodly Platform. - - - -## Invite Developers and Users - -In the **Team** tab, view the list of registered developers and users. Invite users by clicking the **Add user** button and providing their details, including "First Name", "Last Name", "Email Address", and "Profile" (a [role defined in Qodly Studio](../studio/roles/rolesPrivilegesOverview.md)). - - - -## Schedule and Restore Backups - - - -## Preview Your App - -Click the **Preview URL** in the Application Access area to open your application's [home page](../studio/settings.md#start-page). - - - -## Add Custom Domain - -Per app, you can add a domain for validation (details provided by QCMC). - - +::: ## Access Files via SFTP - ### Overview For every environment, you can access your files on the server using the **Secure File Transfer Protocol** (SFTP). This is achieved by clicking the **Access files** button. diff --git a/docs/cloud/getStarted.md b/docs/cloud/getStarted.md deleted file mode 100644 index 34e456aca3..0000000000 --- a/docs/cloud/getStarted.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -id: getStarted -title: Qodly Applications ---- - - -## Application Overview - -The Qodly Cloud Management Console (QCMC) is the portal from which you can manage all your Qodly applications. - -After [logging in to your Qodly account](../concepts/quickstart.md), the QCMC presents an organized display of your Qodly applications on a single page. - - -Your Qodly applications fall into three categories: - -- **Sandbox**: This serves as a trial application where you can freely explore Qodly's features and experiment. Please note that the Sandbox is accessible only in the [development environment](../cloud/getStarted#environments-and-services). -- **Applications**: This section lists all applications you've created, excluding the Sandbox. -- **Shared Applications**: Here, you'll find applications developed by other collaborators and shared with you through invitations. - - - -## Environments and services - -For each application, the [Qodly Server](../concepts/platform.md#qodly-server) is deployed across three distinct instances, referred to as environments: - -- **Development**: This environment is ideal for developers to create, design, and enhance their Qodly applications. -- **Staging**: In this environment, developers, product managers, or quality teams can thoroughly test application features in a configuration that closely simulates the production environment. -- **Production**: The production environment is where users can access and utilize your finalized application. - - -Each environment offers a unique set of services: - -||Development|Staging|Production| -|---|---|---|---| -|Access to Qodly Studio|X||| -|Invite developers|X||| -|Invite users||X|X| -|Data Backup and Restore|||X| -|Updates|X|X|X| - - - -## Cloning Applications - -Rather than starting from scratch, you have the option to clone any existing application and kickstart a new project based on the same codebase. - -To initiate application cloning, locate the desired application in the Apps list and click the **Clone** button: - - - -The cloning process duplicates all your code, except data and resources. - - -## Sleep Mode for Sandbox Applications - -Sandbox environments benefit from an automatic Sleep Mode feature, intended to enhance resource efficiency. - -The Sleep Mode feature is based upon the following principles: - -- **Automatic Sleep Activation**: If your sandbox's Studio is not accessed for a continuous period of 7 days, it will automatically enter Sleep Mode. This is part of our strategy to optimize resource usage. - -- **Easy Reactivation**: You can easily wake your sandbox from Sleep Mode during your next login, resuming your work seamlessly. - -Entering and waking up from sleep mode is automatically handled by the Qodly Cloud. You are notified by messages on screen when accessing the QCMC. - -:::important Important Notice - Deletion Policy - -If the sandbox is not reactivated within 3 months, it will be subject to permanent deletion. -You will receive an email notification before any action is taken, ensuring you're informed at every step. -We believe this feature will not only improve our system's efficiency but also encourage more active engagement with your sandbox projects. - -::: diff --git a/docs/cloud/img/+Environment.png b/docs/cloud/img/+Environment.png new file mode 100644 index 0000000000..2398ef6878 Binary files /dev/null and b/docs/cloud/img/+Environment.png differ diff --git a/docs/cloud/img/GeneralActivity.png b/docs/cloud/img/GeneralActivity.png new file mode 100644 index 0000000000..260a8d7cb0 Binary files /dev/null and b/docs/cloud/img/GeneralActivity.png differ diff --git a/docs/cloud/img/GeneralApplicationAccess.png b/docs/cloud/img/GeneralApplicationAccess.png new file mode 100644 index 0000000000..5133b7c0e6 Binary files /dev/null and b/docs/cloud/img/GeneralApplicationAccess.png differ diff --git a/docs/cloud/img/GeneralApplicationAccessAuthenticated.png b/docs/cloud/img/GeneralApplicationAccessAuthenticated.png new file mode 100644 index 0000000000..bfe1228626 Binary files /dev/null and b/docs/cloud/img/GeneralApplicationAccessAuthenticated.png differ diff --git a/docs/cloud/img/GeneralApplicationAccessCustomDomain.png b/docs/cloud/img/GeneralApplicationAccessCustomDomain.png new file mode 100644 index 0000000000..4b6db3daba Binary files /dev/null and b/docs/cloud/img/GeneralApplicationAccessCustomDomain.png differ diff --git a/docs/cloud/img/GeneralApplicationAccessCustomDomain2.png b/docs/cloud/img/GeneralApplicationAccessCustomDomain2.png new file mode 100644 index 0000000000..9f6084bf18 Binary files /dev/null and b/docs/cloud/img/GeneralApplicationAccessCustomDomain2.png differ diff --git a/docs/cloud/img/GeneralApplicationAccessCustomDomain3.png b/docs/cloud/img/GeneralApplicationAccessCustomDomain3.png new file mode 100644 index 0000000000..c6a6bf0524 Binary files /dev/null and b/docs/cloud/img/GeneralApplicationAccessCustomDomain3.png differ diff --git a/docs/cloud/img/GeneralApplicationAccessPublic.png b/docs/cloud/img/GeneralApplicationAccessPublic.png new file mode 100644 index 0000000000..349f5f217b Binary files /dev/null and b/docs/cloud/img/GeneralApplicationAccessPublic.png differ diff --git a/docs/cloud/img/GeneralApplicationAccessStudio.png b/docs/cloud/img/GeneralApplicationAccessStudio.png new file mode 100644 index 0000000000..da29336440 Binary files /dev/null and b/docs/cloud/img/GeneralApplicationAccessStudio.png differ diff --git a/docs/cloud/img/GeneralEnvironmentInfo.png b/docs/cloud/img/GeneralEnvironmentInfo.png new file mode 100644 index 0000000000..aaea0de633 Binary files /dev/null and b/docs/cloud/img/GeneralEnvironmentInfo.png differ diff --git a/docs/cloud/img/GeneralEnvironmentInfoServer.png b/docs/cloud/img/GeneralEnvironmentInfoServer.png new file mode 100644 index 0000000000..93e172b99e Binary files /dev/null and b/docs/cloud/img/GeneralEnvironmentInfoServer.png differ diff --git a/docs/cloud/img/GeneralEnvironmentInfoUsage.png b/docs/cloud/img/GeneralEnvironmentInfoUsage.png new file mode 100644 index 0000000000..5655eeb6bb Binary files /dev/null and b/docs/cloud/img/GeneralEnvironmentInfoUsage.png differ diff --git a/docs/cloud/img/GeneralEnvironmentInfoUsers.png b/docs/cloud/img/GeneralEnvironmentInfoUsers.png new file mode 100644 index 0000000000..e296cd4f48 Binary files /dev/null and b/docs/cloud/img/GeneralEnvironmentInfoUsers.png differ diff --git a/docs/cloud/img/accountDropdown.png b/docs/cloud/img/accountDropdown.png new file mode 100644 index 0000000000..6641d37dda Binary files /dev/null and b/docs/cloud/img/accountDropdown.png differ diff --git a/docs/cloud/img/activityHistory.png b/docs/cloud/img/activityHistory.png new file mode 100644 index 0000000000..f5568bcfdb Binary files /dev/null and b/docs/cloud/img/activityHistory.png differ diff --git a/docs/cloud/img/addUser1.png b/docs/cloud/img/addUser1.png new file mode 100644 index 0000000000..c5d417bc54 Binary files /dev/null and b/docs/cloud/img/addUser1.png differ diff --git a/docs/cloud/img/addUser2.png b/docs/cloud/img/addUser2.png new file mode 100644 index 0000000000..9cef8b3cdd Binary files /dev/null and b/docs/cloud/img/addUser2.png differ diff --git a/docs/cloud/img/addUser3.png b/docs/cloud/img/addUser3.png new file mode 100644 index 0000000000..f6f3dc2f26 Binary files /dev/null and b/docs/cloud/img/addUser3.png differ diff --git a/docs/cloud/img/addUser4.png b/docs/cloud/img/addUser4.png new file mode 100644 index 0000000000..1b3c1b7ef0 Binary files /dev/null and b/docs/cloud/img/addUser4.png differ diff --git a/docs/cloud/img/addUser5.png b/docs/cloud/img/addUser5.png new file mode 100644 index 0000000000..361fc4d8c7 Binary files /dev/null and b/docs/cloud/img/addUser5.png differ diff --git a/docs/cloud/img/addUser6.png b/docs/cloud/img/addUser6.png new file mode 100644 index 0000000000..9aac91347d Binary files /dev/null and b/docs/cloud/img/addUser6.png differ diff --git a/docs/cloud/img/addUserToEnvironement1.png b/docs/cloud/img/addUserToEnvironement1.png new file mode 100644 index 0000000000..98378886be Binary files /dev/null and b/docs/cloud/img/addUserToEnvironement1.png differ diff --git a/docs/cloud/img/app1.2.png b/docs/cloud/img/app1.2.png deleted file mode 100644 index f9d6c61ff2..0000000000 Binary files a/docs/cloud/img/app1.2.png and /dev/null differ diff --git a/docs/cloud/img/app1.png b/docs/cloud/img/app1.png deleted file mode 100644 index d42e871274..0000000000 Binary files a/docs/cloud/img/app1.png and /dev/null differ diff --git a/docs/cloud/img/app2.png b/docs/cloud/img/app2.png deleted file mode 100644 index 9cc1ea32b5..0000000000 Binary files a/docs/cloud/img/app2.png and /dev/null differ diff --git a/docs/cloud/img/applicationOverview.png b/docs/cloud/img/applicationOverview.png new file mode 100644 index 0000000000..732a1bd757 Binary files /dev/null and b/docs/cloud/img/applicationOverview.png differ diff --git a/docs/cloud/img/backup.png b/docs/cloud/img/backup.png deleted file mode 100644 index 99828983be..0000000000 Binary files a/docs/cloud/img/backup.png and /dev/null differ diff --git a/docs/cloud/img/billingChangePayement.png b/docs/cloud/img/billingChangePayement.png new file mode 100644 index 0000000000..0d45ba0329 Binary files /dev/null and b/docs/cloud/img/billingChangePayement.png differ diff --git a/docs/cloud/img/billingChangePayement2.png b/docs/cloud/img/billingChangePayement2.png new file mode 100644 index 0000000000..2aff457241 Binary files /dev/null and b/docs/cloud/img/billingChangePayement2.png differ diff --git a/docs/cloud/img/billingDownloadInvoice.png b/docs/cloud/img/billingDownloadInvoice.png new file mode 100644 index 0000000000..0f40c7aca4 Binary files /dev/null and b/docs/cloud/img/billingDownloadInvoice.png differ diff --git a/docs/cloud/img/billingDownloadInvoice2.png b/docs/cloud/img/billingDownloadInvoice2.png new file mode 100644 index 0000000000..dc4a08fc37 Binary files /dev/null and b/docs/cloud/img/billingDownloadInvoice2.png differ diff --git a/docs/cloud/img/billingInvoices.png b/docs/cloud/img/billingInvoices.png new file mode 100644 index 0000000000..7b6689755f Binary files /dev/null and b/docs/cloud/img/billingInvoices.png differ diff --git a/docs/cloud/img/billingManageSubscription.png b/docs/cloud/img/billingManageSubscription.png new file mode 100644 index 0000000000..2ef3b4892d Binary files /dev/null and b/docs/cloud/img/billingManageSubscription.png differ diff --git a/docs/cloud/img/billingNextInvoice.png b/docs/cloud/img/billingNextInvoice.png new file mode 100644 index 0000000000..c01973ffde Binary files /dev/null and b/docs/cloud/img/billingNextInvoice.png differ diff --git a/docs/cloud/img/billingNextInvoiceDetails.png b/docs/cloud/img/billingNextInvoiceDetails.png new file mode 100644 index 0000000000..ac9a2e31f6 Binary files /dev/null and b/docs/cloud/img/billingNextInvoiceDetails.png differ diff --git a/docs/cloud/img/billingOverview.png b/docs/cloud/img/billingOverview.png new file mode 100644 index 0000000000..60a16b1660 Binary files /dev/null and b/docs/cloud/img/billingOverview.png differ diff --git a/docs/cloud/img/billingSubscriptionOverview.png b/docs/cloud/img/billingSubscriptionOverview.png new file mode 100644 index 0000000000..f88240f5fd Binary files /dev/null and b/docs/cloud/img/billingSubscriptionOverview.png differ diff --git a/docs/cloud/img/cancel.png b/docs/cloud/img/cancel.png new file mode 100644 index 0000000000..827ae854b9 Binary files /dev/null and b/docs/cloud/img/cancel.png differ diff --git a/docs/cloud/img/changePassword.png b/docs/cloud/img/changePassword.png new file mode 100644 index 0000000000..a92fe46acc Binary files /dev/null and b/docs/cloud/img/changePassword.png differ diff --git a/docs/cloud/img/clone.png b/docs/cloud/img/clone.png deleted file mode 100644 index 0cd712f11b..0000000000 Binary files a/docs/cloud/img/clone.png and /dev/null differ diff --git a/docs/cloud/img/configureAddEnvironment.png b/docs/cloud/img/configureAddEnvironment.png new file mode 100644 index 0000000000..174831c561 Binary files /dev/null and b/docs/cloud/img/configureAddEnvironment.png differ diff --git a/docs/cloud/img/configureAdditionalEnvironment.png b/docs/cloud/img/configureAdditionalEnvironment.png new file mode 100644 index 0000000000..db85258492 Binary files /dev/null and b/docs/cloud/img/configureAdditionalEnvironment.png differ diff --git a/docs/cloud/img/configureDevelopmentEnvironment.png b/docs/cloud/img/configureDevelopmentEnvironment.png new file mode 100644 index 0000000000..5b2f9dee3d Binary files /dev/null and b/docs/cloud/img/configureDevelopmentEnvironment.png differ diff --git a/docs/cloud/img/configureGeneralInfo.png b/docs/cloud/img/configureGeneralInfo.png new file mode 100644 index 0000000000..4c5f10a430 Binary files /dev/null and b/docs/cloud/img/configureGeneralInfo.png differ diff --git a/docs/cloud/img/configureSummary.png b/docs/cloud/img/configureSummary.png new file mode 100644 index 0000000000..c3f6aa9b80 Binary files /dev/null and b/docs/cloud/img/configureSummary.png differ diff --git a/docs/cloud/img/console.png b/docs/cloud/img/console.png deleted file mode 100644 index 50c9c7ccb7..0000000000 Binary files a/docs/cloud/img/console.png and /dev/null differ diff --git a/docs/cloud/img/consoleMyApps.png b/docs/cloud/img/consoleMyApps.png new file mode 100644 index 0000000000..a7fe6bee16 Binary files /dev/null and b/docs/cloud/img/consoleMyApps.png differ diff --git a/docs/cloud/img/consoleOverview.png b/docs/cloud/img/consoleOverview.png new file mode 100644 index 0000000000..be27face1e Binary files /dev/null and b/docs/cloud/img/consoleOverview.png differ diff --git a/docs/cloud/img/consoleSandbox.png b/docs/cloud/img/consoleSandbox.png new file mode 100644 index 0000000000..55f3969444 Binary files /dev/null and b/docs/cloud/img/consoleSandbox.png differ diff --git a/docs/cloud/img/consoleSharedApplications.png b/docs/cloud/img/consoleSharedApplications.png new file mode 100644 index 0000000000..70bc4d5217 Binary files /dev/null and b/docs/cloud/img/consoleSharedApplications.png differ diff --git a/docs/cloud/img/declinePayement.png b/docs/cloud/img/declinePayement.png new file mode 100644 index 0000000000..615dd3aa16 Binary files /dev/null and b/docs/cloud/img/declinePayement.png differ diff --git a/docs/cloud/img/delete.png b/docs/cloud/img/delete.png new file mode 100644 index 0000000000..432202ffa4 Binary files /dev/null and b/docs/cloud/img/delete.png differ diff --git a/docs/cloud/img/deleteUser.png b/docs/cloud/img/deleteUser.png new file mode 100644 index 0000000000..213133fb84 Binary files /dev/null and b/docs/cloud/img/deleteUser.png differ diff --git a/docs/cloud/img/discard.png b/docs/cloud/img/discard.png new file mode 100644 index 0000000000..e70d4ae3f6 Binary files /dev/null and b/docs/cloud/img/discard.png differ diff --git a/docs/cloud/img/edit.png b/docs/cloud/img/edit.png new file mode 100644 index 0000000000..cab57a155f Binary files /dev/null and b/docs/cloud/img/edit.png differ diff --git a/docs/cloud/img/editAlert.png b/docs/cloud/img/editAlert.png new file mode 100644 index 0000000000..3257c20bb9 Binary files /dev/null and b/docs/cloud/img/editAlert.png differ diff --git a/docs/cloud/img/editUser1.png b/docs/cloud/img/editUser1.png new file mode 100644 index 0000000000..df0802f90d Binary files /dev/null and b/docs/cloud/img/editUser1.png differ diff --git a/docs/cloud/img/environementUserList.png b/docs/cloud/img/environementUserList.png new file mode 100644 index 0000000000..b37f404d09 Binary files /dev/null and b/docs/cloud/img/environementUserList.png differ diff --git a/docs/cloud/img/environments.png b/docs/cloud/img/environments.png new file mode 100644 index 0000000000..bc83867feb Binary files /dev/null and b/docs/cloud/img/environments.png differ diff --git a/docs/cloud/img/expand.png b/docs/cloud/img/expand.png new file mode 100644 index 0000000000..fe96ae8c61 Binary files /dev/null and b/docs/cloud/img/expand.png differ diff --git a/docs/cloud/img/instanceInformation.png b/docs/cloud/img/instanceInformation.png new file mode 100644 index 0000000000..cc4817bcb6 Binary files /dev/null and b/docs/cloud/img/instanceInformation.png differ diff --git a/docs/cloud/img/invitationsAwaitingResponse.png b/docs/cloud/img/invitationsAwaitingResponse.png new file mode 100644 index 0000000000..80aaf20bd2 Binary files /dev/null and b/docs/cloud/img/invitationsAwaitingResponse.png differ diff --git a/docs/cloud/img/invite1.png b/docs/cloud/img/invite1.png deleted file mode 100644 index 62ed8436e9..0000000000 Binary files a/docs/cloud/img/invite1.png and /dev/null differ diff --git a/docs/cloud/img/invoices.png b/docs/cloud/img/invoices.png new file mode 100644 index 0000000000..1551907b33 Binary files /dev/null and b/docs/cloud/img/invoices.png differ diff --git a/docs/cloud/img/metrics.png b/docs/cloud/img/metrics.png deleted file mode 100644 index 461c836310..0000000000 Binary files a/docs/cloud/img/metrics.png and /dev/null differ diff --git a/docs/cloud/img/myAccount.png b/docs/cloud/img/myAccount.png new file mode 100644 index 0000000000..adf52d89d9 Binary files /dev/null and b/docs/cloud/img/myAccount.png differ diff --git a/docs/cloud/img/newApp.png b/docs/cloud/img/newApp.png new file mode 100644 index 0000000000..0c31a92f0e Binary files /dev/null and b/docs/cloud/img/newApp.png differ diff --git a/docs/cloud/img/newSandbox.png b/docs/cloud/img/newSandbox.png new file mode 100644 index 0000000000..0ca6ecdcbb Binary files /dev/null and b/docs/cloud/img/newSandbox.png differ diff --git a/docs/cloud/img/openStudio.png b/docs/cloud/img/openStudio.png new file mode 100644 index 0000000000..0de0f584a1 Binary files /dev/null and b/docs/cloud/img/openStudio.png differ diff --git a/docs/cloud/img/payOnYourOwn.png b/docs/cloud/img/payOnYourOwn.png new file mode 100644 index 0000000000..18ecd93e4a Binary files /dev/null and b/docs/cloud/img/payOnYourOwn.png differ diff --git a/docs/cloud/img/preview.png b/docs/cloud/img/preview.png deleted file mode 100644 index 0b6670be50..0000000000 Binary files a/docs/cloud/img/preview.png and /dev/null differ diff --git a/docs/cloud/img/publish.png b/docs/cloud/img/publish.png deleted file mode 100644 index 0848482882..0000000000 Binary files a/docs/cloud/img/publish.png and /dev/null differ diff --git a/docs/cloud/img/refresh.png b/docs/cloud/img/refresh.png new file mode 100644 index 0000000000..1f7d10e0cb Binary files /dev/null and b/docs/cloud/img/refresh.png differ diff --git a/docs/cloud/img/removeUser.png b/docs/cloud/img/removeUser.png new file mode 100644 index 0000000000..56bab4beb7 Binary files /dev/null and b/docs/cloud/img/removeUser.png differ diff --git a/docs/cloud/img/removeUserfromEnvironments.png b/docs/cloud/img/removeUserfromEnvironments.png new file mode 100644 index 0000000000..467169ad76 Binary files /dev/null and b/docs/cloud/img/removeUserfromEnvironments.png differ diff --git a/docs/cloud/img/saveChanges.png b/docs/cloud/img/saveChanges.png new file mode 100644 index 0000000000..4e7bfb48ff Binary files /dev/null and b/docs/cloud/img/saveChanges.png differ diff --git a/docs/cloud/img/studio1.png b/docs/cloud/img/studio1.png deleted file mode 100644 index d654b23cb3..0000000000 Binary files a/docs/cloud/img/studio1.png and /dev/null differ diff --git a/docs/cloud/img/studio2.png b/docs/cloud/img/studio2.png deleted file mode 100644 index f5ab841db3..0000000000 Binary files a/docs/cloud/img/studio2.png and /dev/null differ diff --git a/docs/cloud/img/submit.png b/docs/cloud/img/submit.png new file mode 100644 index 0000000000..f6613a648d Binary files /dev/null and b/docs/cloud/img/submit.png differ diff --git a/docs/cloud/img/subscriptionAddEnvironement.png b/docs/cloud/img/subscriptionAddEnvironement.png new file mode 100644 index 0000000000..439085500d Binary files /dev/null and b/docs/cloud/img/subscriptionAddEnvironement.png differ diff --git a/docs/cloud/img/subscriptionAddEnvironement2.png b/docs/cloud/img/subscriptionAddEnvironement2.png new file mode 100644 index 0000000000..b85bc74be8 Binary files /dev/null and b/docs/cloud/img/subscriptionAddEnvironement2.png differ diff --git a/docs/cloud/img/subscriptionDelete.png b/docs/cloud/img/subscriptionDelete.png new file mode 100644 index 0000000000..28bc4bcff7 Binary files /dev/null and b/docs/cloud/img/subscriptionDelete.png differ diff --git a/docs/cloud/img/subscriptionDelete2.png b/docs/cloud/img/subscriptionDelete2.png new file mode 100644 index 0000000000..d18ea90181 Binary files /dev/null and b/docs/cloud/img/subscriptionDelete2.png differ diff --git a/docs/cloud/img/subscriptionOpen.png b/docs/cloud/img/subscriptionOpen.png new file mode 100644 index 0000000000..9d68a623c0 Binary files /dev/null and b/docs/cloud/img/subscriptionOpen.png differ diff --git a/docs/cloud/img/subscriptionOverview.png b/docs/cloud/img/subscriptionOverview.png new file mode 100644 index 0000000000..ba9b0a1059 Binary files /dev/null and b/docs/cloud/img/subscriptionOverview.png differ diff --git a/docs/cloud/img/subscriptionOverview2.png b/docs/cloud/img/subscriptionOverview2.png new file mode 100644 index 0000000000..4f44f5825a Binary files /dev/null and b/docs/cloud/img/subscriptionOverview2.png differ diff --git a/docs/cloud/img/subscriptionUpgrade.png b/docs/cloud/img/subscriptionUpgrade.png new file mode 100644 index 0000000000..6562177a16 Binary files /dev/null and b/docs/cloud/img/subscriptionUpgrade.png differ diff --git a/docs/cloud/img/subscriptionUpgradePanel.png b/docs/cloud/img/subscriptionUpgradePanel.png new file mode 100644 index 0000000000..1fbf90e42d Binary files /dev/null and b/docs/cloud/img/subscriptionUpgradePanel.png differ diff --git a/docs/cloud/img/templateMoreInfo.png b/docs/cloud/img/templateMoreInfo.png new file mode 100644 index 0000000000..3eb84fedd0 Binary files /dev/null and b/docs/cloud/img/templateMoreInfo.png differ diff --git a/docs/cloud/img/templates.png b/docs/cloud/img/templates.png new file mode 100644 index 0000000000..2cc371120a Binary files /dev/null and b/docs/cloud/img/templates.png differ diff --git a/docs/cloud/img/transferOwnership.png b/docs/cloud/img/transferOwnership.png new file mode 100644 index 0000000000..204f3836fe Binary files /dev/null and b/docs/cloud/img/transferOwnership.png differ diff --git a/docs/cloud/img/transferOwnership2.png b/docs/cloud/img/transferOwnership2.png new file mode 100644 index 0000000000..0a9e922bdc Binary files /dev/null and b/docs/cloud/img/transferOwnership2.png differ diff --git a/docs/cloud/img/update.png b/docs/cloud/img/update.png deleted file mode 100644 index 6efd8c763d..0000000000 Binary files a/docs/cloud/img/update.png and /dev/null differ diff --git a/docs/cloud/img/updateAccount.png b/docs/cloud/img/updateAccount.png new file mode 100644 index 0000000000..506ac9bbc3 Binary files /dev/null and b/docs/cloud/img/updateAccount.png differ diff --git a/docs/cloud/img/upgradeToLatestVersion.png b/docs/cloud/img/upgradeToLatestVersion.png new file mode 100644 index 0000000000..023a2a47d4 Binary files /dev/null and b/docs/cloud/img/upgradeToLatestVersion.png differ diff --git a/docs/cloud/img/userCard.png b/docs/cloud/img/userCard.png new file mode 100644 index 0000000000..401284bbf4 Binary files /dev/null and b/docs/cloud/img/userCard.png differ diff --git a/docs/cloud/img/userList.png b/docs/cloud/img/userList.png new file mode 100644 index 0000000000..a576a807db Binary files /dev/null and b/docs/cloud/img/userList.png differ diff --git a/docs/cloud/myApps.md b/docs/cloud/myApps.md new file mode 100644 index 0000000000..115d70bc7c --- /dev/null +++ b/docs/cloud/myApps.md @@ -0,0 +1,178 @@ +--- +id: myApps +title: My Apps +--- + +import Column from '@site/src/components/Column' + +## Overview + +The **My Apps** area is where you can manage all the applications you’ve created in Qodly, including paid applications and any cloned from the Sandbox environment. This area provides access to essential management options, configuration settings, and monitoring tools, enabling you to control every aspect of your applications. + + +## Creating a New Application + +To create an app in the Console, follow the steps below, using the provided screenshots for guidance. Each step includes specific details on the configuration options available during setup. + +### Step 1: Navigate to "My Apps" + + + +
    +
  1. Go to the My Apps section in the Console.
  2. +
    +
  3. Click the New App button on the right side of the page or in the sidebar to begin the application creation process.
  4. +
+
+ + + +
+ + +### Step 2: Choose a Template + +After selecting **New App**, you’ll be directed to the **Template Selection** page, where a variety of templates are available to serve as starting points. + +1. Browse through the list of templates to find one that fits your project needs. Templates come with pre-configured code and settings suited for different types of projects. + + +2. **Blank Template**: If you prefer a completely custom setup without any pre-built code, select the Blank Template. + +3. **More Info**: Click **More Info** under a template to view additional details, such as images, a description, author information, and the supported language. + + +4. Once you’ve chosen a template, click **Create** to proceed. + + +### Step 3: Configure Application Details + +You’ll now enter the **Application Configuration** page, where you’ll provide essential information and allocate resources for your new app, like: + +- **Application Name**: Enter a unique name for your application. This name will be visible in the Console and can be updated later if needed. +- **Field**: Select the global domain or purpose of your application (e.g., "E-commerce" or "Project Management"). +- **Description**: Provide a short description of your app’s purpose to help identify it within the Console. +- **Tags**: Add tags to categorize your app. This feature is useful for organizing and searching for applications. To add a tag, type it in and press **Enter**. + + + +#### Environment Configuration + +The next section allows you to configure resources for each environment associated with the app. By default, only the **Development Environment** is available. + +1. **Qodly Power**: Choose the required computing power for your environment. Options vary by memory and CPU configurations (e.g., Power 1 with 2 GB memory and 2 CPU, Power 2 with 4 GB memory and 2 CPU). +2. **Storage**: By default, you receive 100 GB of free storage. Additional storage can be added based on the anticipated needs of your app. +3. **Backup**: Enable the backup feature if needed. By default, backups are not available but can be purchased as an add-on based on the storage size. +4. **Network**: Configure the data transferred over the network. The default allocation is 1 GB, with options to add more data if your application requires it. + + + + + + + As you make selections for each environment resource, the total estimated cost will be displayed on the upper-right side of the page, allowing you to budget effectively. + + + + + + + +#### Adding Additional Environments + +1. Click the **Add Environment** button if you want to configure deployment environments like Staging or Production. + + + + +
    +
  1. For each new environment, provide a Name and a Description.
  2. +
    +
  3. Customize the configuration separately for each environment, allowing you to tailor resources to specific development stages.
  4. +
+
+ + + +
+ + +### Step 4: Finalize Billing + +Upon creating an app, you are prompted to finalize billing by choosing one of two options: + +- **Option 1: Pay on Your Own**: Cover the app’s expenses using your own payment method. + + + +- **Option 2: Transfer Ownership**: Invite someone else to take responsibility for the app's subscription. + + + +#### Option 1: Pay on Your Own: + +If you decide to cover the application expenses yourself, you will be guided through a billing and payment process: + +- **Billing Details Page**: This page allows you to enter or update the billing details required for the subscription. Once your information is complete and verified, click Proceed to Payment to move to the next step. + +- **Secure Payment Page**: On this page, you will securely enter your payment details to finalize the subscription. Once all details are complete, click Submit to process your payment. + + +#### Option 2: Transfer Ownership: + +If someone else will be responsible for the payment, you can transfer ownership of the application to them. Here’s how this process works: + +- Enter the email of the person who will pay for the subscription. + + +:::info +The system ensures you cannot send the invitation to your own email address, displaying an error if attempted. +::: + +- Once the invitation is sent, the app is moved to the Invitations Awaiting Response section until the recipient accepts the invitation. + + +:::info Invitations Awaiting Response +This section displays all pending invitations for transferring app ownership. For each invitation, the following actions are available: + +- Resend Invitation: Re-send the request to the recipient. + +- Cancel Invitation: Remove the request if no longer needed. +::: + + +- The invited individual will receive an email with a link to accept the ownership transfer. Once they accept: + + - They will gain full ownership of the application. + + - They will proceed to fill out their billing details and complete the payment. + + +:::info Decline Payment + + + + If the recipient chooses to decline: +

+ +
+ + + +
+::: + + +### Step 5: Access Your New App + +After completing the configuration and payment steps: + +1. Your development environment will be created, and the app will be listed under **My Apps**. +2. **Studio Access**: You’ll see an option to open the app in Qodly Studio, where you can start building and customizing your application. + + +Once created, the application will appear in the My Apps list. This list, displays all applications you have created, excluding the Sandbox environment. \ No newline at end of file diff --git a/docs/cloud/releaseManagementDeployment.md b/docs/cloud/releaseManagementDeployment.md new file mode 100644 index 0000000000..786bd2a1ef --- /dev/null +++ b/docs/cloud/releaseManagementDeployment.md @@ -0,0 +1,58 @@ +--- +id: deployManagement +title: Deploy Management +--- + +import Column from '@site/src/components/Column' + + +## Overview + +The **Deploy** tab offers crucial tools for managing and deploying application versions in a controlled and organized way. Each step in the deployment process helps ensure your application’s integrity and functionality before it reaches end-users. This tab is typically used to manage staging and production environments, where stable and tested versions are essential. + +The key difference between development and deployment environments is the availability of Qodly Studio: + + + + +## Creating a Release in Development + +When creating a **release** in the **development** environment, it initially exists as an independent release that hasn’t yet been pushed to other environments. The steps to create a release include: + +1. Go to the **Deploy** tab. + +2. Click on the button, then provide a title and a brief description for the release. + +![release](img/release.png) + +:::info +At this stage, you can freely delete the release if needed. + +This flexibility is useful when a release in development has issues or requires modifications before it is promoted to other environments. +::: + + +## Deploying a Release + +To deploy a release, simply click on the deployment icon next to the release you wish to deploy. + + + +

+ +:::info +When deploying to the **staging** environment, Qodly creates a link between the releases in the **development** and **staging** environments. This connection ensures that the release in **staging** corresponds to the one in **development**. The same linkage occurs when deploying to **production**, supporting a seamless deployment process. +::: + + +## Restrictions on Deleting a Release + +Once a release is deployed to a subsequent environment, such as **staging**, it can no longer be deleted. This restriction is indicated by the icon beside the release, signifying that it cannot be removed from the **development** or **staging** environments. + + + +

+ +:::info +This design choice helps prevent accidental removal of releases, which could cause disruptions or inconsistencies in the deployment process. +::: \ No newline at end of file diff --git a/docs/cloud/resourceMonitoring.md b/docs/cloud/resourceMonitoring.md new file mode 100644 index 0000000000..002bb3b453 --- /dev/null +++ b/docs/cloud/resourceMonitoring.md @@ -0,0 +1,264 @@ +--- +id: resourceMonitoring +title: Resource Monitoring +--- + +import Column from '@site/src/components/Column' + + +## Overview + +Each application environment is an isolated instance in which you can configure specific resources and settings tailored to different stages of development. + + +## General Tab + +The **General Tab** contains core information and key actions, providing an at-a-glance view of the environment's current state. + +### Environment Info + + + +#### 1. **Usage**: + + + + The Usage card contains: +

+ +
+ + + +
+ +#### 2. **Users**: + + + + The Users card indicates the number of users with access to this environment. + + + + + + +#### 3. **Server Status**: + + + + The Server Status card contains: +

+ +
+ + + +
+ + +### Application Access + +This section provides links for accessing the application through different URLs, depending on the environment's authentication and access configuration: + + + +#### 1. **Studio URL**: + + + + Qodly Studio URL directs to the environment directly in Qodly Studio, where you can develop and configure the application. You can either open this in a new tab or copy the URL. + + + + + + +#### 2. **Authenticated URL**: + + + + The Authenticated URL directs to a login-protected version of the application, where only users in the application’s user registry have access. This link ensures that only authorized users can access this environment securely. You can either open this in a new tab or copy the URL. + + + + + + +#### 3. **Public URL (Development Environment Only)**: + + + + The Authenticated URL provides a publicly accessible URL, allowing anyone to access the application without authentication. This is useful for exposing specific pages to the public or setting up custom login management. + + + + + + + - **Activate Public Access**: Click to enable public access. A confirmation dialog will appear to verify your choice. + + - **Deactivate Public Access**: Click to remove public access, making the environment private again. + + - **Copy Link**: Copies the URL for easy sharing. + + :::note + By default, the public URL is disabled. You can **Activate public access** to make the environment publicly accessible, suitable for applications that don't require authentication for end users. + ::: + +#### 4. **Custom Domain (Deployment Environment Only)**: + +Allows you to use a custom domain for the application in deployment environments (such as Staging or Production) to create a professional, branded experience. + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +### Activity + +The **Activity** section logs significant events and actions taken within the environment, offering an audit trail for tracking changes. Typical entries include: + +- **Create Application**: Logs the creation of the environment. +- **Server Actions**: Logs actions like server start, stop, or restart. +- **Updates**: Tracks version updates and configuration changes. + + + + Each activity entry includes: +

+ +
+ + + +
+ +## Metrics Tab + +In the **Metrics** tab, you have access to detailed monitoring graphs for various performance metrics in your application environment. This tab allows you to visualize resource consumption over time, enabling effective tracking and optimization. + +At the top of the Metrics tab, there is a date range selector where you can specify the time period you want to analyze. The refresh button allows you to reload the metrics for the most up-to-date data. Also, each graph includes an export icon, allowing you to save the graph as an image. This feature is helpful for reporting or further analysis outside the Console. + +### CPU Usage (%) +This chart displays the percentage of CPU capacity utilized by the application over a selected time period. It helps you identify peaks in CPU demand, allowing you to understand processing load and optimize your application’s performance accordingly. + +### Memory Usage (%) +The memory usage graph shows the percentage of RAM currently being used by the application. Monitoring memory helps ensure your application has sufficient resources and can inform you if additional memory allocation is needed. + +### Disk Usage (%) +This metric illustrates the percentage of disk storage currently occupied. Disk usage monitoring is crucial for applications with large datasets or significant storage requirements. + +### Network RX IN (Bytes) +Network RX IN shows the incoming data received by your environment, measured in bytes. This metric is useful for tracking inbound data, which can help identify if your application is receiving high volumes of data at any given time. + +### Network TX OUT (Bytes) +Network TX OUT displays the outgoing data transmitted from your environment. This metric is essential for monitoring outbound data usage, particularly if your application regularly sends data to external sources. + +### Network Transmitted (Kilobytes) +This metric indicates the total data transmitted over the network, aggregated over time in kilobytes. It provides a broader view of your network usage, helping you manage data transmission and avoid potential network bottlenecks. + + +## Logs Tab + +The **Logs Tab** in the Console provides access to detailed log records for monitoring, debugging, and tracking system events within your application environments. This tab allows you to filter and download logs based on a specific date range and log file type. + +:::tip +The Date Range Selection feature allows you to filter log entries to a specific period: + +- Start Date: Select the beginning date and time for the logs you want to view. + +- End Date: Select the ending date and time for the logs. + +Using the date range filter helps focus on specific periods, which is especially helpful when investigating incidents or tracking performance over time. +::: + +### Log File Type + +This section provides a drop-down menu where you can select the type of logs to view. The available log types include: + + - **qodlySTDOUTLog**: Contains standard output logs from the application, capturing routine system and application messages. + + - **4DDiagnosticLogServer**: Includes diagnostic data related to server performance and behavior, useful for more technical troubleshooting and server analysis. + +Once you select a log type, click Refresh to update the log data based on the selected type and date range. + +:::info +The Refresh Button updates the log display with the latest entries that match your selected date range and log type. This is especially useful after changing filters or when logs are dynamically updated during active monitoring. +::: + +### Log Entries Display + +The Log Entries Display shows a list of log events that match your selected filters. Each entry contains: + +- **Date**: The date and time of the log event. +- **Log Details**: Describes the event or action, including any associated identifiers, error messages, and user actions. Like: + - `INFO - New user connected`: Indicates a successful user connection to the system, along with specific identifiers like task ID and hostname. + - `ERROR - cannot create socket`: Shows an error with details on the task attempting the action, which helps in diagnosing network or socket issues. + + +### Downloading Logs + +The Download Button enables you to export the filtered log entries: + +- After specifying the date range and log type, click Download to save the log data as a file. + +- This file is useful for offline analysis, reporting, or archiving log data for future reference. diff --git a/docs/cloud/sandbox.md b/docs/cloud/sandbox.md new file mode 100644 index 0000000000..3b33218a0b --- /dev/null +++ b/docs/cloud/sandbox.md @@ -0,0 +1,84 @@ +--- +id: sandbox +title: Sandbox +--- + +import Column from '@site/src/components/Column' + +## Overview + +The Sandbox in Qodly is a free environment designed for exploring, testing, and learning. It’s ideal for trying out new templates, previewing Qodly features, and experimenting with the platform without any cost or commitment. However, it has limitations to ensure it's used for trial purposes only: + +:::info +The Sandbox environment is restricted and has specific limitations to prevent long-term use or complex deployment scenarios. +::: + +## Usage Rules + +Using the Sandbox environment comes with certain rules and limitations: + +- **Trial Usage**: Ideal for trying out Qodly features, familiarizing yourself with the platform, or creating a demo for stakeholders. + +- **Limited to One Sandbox per User**: Each user can only create one Sandbox application. However, if needed, you can delete your current Sandbox and create a new one at any time. + +- **Single Development Environment**: Unlike regular applications, the Sandbox only includes a single development environment. Additional environments cannot be added. + +- **No Backup or Support**: The Sandbox environment is not backed up, and no official support is provided. It is designed for exploration and testing. + +- **Watermarked Pages**: All pages within the Sandbox display a watermark, indicating that it is a trial environment. + +- **Resource Restrictions**: The Sandbox environment is set to the default configuration, similar to the lowest-tier paid environment (Power 1, 100GB storage, and 1GB data outbound). + + +## Creating the Sandbox + +To create a new Sandbox, follow these steps: + + + + + + + + + + + +- **Select a Template**: + + 1. Browse through the list of templates to find one that fits your project needs. Templates come with pre-configured code and settings suited for different types of projects. + + + 2. **Blank Template**: If you prefer a completely custom setup without any pre-built code, select the Blank Template. + + 3. **More Info**: Click **More Info** under a template to view additional details, such as images, a description, author information, and the supported language. + + + 4. Once you’ve chosen a template, click **Create** to proceed. + +Once created, you’ll see an overview of your Sandbox in the cosole homepage. + + +## Sleep Mode + +To optimize resource usage, the Sandbox utilize an automatic Sleep Mode feature, which helps conserve resources when the environment is inactive: + +- **Automatic Sleep Mode**: If the Sandbox remains inactive for more than 7 days, it will automatically enter Sleep Mode. + +- **Manual Wake Up**: You can reactivate the Sandbox by clicking the `Wake Up` button, making it operational immediately. Each manual wake-up action is documented in the Activity log, including the time and user information. + +- **Notifications**: Qodly sends email notifications to inform you when your Sandbox enters or exits Sleep Mode. + + +## Deletion Policy + +If a Sandbox environment remains inactive for an extended period, Qodly may permanently delete it according to the following policy: + +- **3-Month Inactivity Threshold**: If the Sandbox is not reactivated within 3 months, it will be permanently deleted. + +- **Notification Prior to Deletion**: Before deletion, Qodly will send an email notification, giving you an opportunity to save any necessary data or take other actions. + diff --git a/docs/cloud/userAccountManagement.md b/docs/cloud/userAccountManagement.md new file mode 100644 index 0000000000..05f0819b86 --- /dev/null +++ b/docs/cloud/userAccountManagement.md @@ -0,0 +1,399 @@ +--- +id: userAccountManagement +title: User Management +--- + +import Column from '@site/src/components/Column' + +## Overview + +Qodly provides a robust user management system with two distinct interfaces: + + +| Interface | Purpose | Key Features | Access | +|-----------------|-------------------|---------------------------|------------------------------------------| +| Users Page | Centralized app-wide user management. | - Add new users or assign existing users to environments.
- Edit user details (name, email, profile).
- Remove users entirely or from specific environments. | App owners and development users only. | +| Team Tab | Environment-specific user management. | - Add new or existing users to the current environment.
- Edit user details for the specific environment.
- Remove users from the environment (with global removal). | App owners and development users only. | + +:::info +Users added to environments other than the Development environment: + +- Cannot access the **Users Page** or **Team Tab (Environment-Specific)**. +- Do not see the app in the **Shared Apps** dashboard. +- Limited to interacting with the app as testers or end-users. +::: + + +## Users Page + +The Users Page offers centralized management of users across all environments in your app. Accessible through the side menu, this interface is tailored for app owners and Development environment users. + + +### Add New User + +If you need to add a new user and assign them to multiple environments: + +1. Navigate to the **Users Page** from the side menu. +2. Click on **Add User**. +3. Fill in the following details: + + + + + + + + + +4. Click **Submit**. + +Users added via the Users Page are listed as individual cards on the page. Each card displays the user’s email address and tags indicating their assigned environments. + + + +:::tip Environment-Specific Assignment +The added user is automatically visible in the Team Tab of the assigned environments, maintaining consistency between the Users Page and environment-specific views. Changes to user details made in either interface are synchronized. +::: + + +### Edit User Details + +Editing a user's details in the Users Page is environment-specific, meaning you must update their information individually for each environment they are assigned to. Follow these steps to make changes: + + + +
    +
  1. Navigate to the Users Page and identify the user whose details you want to edit.
  2. +
    +
  3. Expand the user card to reveal their assigned environments.
  4. +
    +
  5. Click the button next to the specific environment where the user is assigned.
  6. +
+
+ + + +
+ + + +
    +
  1. Modify the following fields as needed:
  2. +
    +
      +
    • First Name and Last Name.
    • +
      +
    • Profile for the selected environment.
    • +
      +
    +
    +
  3. Click Update.
  4. +
+
+ + + +
+ +:::tip Outcome: + +The updated details will immediately reflect in: +- The Users Page for the corresponding environment tag. +- The Team Tab of the associated environment. +::: + + +### Delete User + +To completely delete a user from the application, removing them from all environments where they are assigned, follow the steps below: + + + +
    +
  1. Navigate to the Users Page and identify the user you want to delete.
  2. +
    +
  3. Click the Delete User button located on the user card.
  4. +
+
+ + + +
+ + + +
    +
  1. In the confirmation dialog, confirm the deletion to finalize the action.
  2. +
+
+ + + +
+ +:::tip Outcome: +The user is permanently removed from the app: +- Their entry is deleted from the Users Page. +- They are unassigned from all environments. +- They lose all access to the app and its environments. +::: + +### Remove User from a Specific Environment + +Removing a user from a specific environment can be done through the Users Page, while keeping their assignments to other environments intact. Follow these steps: + + + +
    +
  1. Navigate to the Users Page and identify the user you want to remove.
  2. +
    +
  3. Expand the user card to view all the environments they are assigned to.
  4. +
    +
  5. Click the button next to the specific environment where the user is assigned.
  6. +
+
+ + + +
+ + + +
    +
  1. In the confirmation dialog, confirm the removal to finalize the action.
  2. +
+
+ + + +
+ +:::tip Outcome: + +If the User: + +- Has Multiple Environments, the user remains listed in the Users Page and is still assigned to other environments. + +- Has Only One Environment, removing the user from their only assigned environment results in their complete deletion from the app. + +The removal action ensures data consistency across the Users Page and the corresponding Team Tab of the environment. +::: + +### Add User to a Specific Environment + +Adding a user to a specific environment from the **Users Page** is straightforward and ensures that the user gains the appropriate access based on the environment. + + + +
    +
  1. Navigate to the Users Page and identify the user you want to assign to another environment.
  2. +
    +
  3. Click the + Environment button located on the user card.
  4. +
+
+ + + +
+ + + +
    +
  1. Fill in the details in the Add User to Environment dialog:
  2. +
    +
      +
    • The Email Address field will auto-populate with the selected user's email.
    • +
      +
    • Optionally, update the First Name and Last Name.
    • +
      +
    • Select the desired Environment (e.g., Staging, Production) from the dropdown. The Environment dropdown menu will only display the environments that the user is not yet assigned to. Environments where the user is already added will not appear in the dropdown.
    • +
      +
    • Assign a Profile for the selected environment (e.g., Admin, Viewer).
    • +
      +
    +
    +
  3. Click Submit to confirm and finalize the action.
  4. +
+
+ + + +
+ +:::tip Outcome: +- The user is now assigned to the newly selected environment. +- The updated assignment is reflected in the user's card on the **Users Page**. +- The user will also appear in the **Team Tab** of the newly assigned environment. +::: + + +## Team Tab (Environment-specific) + +The Team Tab provides environment-specific user management and is accessible within each environment. This tab is ideal for handling users assigned to a particular environment. + +### Add New User to a Specific Environment + + +To add a new user or assign an existing user to the environment you’re managing: + +1. Open the **Team Tab** from the selected environment (e.g., Dev, Staging, Production). +2. Click on the **Add User** button +3. In the dialog, select one of the following options: + + + + + + + + + + + + +
    +
  1. Fill in the following details:
  2. +
    +
      +
    • First Name and Last Name (optional).
    • +
      +
    • Assign a Profile (e.g., Admin, Viewer).
    • +
    +
+
+ + + +
+ +4. Click **Submit**. + +:::tip Outcome: +Users added through the Team Tab for a specific environment are displayed in the user list of that environment. + + +These users will also appear in the Users Page with a tag representing the environment to which they were assigned. +::: + + +### Edit User Details + +Editing a user’s details in the Team Tab is specific to the environment where the user is assigned. Any changes made are applicable only for that particular environment. + + + +
    +
  1. Open the Team Tab from the selected environment (e.g., Dev, Staging, Production.
  2. +
    +
  3. Click the button next to the user.
  4. +
+
+ + + +
+ + + +
    +
  1. Modify the following fields as needed:
  2. +
    +
      +
    • First Name and Last Name.
    • +
      +
    • Profile for the selected environment.
    • +
      +
    +
    +
  3. Click Update.
  4. +
+
+ + + +
+ +:::tip Outcome: + +The updated details will immediately reflect in: + +- The Team Tab for the environment where the edits were made. + +- The Users Page, showing the updated information for the corresponding environment. +::: + +:::info +Changes made in the Team Tab do not affect the user’s details in other environments. +::: + + +### Remove User from a Specific Environment + +The Team Tab allows you to remove a user from a specific environment without affecting their assignments in other environments. Follow these steps for an environment-specific user removal: + + + +
    +
  1. Navigate to the Team Tab from the selected environment (e.g., Dev, Staging, Production) and identify the user you want to remove.
  2. +
    +
  3. Click the button next to the specific user.
  4. +
+
+ + + +
+ + + +
    +
  1. In the confirmation dialog, confirm the removal to finalize the action.
  2. +
+
+ + + +
+ +:::tip Outcome: + +If the User: + +- Has Multiple Environments, the user remains listed in the Users Page and is still assigned to other environments. + +- Has Only One Environment, removing the user from their only assigned environment results in their complete deletion from the app. + +The removal action ensures data consistency across the Users Page and the corresponding Team Tab of the environment. +::: + + +## Summary of Behavior + +| **Action** | **Users Page** | **Team Tab** | +|-----------------------------|--------------------------------------------|---------------------------------------------| +| **Add New Users** | Globally add and assign to environments. | Add to the current environment. | +| **Edit User Details** | Edit for specific environments globally. | Edit for the current environment. | +| **Delete Users Entirely** | Remove from all environments. | Remove users from the app entirely if the current environment is their only assigned environment. | +| **Remove from Environment** | Remove from a specific environment only. | Remove from the current environment only. | \ No newline at end of file diff --git a/docs/concepts/cloud.md b/docs/concepts/cloud.md deleted file mode 100644 index 6a655726b6..0000000000 --- a/docs/concepts/cloud.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -id: cloud -title: Qodly Cloud Architecture ---- - -![cloud architecture](img/cloud-archi.png) - - -## Access - -Within your application's framework, access is categorized into two levels: **Developer Access** and **End User Access**. - - -### Developer Access - -Developers possess entry to the Qodly Studio environment within the development phase, where they engage in coding activities. The procedure for gaining Qodly Studio access mandates a sequence of steps encompassing transit through a Content Delivery Network (CDN) and a Web Application Firewall (WAF). These measures reinforce security measures, providing a shield against potential threats. - -### SFTP Access - -Developers are empowered to utilize SFTP for file uploads and downloads across all environments. To realize SFTP access, developers traverse a Network Load Balancer along with an Identity Service, which collectively handles authentication and authorization requirements. - -### End User Access - -End users are granted authorization to interact with renderers across all environments. Comparable to developer access, requests from end users are channeled through a CDN and WAF, bolstering security measures before being directed to the appropriate environment via load balancing. - - -## Development steps - -The development process of your application involves the following steps and related [environments](../cloud/getStarted.md#environments-and-services): - -- **Development:** During this phase, code is formulated and subjected to testing within the dedicated development environment (dev environment). Developer access to the studio undergoes stringent security protocols through the incorporation of CDN and WAF. - -- **Staging**: Following the validation process within the dev environment, the code is propagated to the staging environment. In this realm, access requests conform to the same security protocols observed during the development phase. - -- **Production**: Once complete testing in the staging environment concludes, the code is disseminated to the production environment (prod environment). This final step integrates automatic database backups for data integrity. Access to this environment is fortified by a combination of CDN, WAF, load balancing, and identity service mechanisms. - - - -Across each environment, dedicated databases store essential data. Moreover, in the production environment, data undergoes periodic migration to a backup storage repository via a scheduled Cron job. This backup data is subsequently preserved in an S3 bucket, bolstering redundancy and enhancing data protection. - -Throughout the entirety of the developmental life cycle, meticulous oversight is maintained, and all relevant processes and components are meticulously tracked within the App Source code repository. This concerted approach ensures a secure and seamless workflow from inception to deployment. - - -## Cloud technologies - -Qodly Cloud is powered by [**Amazon Web Services**](https://aws.amazon.com/cognito/). - -Every [Qodly Server](../concepts/platform.md#qodly-server) is a container deployed on a Virtual Machine (VM) powered by [AWS Elastic Kubernetes Service](https://aws.amazon.com/eks/) (EKS). - -User access is managed by Qodly Identity Service (QIS) based on [AWS Cognito](https://aws.amazon.com/cognito/). It is a central service to control all users access to Qodly modules. - -Every developer or application user needs to be `declared in QIS` with an appropriate [role](../studio/roles/rolesPrivilegesOverview.md#understanding-roles). Roles allow you to assign assign different permissions at database level for user sessions. - -Automatic scheduled backups are provided for staging and production environment. Backups are stored on [AWS S3](https://aws.amazon.com/s3/) services. - - diff --git a/docs/concepts/first-app.md b/docs/concepts/first-app.md deleted file mode 100644 index 4885ddae08..0000000000 --- a/docs/concepts/first-app.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -id: first-qodly -title: Create your first Qodly application ---- - -Welcome to this Qodly tutorial, where we'll see how to create a Qodly application from scratch. - -:::note - -An efficient way to learn how to develop with Qodly Studio is probably to build and explore [Qodly templates](quickstart.md#step-2-set-up-your-sandbox-and-environment) that are proposed at startup. This tutorial covers basic features such how to add, list, or remove [entities](../orda/data-model.md#entity). - -::: - -## Overview and objectives - -You want to create a "Contacts" application. This application should organize and store your contacts. You want to be able to create new contacts, enter their information, and list all contacts. Of course, you want to be able to sort and query your contacts. - -In this tutorial, we'll see how: - -- create a dataclass and define its attributes to organize your data -- create a Page - -## Step 1: Create an empty application - -:::note - -For convenience, we use the Sandbox category in this tutorial but it can be created in any category. - -::: - -1. If it's not already done, [create your account](quickstart.md) on Qodly Cloud. -2. In the Templates pages - - -## Step 1: Create your account - -1. Go to [**cloud.qodly.com/signup**](https://cloud.qodly.com/signup) and create your account in a few clicks. - - - -2. Copy the verification code from your email and click **Confirm account**. - - - -3. Provide additional information to complete your profile: - - - -4. Click **Submit** to access the Qodly Cloud Management Console. - - -## Step 2: Set Up Your Sandbox and Environment - -1. Choose a Template to create your sandbox application. Two options are available: - - - **Create a sandbox from scratch**: Begin with an empty sandbox and follow the **Welcome Tour** within Qodly Studio. Select the Blank app template. - - **Create a sandbox from a sample**: Start with a sample application containing code and data for reference. -

- - - -2. The sandbox environment will be prepared automatically. This process takes just a few seconds. - - - - -## Step 3: Navigate Qodly Studio and Begin the Welcome Tour - -With the environment ready, it's time to access Qodly Studio and follow the Welcome Tour. - - -1. Click the **Studio** button located on the right side of your application line: - - - -2. Click **Next** to start the Welcome Tour within Qodly Studio! - - - -

- - :::note - - You can skip or reactivate the Welcome Tour anytime through [Qodly Studio Settings](../studio/settings.md#activate-welcome-tour). - - - - ::: - -

- -:::tip - -To learn more, feel free to explore our [**Youtube Channel**](https://www.youtube.com/channel/UCLNHKvjJQZ_5D1ziskba6jg). - -::: \ No newline at end of file diff --git a/docs/concepts/img/cloud.png b/docs/concepts/img/cloud.png deleted file mode 100644 index a3c92495a3..0000000000 Binary files a/docs/concepts/img/cloud.png and /dev/null differ diff --git a/docs/concepts/platform.md b/docs/concepts/platform.md deleted file mode 100644 index 18e8ccf44f..0000000000 --- a/docs/concepts/platform.md +++ /dev/null @@ -1,347 +0,0 @@ ---- -id: platform -title: Qodly Platform Overview ---- - -The Qodly platform is a fully integrated environment where you can develop, test, deploy, and monitor business applications with advanced web interfaces. Qodly is the perfect platform to design and publish powerful back office applications, or sophisticated dashboards, in a record time. - -The Qodly plaform is made of a **Studio**, a **Server**, and a **Cloud platform**, all working together flawlessly to provide you with an end-to-end software platform that can build web business apps in no time. - - -## Qodly Platform - - -![schema-cloud](img/cloud.png) - - -[Click here for more information about the Qodly Cloud architecture](cloud.md) - - -## Qodly Studio - -The Qodly Studio is a new way of building business web applications. Our vision is to provide developers a 100% web-browser-based experience by allowing them to: - -* Design Pages visually by drag and dropping components on a canvas -* Preview pages instantly -* Easily map data with ORDA dataclasses -* directly execute QodlyScript code on web events or qodlysource events -* Code & debug in the browser -* And even edit a data model - -At the end of the road, developers will be able to build complete web business applications using only a web browser and very few lines of QodlyScript code. There is no JavaScript involved. - - -## Qodly Server - -The Qodly platform backend relies on **Qodly Server**. Qodly Server is actually a full stack of integrated servers and development layers and supports all necessary requirements to develop, test, and deploy business web applications. - -Qodly Server includes: - -- an **HTTP server**, handling all incoming requests. It provides a high level of security by supporting [user sessions](#user-sessions) and their associated privileges, connected to your own user directory in the cloud through **Amazon Cognito**. -- a **REST server** with a comprehensive API. The REST server handles requests that access the resources of the Qodly application, for example to get data from the datastore or to execute functions. The REST server exposes an automatically generated REST API to access and manipulate data. For example, if you have an exposed dataclass named "Product", it can automatically return its entities using the `/Product` request. The REST server also has a memory link between the web and the datastore layer to achieve very short processing times. -- a **Web application server**, handling your application Pages and features. -- **Qodly Database**, a built-in relational database. The Qodly Database has extended capabilities to store and process data. Model and data access is done through **ORDA** (*Object Relational Data Access*), an enhanced technology allowing to handle both the model and the data of a database as **objects**. With ORDA, the database is accessed through an abstraction layer, the **datastore** (which is an object itself). The ORM is natively included in the ORDA concept. -- the **QodlyScript** language, that can be used in all layers of the project: to configure the model, the application layer, the qodlysources, the pages, the events. No other language is required to develop a Qodly application. QodlyScript is an object-oriented language containing built-in classes that you can extend, and also user classes. ORDA provides data model classes that are very efficient to handle data. - -All these elements are included in one single executable running under Linux OS, providing the best performances by eliminating unnecessary intermediary connectors. - - -## Qodly Database - -At the heart of the Qodly platform is the **Qodly Database**. Qodly Database is a powerful **relational database** (RDBMS) fully integrated to the ORDA technology. Qodly Database is an evolution of the 4D Database which has proven itself in terms of reliability and robustness for over 30 years. - -Qodly Database is a **nosql** database. Queries are expressed using a natural syntax and automatically optimized. - -Unlike other databases that require the addition and configuration of an external ORM (Object Relational Mapping) component, the Qodly Database is automatically available as an object thanks to the dynamic ORM layer implemented by the [ORDA technology](#the-orda-concept). In addition to performance, this architecture allows direct access to the datastore and the application API. Any change in the underlying model is automatically available in the API. - -### Data types - -The following table lists all available Qodly Database scalar data types and how they are handled in the QodlyScript language: - -|Data Types |Language support|Description| -|---|----|---| -|Text|`string` |A sequence of characters up to 2 GB| -|String |`string` |A sequence of characters with properties| -|UUID|-|Universally Unique Identifier: a 16-bytes (128 bits) number containing 32 hexadecimal characters| -|Date|`date` |If the **Date only** property is selected for this attribute type, the date value will include only the "MM/DD/YYYY" format (e.g., "10/05/2023"). Otherwise, the date value including the time, stored in UTC. The date is expressed in the following format: YYYY-MM-DDTHH:MM:ss.SSSZ (e.g., "2023-10-05T23:00:00.000Z" for October 5, 2023 in the Central European Timezone). SSS represents the milliseconds, which can be between 0 to 999. | -|Duration|`time` |A time value which is stored as a duration between two dates | -|Bool|`boolean`|A Boolean value: either true or false.| -|Byte|-|A sequence of 8 bits.| -|Word|-|A 16-bit signed integer. Range: -32,767 to 32,768| -|Number|`real`|A numeric value, can be a Real or a Long. Range: ±1.7e±308 (real), -2^31 to (2^31)-1 (long)| -|Long|`real`|An integer number, greater than or equal to a standard number. Range: -2,147,483,648 to 2,147,483,647 | -|Object|`object`|Object containing any kind of property/value pairs, including collections. This data type can be indexed. Functions and recursive references are not supported| -|Image|`picture` |A path to an image file or an actual image. | -|Blob|`blob` or `object` |Binary Large Object stored as a scalar value or a `4D.Blob` object | - - - -### Capabilities - -The following table lists the maximum capabilities of the Qodly Database per application: - -|Capabilities|Maximum| -|---|---| -|Number of dataclasses|32,767| -|Number of attributes per dataclass|32,767| -|Number of entities per dataclass|1 billion| -|Number of index keys per dataclass|128 billion| -|Size of text attributes|2 GB| -|Size of BLOB attributes|2 GB| -|Size of object attributes|2 GB| -|Number of properties per object attribute|up to 128 billion*| -|Number of transaction levels|Unlimited| - -* depending on the number of index keys - - -### Transactions - -The Qodly Database supports **transactions**. A transaction represents a series of changes made within a context on interconnected data. A transaction is only permanently saved in the datastore when the transaction is validated as a whole by calling `ds.validateTransaction()`. If a transaction has not been validated, whether it was cancelled or because of some external event, the changes are not saved. - - -### User sessions - -When a user connects to a Qodly application, a *user session* is automatically opened on the Qodly server to manage their access with regards to their privileges. A session cookie is generated. - -The session automatically gets [privileges](../studio/roles/rolesPrivilegesOverview.md) according to the **Profile** [associated to the user in the dashboard](../cloud/application-management.md#invite-developers-and-users). - -The Qodly developer can also handle a user session through the [`Session` class](../language/SessionClass.md). For example, you can get the list of privileges associated to the session using the [`getPrivileges()`](../language/SessionClass.md#getprivileges) function, or store user information in the session's [`storage`](../language/SessionClass.md#storage) property. - -:::info - -A Qodly user session never expires, however the parent **Amazon Cognito** session expires after one week of inactivity. - -::: - - -## The ORDA Concept - - -ORDA stands for **Object Relational Data Access**. It is an enhanced technology allowing to access both the model and the data of a database through objects. - -Relations are transparently included in the concept, in combination with [lazy loading](#lazy-loading), to remove all the typical hassles of data selection or transfer from the developer. - -With ORDA, data is accessed through an abstraction layer, the [datastore](../orda/data-model.md#datastore). A datastore is an object that provides an interface to the database model and data through objects and classes. For example, a table is mapped to a [dataclass](../orda/data-model.md#dataclass) object, a field is an [attribute](../orda/data-model.md##attribute) of a dataclass, and records are accessed through [entities](../orda/data-model.md#entity) and [entity selections](../orda/data-model.md#entity-selection). - - -### Why use ORDA? - -Instead of representing information as tables, records, and fields, ORDA uses an alternate approach that more accurately maps data to real-world concepts. - -Imagine the ability to denormalize a relational structure, yet not affect efficiency. Imagine describing everything about the business objects in your application in such a way that using the data becomes simple and straightforward and removes the need for a complete understanding of the relational structure. - -In the ORDA data model, a single dataclass can incorporate all of the elements that make up a traditional relational database table, but can also include values from related parent entities, and direct references to related entities and entity selections. - -A query returns a list of entities called an entity selection, which fulfills the role of a SQL query’s row set. The difference is that each entity "knows" where it belongs in the data model and "understands" its relationship to all other entities. This means that a developer does not need to explain in a query how to relate the various pieces of information, nor in an update how to write modified values back to the relational structure. - - -### How to use ORDA? - -Basically, ORDA handles objects. In ORDA, all main concepts, including the datastore itself, are available through objects. The datastore is automatically mapped upon the underlying database structure. - -ORDA objects can be handled like standard objects, but they automatically benefit from specific properties and methods. - -ORDA objects are created and instanciated when necessary (you do not need to create them). However, ORDA data model objects are associated with [classes](../orda/data-model.md) where you can add custom functions and define [calculated attributes](../orda/data-model.md#calculated-attributes-1). - - - -## Glossary - -Here is an reminder for the main concepts handled by Qodly. - -#### *any* data type - -In this documentation, "any" data type is used to designate the various type of values that can be stored within dataclass attributes. It includes: - -* number -* string -* null -* boolean -* date -* object -* collection -* picture(\*) - -*(\*) picture type is not supported by statistical methods such as* `entitySelection.max( )`. - - -#### Attribute - -An attribute is the smallest storage cell in a relational database (see also [Relation attribute](#relation-attribute)). Do not confuse dataclass attributes and entity attributes: - -* In a dataclass object, each property is a dataclass attribute that maps to a corresponding field in the corresponding table (same name and type). -* In an entity object, entity attributes are properties that contain values for the corresponding datastore attributes. - -*Attributes* and *properties* are similar concepts. "Attribute" is used to designate dataclass properties that store data, while "property" is more generic and defines a piece of data stored within an object. - -#### AttributePath - -An attributePath is the path of an attribute inside a given dataclass or entity. See also [PropertyPath](#propertyPath). - -#### Calculated attribute - -A calculated attribute doesn't actually store information. Instead, it determines its value based on other values from the same entity or from other entities, attributes or functions. When a calculated attribute is referenced, the underlying "calculation" is evaluated to determine the value. Calculated attributes may even be assigned values where user-defined code determines what to do during the assignment. - -#### Class code - -Code for the user class function(s). - -#### Class function - -ORDA objects such as datastores, dataclasses, entity selections, and entities, define classes of objects. They provide specific functions to directly interact with them. These functions are called class functions. Such functions are used by calling them on an instance of the object. - -For example, the `query()` function is a dataclass class function. If you have stored a dataclass object in the `$myClass` variable, you can write: - -```code4d -$myClass.query("name = smith") -``` - -#### Data model class - -Extended class available for a data model object. - -#### Data model object - -Database objects available through the ORDA concept, i.e. datastore, dataclasses, entities and entity selections. - -#### Data model function - -Function of an ORDA data model class. - -#### Dataclass - -A dataclass is an object model that describes the data. Tables in the database provided by the datastore are handled through dataclasses. Each table in the database provided by the datastore has a corresponding dataclass with the same name. Each field of the table is an attribute of the dataclass. - -A dataclass is related to a single datastore. - - -#### DataClass class - -Class for specific dataclass objects, in which you can add custom functions. - -#### Datastore - -A datastore is the interface object provided by ORDA to reference a model and access its data. The model, returned by the `ds` command, is available as a datastore (the main datastore). - -A datastore provides: - -* a connection to a database -* a set of dataclasses to work with the database - - -#### DataStore class - -Class for datastore objects, in which you can add custom functions. - - -#### DataStoreImplementation - -Internal name of the generic DataStore class in the `4D` class store. - -#### Deep copy - -A deep copy duplicates an object and all the references it contains. After a deep copy, a copied collection contains duplicated elements and thus, new references, of all of the orginal elements. See also [Shallow copy](#shallow-copy). - -#### ds - -`ds` is the language command that returns a [datastore](../orda/data-model#datastore) object reference. It matches the datastore available upon the Qodly database. - -#### Entity - -An entity is an object that corresponds to a dataclass model. An entity contains the same attributes as the dataclass. - -An entity can be seen as an instance of the dataclass, like a record of the table matching the dataclass in its associated datastore. However, an entity also contains related data. The purpose of the entity is to manage data (create, update, delete). - - -#### Entity selection - -An entity selection is an object. When querying the datastore, an entity selection is returned. An entity selection is a set of references to entities related to the same dataclass. - -An entity selection contains: - -* a set of 0 to X entity references, -* a length property (always), -* queryPlan and queryPath properties (if asked while querying). - -An entity selection can also be empty. - -#### Function - -See [Class function](#class-function). - -#### Generic class - -Built-in class for ORDA objects such as entities, or dataclasses. Functions and properties of generic classes are automatically available in user extended classes, e.g. `EmployeeEntity`. - - -#### Lazy loading - -Since entities are managed as references, data is loaded only when necessary, i.e. when accessing it in the code or through interface widgets. This optimization principle is called lazy loading. - -#### Main datastore - -The Datastore object matching the opened Qodly database (standalone or client/server). The main datastore is returned by the `ds` command. - -#### Optimistic Lock - -In "optimistic lock" mode, entities are not locked explicitly before updating them. Each entity has an internal stamp that is automatically incremented each time the entity is saved on disk. The entity.save( ) or entity.drop( ) methods will return an error if the stamp of the loaded entity (in memory) and the stamp of the entity on disk do not match, or if the entity has been dropped. Optimistic locking is only available in ORDA implementation. See also "Pessimistic lock". - -#### ORDA - -Object Relational Data Access. See [What is ORDA?](#the-orda-concept) - -#### Pessimistic Lock - -A "pessimistic lock" means that an entity is locked prior to its being accessed, using the `entity.lock()` function. Other processes can neither update nor drop the entity until it is unlocked. See also [Optimistic lock](#optimistic-lock). - -#### Property - -See [Attribute](#attribute). - -#### PropertyPath - -A propertyPath is the path to a property in a given object. If the property is nested in several levels, each level separated is by a dot ("."). - -#### Regular class - -User class not related to an ORDA object. - -#### Related dataclass - -These are dataclasses linked by relation attributes. - -#### Relation attribute - -Relation attributes are used to conceptualize relations between dataclasses (many-to-one and one-to-many). - -* Many-to-one relation (dataclassA references an occurrence of dataclassB): a relation attribute is available in dataclassA and references one instance of dataclassB. -* One-to-many relation (an occurence of dataclassB references several occurrences of dataclassA): a relation attribute is available in dataclassB and references several instances of dataclassA. - -A dataclass can have recursive relation attributes. - -In an entity, the value of a relation attribute can be an entity or an entity selection. - -#### Related entities - -A related entity can be seen as the instance of a relation attribute in a dataclass. - -Entity selections may refer to related entities according to the relation attributes defined in the corresponding dataclasses. - - -#### Session - -When a user connects to a Qodly application, a [Session object](../language/SessionClass.md) is created on the Server (HTTP), used to manage the [user session](#user-sessions). Privileges are associated to user sessions. - - -#### Shallow copy - -A shallow copy only duplicates the structure of elements, and keeps the same internal references. After a shallow copy, two collections will both share the individual elements. See also [Deep copy](#deep-copy). - -#### Stamp - -Used in "optimistic" locking technology. All entities have an internal counter, the stamp, which is incremented each time the entity is saved. By automatically comparing stamps between an entity being saved and its version stored on disk, ORDA can prevent concurrent modifications on the same entities. - -#### Storage attribute - -A storage attribute (sometimes referred to as a scalar attribute) is the most basic type of attribute in a datastore class and most directly corresponds to a field in a relational database. A storage attribute holds a single value for each entity in the class. diff --git a/docs/customComponent/api-reference/webform-editor/v0.2.24.mdx b/docs/customComponent/api-reference/webform-editor/v0.2.24.mdx index 98284a5cbb..50fc9bf33a 100644 --- a/docs/customComponent/api-reference/webform-editor/v0.2.24.mdx +++ b/docs/customComponent/api-reference/webform-editor/v0.2.24.mdx @@ -14,14 +14,14 @@ Allows navigating when we are inside a Page loader, or it can be simply used to ## useStudioPanel -A hook that provides state information and actions for managing the studio panel in a web form editor. The studio panel represents a dynamic side panel that displays information related to the selected element or component. +A hook that provides state information and actions for managing Qodly Studio panel in a web form editor. Qodly Studio panel represents a dynamic side panel that displays information related to the selected element or component. ### *Returns* -`{StudioPanelReturnType} - An object containing the type, open state, current state, and actions to manipulate the studio panel. +`{StudioPanelReturnType} - An object containing the type, open state, current state, and actions to manipulate Qodly Studio panel. :::info -The `useStudioPanel` function returns an object with properties [`type`](#type), [`isOpen`](#isopen), [`current`](#current-1), and `actions` to manipulate the studio panel state. +The `useStudioPanel` function returns an object with properties [`type`](#type), [`isOpen`](#isopen), [`current`](#current-1), and `actions` to manipulate Qodly Studio panel state. The `actions` object includes methods for [updating the state](#setstate), [setting the current type and value](#setcurrent), [closing](#close), [opening](#open), and [opening with a specific type and current value](#openwithcurrent). diff --git a/docs/data-explorer/data-explorer.md b/docs/data-explorer/data-explorer.md index ad39efa290..cf64faeb47 100644 --- a/docs/data-explorer/data-explorer.md +++ b/docs/data-explorer/data-explorer.md @@ -39,7 +39,7 @@ To open the Data Explorer web page for a Qodly application:
  1. Open your application in Qodly Studio.

  2. -
  3. Click on the Data button on the Studio home page:

  4. +
  5. Click on the Data button on Qodly Studio home page:

  6. Or, click on the Data button in the header bar:
diff --git a/docs/faq/faq.md b/docs/faq/faq.md index dffdaf1f8f..873221d6cd 100644 --- a/docs/faq/faq.md +++ b/docs/faq/faq.md @@ -3,7 +3,62 @@ id: faq title: FAQ --- -## Qodly Studio + +## General + +
+ What is included in the Qodly Platform? +The Qodly platform is a fully integrated environment where you can develop, test, deploy, and monitor business applications with advanced web interfaces. Qodly is the perfect platform to design and publish powerful back office applications, or sophisticated dashboards, in a record time. + +The Qodly plaform is made of a **Studio**, a **Server**, and a **Cloud platform**, all working together flawlessly to provide you with an end-to-end software platform that can build web business apps in no time. +
+ + +
+ How is Qodly structured in the cloud? + +Qodly is powered by [**Amazon Web Services**](https://aws.amazon.com/cognito/). + +Every Qodly Server is a container deployed on a Virtual Machine (VM) powered by [AWS Elastic Kubernetes Service](https://aws.amazon.com/eks/) (EKS). + +User access is managed by Qodly Identity Service (QIS) based on [AWS Cognito](https://aws.amazon.com/cognito/). It is a central service to control all users access to Qodly modules. Every developer or application user needs to be declared in QIS with an appropriate [role](../studio/roles/rolesPrivilegesOverview.md#understanding-roles). Roles allow you to assign different permissions at [datastore level](../orda/data-model.md#datastore) for [user sessions](../language/SessionClass.md). + +Automatic scheduled backups are provided for staging and production environment. Backups are stored on [AWS S3](https://aws.amazon.com/s3/) services. + + +
+ + +
+ Where are stored my data? +Your data are stored on AWS (Amazon Cloud). +
+ + +
+ How are handled user accesses? + +![](img/cloud-archi.png) + +#### Developer Access + + +Developers possess entry to Qodly Studio environment within the development phase, where they engage in coding activities. The procedure for gaining Qodly Studio access mandates a sequence of steps encompassing transit through a Content Delivery Network (CDN) and a Web Application Firewall (WAF). These measures reinforce security measures, providing a shield against potential threats. + +Across each [environment](../cloud/environmentsOverview.md#overview), dedicated databases store essential data. Moreover, in the production environment, data undergoes periodic migration to a backup storage repository via a scheduled Cron job. This backup data is subsequently preserved in an S3 bucket, bolstering redundancy and enhancing data protection. Throughout the entirety of the developmental life cycle, meticulous oversight is maintained, and all relevant processes and components are meticulously tracked within the App Source code repository. This concerted approach ensures a secure and seamless workflow from inception to deployment. + + +#### SFTP Access + +Developers are empowered to utilize SFTP for file uploads and downloads across all environments. To realize SFTP access, developers traverse a Network Load Balancer along with an Identity Service, which collectively handles authentication and authorization requirements. + +#### End User Access + +End users are granted authorization to interact with renderers across all environments. Comparable to developer access, requests from end users are channeled through a CDN and WAF, bolstering security measures before being directed to the appropriate environment via load balancing. +
+ + +## Studio
Do I need specific expertise in HTML, CSS, or JavaScript to use Qodly Studio? @@ -30,30 +85,63 @@ To resolve this, the `onInit` event should be used to ensure that all necessary -## Qodly Cloud + + +## Qodly Server
- Why is there only a sandbox category? -Other categories (applications and shared applications) will be open after the Beta phase. + What is Qodly Server? +Qodly Server is actually a full stack of integrated servers and development layers and supports all necessary requirements to develop, test, and deploy business web applications. + +Qodly Server includes: + +- an **HTTP server**, handling all incoming requests. It provides a high level of security by supporting [user sessions](#user-sessions) and their associated privileges, connected to your own user directory in the cloud through **Amazon Cognito**. +- a **REST server** with a comprehensive API. The REST server handles requests that access the resources of the Qodly application, for example to get data from the datastore or to execute functions. The REST server exposes an automatically generated REST API to access and manipulate data. For example, if you have an exposed dataclass named "Product", it can automatically return its entities using the `/Product` request. The REST server also has a memory link between the web and the datastore layer to achieve very short processing times. +- a **Web application server**, handling your application Pages and features. +- **Qodly Database**, a built-in relational database. The Qodly Database has extended capabilities to store and process data. Model and data access is done through **ORDA** (*Object Relational Data Access*), an enhanced technology allowing to handle both the model and the data of a database as **objects**. With ORDA, the database is accessed through an abstraction layer, the **datastore** (which is an object itself). The ORM is natively included in the ORDA concept. +- the **QodlyScript** language, that can be used in all layers of the project: to configure the model, the application layer, the qodlysources, the pages, the events. No other language is required to develop a Qodly application. QodlyScript is an object-oriented language containing built-in classes that you can extend, and also user classes. ORDA provides data model classes that are very efficient to handle data. + +All these elements are included in one single executable running under Linux OS, providing the best performances by eliminating unnecessary intermediary connectors. +
- Where are stored my data? -Your data are stored on AWS (Amazon Cloud). + Can I install a local instance of Qodly Server? +No, Qodly Server is only proposed a a cloud service.
+
+ What are the capabilities of the Qodly database per application? + +|Capabilities|Maximum| +|---|---| +|Number of dataclasses|32,767| +|Number of attributes per dataclass|32,767| +|Number of entities per dataclass|1 billion| +|Number of index keys per dataclass|128 billion| +|Size of text attributes|2 GB| +|Size of BLOB attributes|2 GB| +|Size of object attributes|2 GB| +|Number of properties per object attribute|up to 128 billion*| +|Number of transaction levels|Unlimited| + +* depending on the number of index keys + +
-## Qodly Server
- Can I install a local instance of Qodly Server? -No, Qodly Server is only proposed a a cloud service. + What is the lazy loading? + +Since entities are managed as references, data is loaded only when necessary, i.e. when accessing it in the code or through interface widgets. This optimization principle is called lazy loading. +
-## Qodly Script + +## QodlyScript
What's the difference between cs and ds? @@ -142,9 +230,3 @@ Avoid these common mistakes to ensure a smooth import process:
-## MISC - -
- Can I use Qodly to build public web sites? -Qodly is rather designed to build business applications with a web interface. All users need to be logged. -
diff --git a/docs/concepts/img/cloud-archi.png b/docs/faq/img/cloud-archi.png similarity index 100% rename from docs/concepts/img/cloud-archi.png rename to docs/faq/img/cloud-archi.png diff --git a/docs/get-started/_advanced.md b/docs/get-started/_advanced.md new file mode 100644 index 0000000000..56772e6842 --- /dev/null +++ b/docs/get-started/_advanced.md @@ -0,0 +1,10 @@ +--- +id: advanced +title: Advanced Features +--- + + +- [Custom login](../language/SessionClass.md) +- [Custom Components](../customComponent/overview.md) +- Hybrid App: [Public and Private Access](../cloud/resourceMonitoring.md#application-access) +- Integration diff --git a/docs/get-started/_how-to.md b/docs/get-started/_how-to.md new file mode 100644 index 0000000000..645141ecb3 --- /dev/null +++ b/docs/get-started/_how-to.md @@ -0,0 +1,165 @@ +--- +id: how-to +title: Guide for Developers on a Qodly Platform +--- + +## Overview + +Qodly is a global platform for developing, deploying, and running web applications. It consists of three main components: + +- **Studio**: Develop and test your application. +- **Qodly Server**: Backend including 4D database, Web Server, and ORDA. +- **Cloud Console**: Manage your deployments. + +Everything you need is included in your subscription. You can create your application from start to finish without installing anything. +You can also extend your widgets by building or installing custom components in Qodly Studio. +The best way to start is by creating your Sandbox. It's completely free and perfect for trying out Qodly, exploring samples, and testing new features. You can even create a quick demo for your client before beginning your application. You'll have the option to clone it or start from scratch. + +## Creating your Sandbox + +Creating your Sandbox is the first step for your journey in Qodly. + +1. Sign Up and Log In: Create an account and log in to the platform. +2. Create your Sandbox +3. Start from scratch or choose a template from the catalog. You can delete and reinstall it as needed. The only limitation is one sandbox per user. + +## Starting Your First Project or Application + +1. Clone an existing app by clicking on "Clone" or start a new app and choose an application template. +2. Set Up App Details: Enter the project name, description, and other details. +3. Choose the resources you need for your development environment. +4. Add your billing details. You can add your own card or invite someone else to add theirs. +5. Subscribe. +6. Your development environment is installed. You can go to Studio and start building your app. +7. A welcome tour will begin for a quick overview of Qodly Studio. +8. Start from the frontend by dragging and dropping components (or widgets) or use pre-made templates. Alternatively, begin by preparing your data using the Data Model, code your functions, and then bind them with Qodly Sources to the frontend. +9. Manage roles and privileges in the editor. +10. Your app is ready for testing or deployment. + +## Testing and Debugging + +Different tools are available for testing at any time during your development, integration, and staging phases. +During development, you have two levels of preview: page level and application level. During creating your page, you can preview it at any time. +The previewer lets you view the entire application, making it easy to test all behaviors. If you find a bug, you can activate the debugger, which will guide you step by step to fix it. +To check your data, use the Data Explorer to navigate or edit it. +You can also invite users with specific roles to test the application externally, which is the best way to gather their feedback. + + +## Deployment + +### Publish Your App: Deploy your app to a live environment + +When you're ready to deploy your application, you need to do two things: add a deployment environment and create a release for your application. + +To add a new environment, go to the Subscription page and click the "New Environment" button. + +To create a new release, go to the Deploy tab in your development environment and click "Create New Release." + +Once your new environment is ready, go to its Deploy tab and deploy the release. Your app will be live in this environment. You can add your own domain and configure it with your DNS to make your app accessible with your custom domain. + +### Version Control: Manage different versions of your app + +In the Deploy section, you'll find all the releases you've created. You can organize them however you like: by feature version, client, environment, etc. It's very flexible. You can also restore any release at any time and by environment. + +### Monitor Performance + +In the "Metrics" tab, you can track important metrics for each environment. Monitor your application's CPU and memory usage to understand its behavior. You'll receive an email alert if consumption reaches 80%. This helps you decide if you need to upgrade your environment's power. You can upgrade anytime on the Subscription page. + +Another key metric is data transfer to the Internet, which includes all data your application sends online. Data consumption is billed per GB each month. You can optimize your budget by selecting an Internet data pack on the Subscription page. You can also set a specific email for notifications here. + +### Multi-environments App + +For each app, you start with the Development environment. You can then add as many environments as you want without any limitations. For each environment, you can choose the power and storage size, and you can upgrade them at any time. This flexibility allows you to organize your application according to your needs and context. + +If you're working alone, your app might only need one deployment environment. If you need a staging environment for testing a new release, simply add an additional environment and delete it when you're done testing. If you have one release per client, you can add one environment per client. For a SaaS, you might have one environment per release. + +Define your architecture as you like. + + +## Data Management + +Qodly offers various tools and services to manage and back up your data. You can use different assets for your app, such as icons, photos, videos, and documents, as well as your database data. In this section, you'll find everything you need to manage these types of data. + +### Data Explorer + +Allows you to access and manage your application data seamlessly. From within your studio, you can explore your environment comprehensively, view entities by DataClass, and perform updates or deletions as necessary. + +### Automatic backup + +In the Qodly Console you can activate the backup option. You can choose the frequency of your full backup. Incremental backup is created every hour in between. You can restore any backup at any time. + +### sFTP access + +For downloading or uploading your assets, you have secure access to your environment via sFTP. For additional information, please refer to the provided documentation. + +## Security & Data Access + + +## Maintenance and Updates + +- Regular Updates: Keep your app updated with new features and bug fixes. +- User Support: Provide support and address user issues promptly. + + + +## Advanced Features + +- Custom login +- Custom Components +- Hybrid App: Public and Private Access +- Integration + +## Templates + +- Samples +- App templates +- Pages templates + +## Community and Resources + +- **Join the Community**: Participate in forums and user groups. +- **Documentation**: Refer to official documentation for detailed guides. +- **Training and Tutorials**: Take advantage of training sessions and tutorials. + +## Billing + + +### Pricing Model + +The pricing model in Qodly is simple and flexible. It is based on the environment, the configuration of the environment, and the data transferred to the internet. +Fixed price plan by environment includes standard settings for power, storage, and a pack of internet data. The price per environment increases if you upgrade the power or storage. At the beginning of the next month, we will calculate the data transferred, and you will be billed for any overage data consumed. +If you can estimate your data usage in advance, we recommend upgrading your data plan. The cost per GB is lower, which will save you money. You can decrease the plan at any time. + +### Pricing & Account Management + +For our most up-to-date information, please visit [Qodly pricing](https://qodly.com/pricing). + +### Subscription & Upgrade + +Once you created your new application, on the Subscription page, you can manage all your subscriptions, including creating new environments, upgrading, or deleting them. It provides a global view for each application. +The billing cycle starts at the beginning of the month. Depending on the day you subscribe or upgrade, the difference will be calculated and invoiced. + +### Downgrade (coming soon) + +### Cancelation + +You can cancel at any time in any environment, except the development one, or even cancel the entire application. Your subscription is canceled immediately. + +:::warning + +We highly recommend downloading your assets and exporting your backup before canceling. + +::: + + +## Payment & Invoices + +On the Billing page, you can view all your invoices, the amount of your next invoice, and your credit card information. Qodly uses Stripe to handle payments. If you have a Stripe account, you can use it, or you can add your own card. You can change your card at any time. +If there's an issue with the credit card during renewal, you will automatically receive email alerts from Stripe. You will have very limited access for one month, after which your application will be automatically deleted. Please address the problem promptly as soon as you receive the Stripe notification. + + +## Refunds + +If you're not happy with your Qodly subscription, you can cancel at any time. For any more information, please contact our Sales team at [contact@qodly.com](contact@qodly.com) + +No refunds are given for cancellations. If the Company suspends or terminates your Account or these Terms, you will not receive any refund for unused subscription time, fees, content, data, or anything else. \ No newline at end of file diff --git a/docs/get-started/_security.md b/docs/get-started/_security.md new file mode 100644 index 0000000000..b5d6ccbb69 --- /dev/null +++ b/docs/get-started/_security.md @@ -0,0 +1,8 @@ +--- +id: security +title: Security & Data Access +--- + + + +coming soon \ No newline at end of file diff --git a/docs/get-started/_templates.md b/docs/get-started/_templates.md new file mode 100644 index 0000000000..6f9b719ffa --- /dev/null +++ b/docs/get-started/_templates.md @@ -0,0 +1,9 @@ +--- +id: templates +title: Templates +--- + + +- Samples +- App templates +- Pages templates diff --git a/docs/get-started/community.md b/docs/get-started/community.md new file mode 100644 index 0000000000..fae1813804 --- /dev/null +++ b/docs/get-started/community.md @@ -0,0 +1,25 @@ +--- +id: community +title: Community and Resources +--- + + +## Join the Community + +Participate in forums and user groups: + +- [Qodly Community forum](https://community.qodly.com/) +- [Slack](https://qodly.slack.com/join/shared_invite/zt-20ieeffts-NU57SOXcbakmWgIMnJpStQ#/shared-invite/email) +- [Facebook](https://www.facebook.com/qodlyby4d) +- [X](https://x.com/qodlyby4d) +- [Youtube](https://www.youtube.com/channel/UCLNHKvjJQZ_5D1ziskba6jg) +- [Linkedin](https://www.linkedin.com/showcase/qodly) + +## Documentation + +Refer to the [official documentation](https://developer.qodly.com/docs) for detailed guides. + + +## Training and Tutorials + +Take advantage of training sessions and [tutorials](https://qodly.com/tutorials). diff --git a/docs/get-started/data.md b/docs/get-started/data.md new file mode 100644 index 0000000000..fe209c8331 --- /dev/null +++ b/docs/get-started/data.md @@ -0,0 +1,20 @@ +--- +id: data-management +title: Data Management +--- + +Qodly offers various tools and services to manage and back up your data. You can use different assets for your app, such as icons, photos, videos, and documents, as well as your database data. In this section, you'll find everything you need to manage these types of data. + +## Data Explorer + +The [Data Explorer](../data-explorer/data-explorer.md) allows you to access and manage your application data seamlessly. From within your studio, you can explore your environment comprehensively, view entities by DataClass, and perform updates or deletions as necessary. + +## Automatic backup + +In the Qodly Console you can activate the [backup option](../cloud/dataManagement.md). You can choose the frequency of your full backup. Incremental backup is created every hour in between. You can restore any backup at any time. + +Your data are transferred from your environment and backed up in [AWS S3 services](https://aws.amazon.com/s3/). This process ensures that your information is securely stored in the cloud, protecting it from potential data loss or system failures. Using AWS S3, your data benefits from high durability and availability. The service employs advanced encryption methods to safeguard your information both in transit and at rest. + +## sFTP access + +For downloading or uploading your assets, you have a secure access to your environment via sFTP. For additional information, please refer to the [provided documentation](../cloud/environmentsOverview.md#access-files-via-sftp). \ No newline at end of file diff --git a/docs/get-started/deployment.md b/docs/get-started/deployment.md new file mode 100644 index 0000000000..15f73a8b38 --- /dev/null +++ b/docs/get-started/deployment.md @@ -0,0 +1,32 @@ +--- +id: deployment +title: Deployment +--- + +## Publish Your App: Deploy your app to a live environment + +When you're ready to deploy your application, you need to do two things: [add a deployment environment](../cloud/myApps.md#adding-additional-environments) and [create a release](../cloud/releaseManagementDeployment.md#creating-a-release-in-development) for your application. + +To add a new environment, go to the Subscription page and click the "New Environment" button. + +To create a new release, go to the Deploy tab in your development environment and click "Create New Release." + +Once your new environment is ready, go to its Deploy tab and [deploy the release](../cloud/releaseManagementDeployment.md#deploying-a-release). Your app will be live in this environment. You can [add your own domain](../cloud/resourceMonitoring.md#application-access) and configure it with your DNS to make your app accessible with your custom domain. + +## Version Control: Manage different versions of your app + +In the [Deploy section](../cloud/releaseManagementDeployment.md), you'll find all the releases you've created. You can organize them however you like: by feature version, client, environment, etc. It's very flexible. You can also restore any release at any time and by environment. + +## Monitor Performance + +In the ["Metrics" tab](../cloud/resourceMonitoring.md#metrics-tab), you can track important metrics for each environment. Monitor your application's CPU and memory usage to understand its behavior. You'll receive an email alert if consumption reaches 80%. This helps you decide if you need to upgrade your environment's power. You can upgrade anytime on the Subscription page. + +Another key metric is data transfer to the Internet, which includes all data your application sends online. Data consumption is billed per GB each month. You can optimize your budget by selecting an Internet data pack on the Subscription page. You can also set a specific email for notifications here. + +## Multi-environments App + +For each app, you start with the Development environment. You can then add as many environments as you want without any limitations. For each environment, you can choose the power and storage size, and you can upgrade them at any time. This flexibility allows you to organize your application according to your needs and context. + +If you're working alone, your app might only need a single [deployment environment](../cloud/releaseManagementDeployment.md). If you need a staging environment for testing a new release, simply [add an additional environment](../cloud/myApps.md#adding-additional-environments) and delete it when you're done testing. If you have one release per client, you can add one environment per client. For a SaaS, you might have one environment per release. + +Define your architecture as you like. diff --git a/docs/get-started/first-app.md b/docs/get-started/first-app.md new file mode 100644 index 0000000000..952b0800a8 --- /dev/null +++ b/docs/get-started/first-app.md @@ -0,0 +1,17 @@ +--- +id: first-app +title: Creating an Application +--- + +Here are the main steps in creating a Qodly application: + +1. [Clone](../cloud/consoleOverview.md#managing-applications) an existing app by clicking on "Clone" or start a new app and choose an [application template](../cloud/myApps.md#creating-a-new-application). +2. [Set Up App Details](../cloud/myApps.md#step-3-configure-application-details): Enter the project name, description, and other details. +3. Choose the [resources](../cloud/myApps.md#environment-configuration) you need for your development environment. +4. Add your [billing details](../cloud/myApps.md#step-4-finalize-billing). You can add your own card or invite someone else to add theirs. +5. Subscribe. +6. Your development environment is installed. You can [go to Studio](../studio/overview.md) and start building your app. +7. A welcome tour will begin for a quick overview of Qodly Studio. +8. Start from the frontend by [dragging and dropping components](../studio/pageLoaders/pageLoaderOverview.md) (or widgets) or use [pre-made templates](../studio/pageLoaders/templates.md). Alternatively, begin by preparing your data using the [Data Model](../studio/model/model-editor-interface.md), [code](../studio/coding.md) your functions, and then bind them with [Qodly Sources](../studio/pageLoaders/qodlySources.md) to the frontend. +9. Manage [roles and privileges](../studio/roles/rolesPrivilegesOverview.md) in the editor. +10. Your app is ready for [testing](../studio/pageLoaders/pageLoaderOverview.md#preview) or [deployment](../cloud/releaseManagementDeployment.md). diff --git a/docs/concepts/img/ClassDiagramImage.png b/docs/get-started/img/ClassDiagramImage.png similarity index 100% rename from docs/concepts/img/ClassDiagramImage.png rename to docs/get-started/img/ClassDiagramImage.png diff --git a/docs/concepts/img/alias1.png b/docs/get-started/img/alias1.png similarity index 100% rename from docs/concepts/img/alias1.png rename to docs/get-started/img/alias1.png diff --git a/docs/concepts/img/cloud-archi.svg b/docs/get-started/img/cloud-archi.svg similarity index 100% rename from docs/concepts/img/cloud-archi.svg rename to docs/get-started/img/cloud-archi.svg diff --git a/docs/concepts/img/cloud-schema.png b/docs/get-started/img/cloud-schema.png similarity index 100% rename from docs/concepts/img/cloud-schema.png rename to docs/get-started/img/cloud-schema.png diff --git a/docs/cloud/img/cloud.png b/docs/get-started/img/cloud.png similarity index 100% rename from docs/cloud/img/cloud.png rename to docs/get-started/img/cloud.png diff --git a/docs/concepts/img/console.png b/docs/get-started/img/console.png similarity index 100% rename from docs/concepts/img/console.png rename to docs/get-started/img/console.png diff --git a/docs/concepts/img/entityRef1.png b/docs/get-started/img/entityRef1.png similarity index 100% rename from docs/concepts/img/entityRef1.png rename to docs/get-started/img/entityRef1.png diff --git a/docs/concepts/img/entityRef2.png b/docs/get-started/img/entityRef2.png similarity index 100% rename from docs/concepts/img/entityRef2.png rename to docs/get-started/img/entityRef2.png diff --git a/docs/concepts/img/full-stack.png b/docs/get-started/img/full-stack.png similarity index 100% rename from docs/concepts/img/full-stack.png rename to docs/get-started/img/full-stack.png diff --git a/docs/concepts/img/functions-schema.png b/docs/get-started/img/functions-schema.png similarity index 100% rename from docs/concepts/img/functions-schema.png rename to docs/get-started/img/functions-schema.png diff --git a/docs/concepts/img/optimisticLock1.png b/docs/get-started/img/optimisticLock1.png similarity index 100% rename from docs/concepts/img/optimisticLock1.png rename to docs/get-started/img/optimisticLock1.png diff --git a/docs/concepts/img/optimisticLock2.png b/docs/get-started/img/optimisticLock2.png similarity index 100% rename from docs/concepts/img/optimisticLock2.png rename to docs/get-started/img/optimisticLock2.png diff --git a/docs/concepts/img/optimisticLock3.png b/docs/get-started/img/optimisticLock3.png similarity index 100% rename from docs/concepts/img/optimisticLock3.png rename to docs/get-started/img/optimisticLock3.png diff --git a/docs/concepts/img/orda-schema.png b/docs/get-started/img/orda-schema.png similarity index 100% rename from docs/concepts/img/orda-schema.png rename to docs/get-started/img/orda-schema.png diff --git a/docs/concepts/img/orda-schema3.png b/docs/get-started/img/orda-schema3.png similarity index 100% rename from docs/concepts/img/orda-schema3.png rename to docs/get-started/img/orda-schema3.png diff --git a/docs/concepts/img/qodlydb.png b/docs/get-started/img/qodlydb.png similarity index 100% rename from docs/concepts/img/qodlydb.png rename to docs/get-started/img/qodlydb.png diff --git a/docs/concepts/img/qodlydb2.png b/docs/get-started/img/qodlydb2.png similarity index 100% rename from docs/concepts/img/qodlydb2.png rename to docs/get-started/img/qodlydb2.png diff --git a/docs/concepts/img/qs1.png b/docs/get-started/img/qs1.png similarity index 100% rename from docs/concepts/img/qs1.png rename to docs/get-started/img/qs1.png diff --git a/docs/concepts/img/qs2.png b/docs/get-started/img/qs2.png similarity index 100% rename from docs/concepts/img/qs2.png rename to docs/get-started/img/qs2.png diff --git a/docs/concepts/img/qs3.png b/docs/get-started/img/qs3.png similarity index 100% rename from docs/concepts/img/qs3.png rename to docs/get-started/img/qs3.png diff --git a/docs/concepts/img/qs4.png b/docs/get-started/img/qs4.png similarity index 100% rename from docs/concepts/img/qs4.png rename to docs/get-started/img/qs4.png diff --git a/docs/concepts/img/qs5.png b/docs/get-started/img/qs5.png similarity index 100% rename from docs/concepts/img/qs5.png rename to docs/get-started/img/qs5.png diff --git a/docs/concepts/img/qs5bis.png b/docs/get-started/img/qs5bis.png similarity index 100% rename from docs/concepts/img/qs5bis.png rename to docs/get-started/img/qs5bis.png diff --git a/docs/concepts/img/qs6.png b/docs/get-started/img/qs6.png similarity index 100% rename from docs/concepts/img/qs6.png rename to docs/get-started/img/qs6.png diff --git a/docs/concepts/img/qs7.png b/docs/get-started/img/qs7.png similarity index 100% rename from docs/concepts/img/qs7.png rename to docs/get-started/img/qs7.png diff --git a/docs/concepts/img/qs8.png b/docs/get-started/img/qs8.png similarity index 100% rename from docs/concepts/img/qs8.png rename to docs/get-started/img/qs8.png diff --git a/docs/concepts/img/structure.png b/docs/get-started/img/structure.png similarity index 100% rename from docs/concepts/img/structure.png rename to docs/get-started/img/structure.png diff --git a/docs/concepts/img/structure2.png b/docs/get-started/img/structure2.png similarity index 100% rename from docs/concepts/img/structure2.png rename to docs/get-started/img/structure2.png diff --git a/docs/concepts/img/structure3.png b/docs/get-started/img/structure3.png similarity index 100% rename from docs/concepts/img/structure3.png rename to docs/get-started/img/structure3.png diff --git a/docs/concepts/img/structure4.png b/docs/get-started/img/structure4.png similarity index 100% rename from docs/concepts/img/structure4.png rename to docs/get-started/img/structure4.png diff --git a/docs/concepts/img/structure5.png b/docs/get-started/img/structure5.png similarity index 100% rename from docs/concepts/img/structure5.png rename to docs/get-started/img/structure5.png diff --git a/docs/concepts/img/structure6.png b/docs/get-started/img/structure6.png similarity index 100% rename from docs/concepts/img/structure6.png rename to docs/get-started/img/structure6.png diff --git a/docs/get-started/intro.md b/docs/get-started/intro.md new file mode 100644 index 0000000000..7aa1d873aa --- /dev/null +++ b/docs/get-started/intro.md @@ -0,0 +1,37 @@ +--- +id: intro +title: First steps +--- + +## Overview + +Qodly is a global platform for developing, deploying, and running web applications. It consists of three main components: + +- **Studio**: Develop and test your application. +- **Qodly Server**: Backend including 4D database, Web Server, and ORDA. +- **Cloud Console**: Manage your deployments. + +Everything you need is included in your subscription. You can create your application from start to finish without installing anything. +You can also extend your widgets by building or installing custom components in Qodly Studio. +The best way to start is by creating your Sandbox. It's completely free and perfect for trying out Qodly, exploring samples, and testing new features. You can even create a quick demo for your client before beginning your application. You'll have the option to clone it or start from scratch. + +## Creating your Sandbox + +Creating your Sandbox is the first step for your journey in Qodly. + +1. Sign Up and Log In: Create an account and log in to the platform. +2. Create your Sandbox +3. Start from scratch or choose a template from the catalog. You can delete and reinstall it as needed. The only limitation is one sandbox per user. + +## Starting Your First Project or Application + +1. Clone an existing app by clicking on "Clone" or start a new app and choose an application template. +2. Set Up App Details: Enter the project name, description, and other details. +3. Choose the resources you need for your development environment. +4. Add your billing details. You can add your own card or invite someone else to add theirs. +5. Subscribe. +6. Your development environment is installed. You can go to Studio and start building your app. +7. A welcome tour will begin for a quick overview of Qodly Studio. +8. Start from the frontend by dragging and dropping components (or widgets) or use pre-made templates. Alternatively, begin by preparing your data using the Data Model, code your functions, and then bind them with Qodly Sources to the frontend. +9. Manage roles and privileges in the editor. +10. Your app is ready for testing or deployment. diff --git a/docs/get-started/payments.md b/docs/get-started/payments.md new file mode 100644 index 0000000000..c9c09a688f --- /dev/null +++ b/docs/get-started/payments.md @@ -0,0 +1,10 @@ +--- +id: payments +title: Payments and Invoices +--- + + +On the [Billing page](../cloud/billingSubscriptionManagement.md), you can view all your invoices, the amount of your next invoice, and your credit card information. Qodly uses Stripe to handle payments. If you have a Stripe account, you can use it, or you can add your own card. You can change your card at any time. + +If there's an issue with the credit card during renewal, you will automatically receive email alerts from [Stripe](https://stripe.com). You will have very limited access for one month, after which your application will be automatically deleted. Please address the problem promptly as soon as you receive the Stripe notification. + diff --git a/docs/concepts/quickstart.md b/docs/get-started/quickstart.md similarity index 70% rename from docs/concepts/quickstart.md rename to docs/get-started/quickstart.md index 04dc78df5b..ed3b3a4b18 100644 --- a/docs/concepts/quickstart.md +++ b/docs/get-started/quickstart.md @@ -3,10 +3,21 @@ id: quickstart title: Quickstart --- -To begin your Qodly experience, follow these steps to create an account on the Qodly Central Management Console (QCMC) and explore the Sandbox environment. +## Welcome +Qodly is a global platform for developing, deploying, and running web applications. It consists of three main components: -## Step 1: Create your account +- **Studio**: Develop and test your application. +- **Qodly Server**: Backend including a database, a Web Server, and [ORDA](../orda/data-model.md). +- **Cloud Console**: Manage your deployments. + +Everything you need is included in your subscription. You can create your application from start to finish without installing anything. You can also extend your widgets by building or installing custom components in Qodly Studio. + +The best way to start is by creating your **Sandbox**. It's completely free and perfect for trying out Qodly, exploring samples, and testing new features. You can even create a quick demo for your client before beginning your application. You'll have the option to clone it or start from scratch. + + + +## Create your account 1. Go to [**cloud.qodly.com/signup**](https://cloud.qodly.com/signup) and create your account in a few clicks. @@ -23,15 +34,17 @@ To begin your Qodly experience, follow these steps to create an account on the Q 4. Click **Submit** to access the Qodly Cloud Management Console. -## Step 2: Set Up Your Sandbox and Environment +## Create your Sandbox -1. Choose a Template to create your sandbox application. Two options are available: +Creating your Sandbox is the first step for your journey in Qodly. +1. Choose a Template to create your sandbox application. Two options are available: - **Create a sandbox from scratch**: Select the **Blank app** template to begin with an empty sandbox application. - - **Create a sandbox from a sample**: Start with a sample application containing code and data for reference. -

+ - **Create a sandbox from a sample**: Start with a sample application containing code and data for reference.

+ +You can delete and reinstall it as needed. The only limitation is one sandbox per user. 2. The development environment of your sandbox application is automatically prepared. This step takes just a few seconds. @@ -44,7 +57,7 @@ The application name is automatically generated for sandbox applications. ::: -## Step 3: Navigate Qodly Studio and Begin the Welcome Tour +## Navigate Qodly Studio and Begin the Welcome Tour With the development environment ready, it's time to access Qodly Studio and follow the Welcome Tour. @@ -74,6 +87,9 @@ With the development environment ready, it's time to access Qodly Studio and fol

+ + + :::tip To learn more, feel free to explore our [**Youtube Channel**](https://www.youtube.com/channel/UCLNHKvjJQZ_5D1ziskba6jg). diff --git a/docs/get-started/refunds.md b/docs/get-started/refunds.md new file mode 100644 index 0000000000..25ad08a0e8 --- /dev/null +++ b/docs/get-started/refunds.md @@ -0,0 +1,9 @@ +--- +id: refunds +title: Refunds +--- + + +If you're not happy with your Qodly subscription, you can cancel at any time. For any more information, please contact our Sales team at [contact@qodly.com](mailto:contact@qodly.com) + +No refunds are given for cancellations. If the Company suspends or terminates your Account or these Terms, you will not receive any refund for unused subscription time, fees, content, data, or anything else. \ No newline at end of file diff --git a/docs/get-started/subscriptions.md b/docs/get-started/subscriptions.md new file mode 100644 index 0000000000..d9e394f0ee --- /dev/null +++ b/docs/get-started/subscriptions.md @@ -0,0 +1,36 @@ +--- +id: subscriptions +title: Subscriptions +--- + + +## Pricing Model + +The pricing model in Qodly is simple and flexible. It is based on the environment, the configuration of the environment, and the data transferred to the internet. + +Fixed price plan by environment includes standard settings for power, storage, and a pack of internet data. The price per environment increases if you upgrade the power or storage. At the beginning of the next month, we will calculate the data transferred, and you will be billed for any overage data consumed. + +If you can estimate your data usage in advance, we recommend upgrading your data plan. The cost per GB is lower, which will save you money. You can decrease the plan at any time. + +## Pricing & Account Management + +For our most up-to-date information, please visit [Qodly pricing](https://qodly.com/pricing). + +## Subscription & Upgrade + +Once you created your new application, on the [Subscription page](../cloud/billingSubscriptionManagement.md), you can manage all your subscriptions, including creating new environments, upgrading, or deleting them. It provides a global view for each application. + +The billing cycle starts at the beginning of the month. Depending on the day you subscribe or upgrade, the difference will be calculated and invoiced. + +## Downgrade (coming soon) + +## Cancelation + +You can cancel at any time in any environment, except the development one, or even cancel the entire application. Your subscription is canceled immediately. + +:::warning + +We highly recommend downloading your assets and exporting your backup before canceling. + +::: + diff --git a/docs/get-started/support.md b/docs/get-started/support.md new file mode 100644 index 0000000000..6ec50e1f60 --- /dev/null +++ b/docs/get-started/support.md @@ -0,0 +1,18 @@ +--- +id: support +title: Developer Support Policy +--- + + + +## Bug Reports + +To submit a bug, visit [support.qodly.com](support.qodly.com) and open a ticket. Our Support and engineering teams will handle it, and you can track the progress. + +## Support Hours + +Our support team is available from 9 AM to 6 PM Central European Time (CET), from Monday to Friday. + +## How To Reach Us + +Developers may contact us through our [Slack channels](https://qodly.slack.com/join/shared_invite/zt-20ieeffts-NU57SOXcbakmWgIMnJpStQ#/shared-invite/email) or arrange a meeting with our [Qodly Developer Success Team](https://calendly.com/ametwalli/meet-ayoub). We are also available via email at [contact@qodly.com](mailto:contact@qodly.com). diff --git a/docs/get-started/test-debug.md b/docs/get-started/test-debug.md new file mode 100644 index 0000000000..464eced00f --- /dev/null +++ b/docs/get-started/test-debug.md @@ -0,0 +1,13 @@ +--- +id: test-debug +title: Testing and Debugging +--- + +Different tools are available for testing at any time during your development, integration, and staging phases. + +During development, you have two levels of preview: [page level](../studio/rendering.md#preview-in-the-studio) and [application level](../studio/rendering.md#preview-the-entire-site). During creating your page, you can preview it at any time. + +The previewer lets you view the entire application, making it easy to test all behaviors. If you find a bug, you can activate the [debugger](../studio/debugging.md), which will guide you step by step to fix it. +To check your data, use the [Data Explorer](../data-explorer/data-explorer.md) to navigate or edit it. + +You can also [invite users](../cloud/userAccountManagement.md#add-user-to-a-specific-environment) with specific roles to test the application externally, which is the best way to gather their feedback. diff --git a/docs/get-started/updates.md b/docs/get-started/updates.md new file mode 100644 index 0000000000..db31e50c35 --- /dev/null +++ b/docs/get-started/updates.md @@ -0,0 +1,41 @@ +--- +id: updates +title: Updates and Versioning +--- + + + +## Releases + +Qodly uses Semantic versioning (also known as *SemVer*) with the format (Major.Minor.Patch). + + +### Major Releases + +A major release brings significant changes to Qodly, posing potential risks to your application. Verify compatibility before upgrading is highly recommended. + +These updates are made every one or two years and include core changes such as the evolution of ORDA or QodlyScript, the addition of a new technology, and/or significant changes in Qodly Server. + +We support two major releases at a time. + +### Minor Releases + +A minor release introduces new features that enhance productivity and efficiency, resulting in a second number increment. + + +### Patch Releases + +A patch release fixes bugs without adding new features, incrementing the third number. + +## How to Upgrade + +The following steps are required to upgrade your Qodly application: + +1. Create a [new release](../cloud/releaseManagementDeployment.md) +2. Update the Development environment +3. [Test the app](test-debug.md) +4. Fix any bugs +5. Once tests are successful, create a new release +6. Deploy to the QA environment +7. If everything is fine, deploy to Production environment +8. Notify users if necessary. diff --git a/docs/language/DataStoreClass.md b/docs/language/DataStoreClass.md index 7267da48f2..36940db2d1 100644 --- a/docs/language/DataStoreClass.md +++ b/docs/language/DataStoreClass.md @@ -177,6 +177,13 @@ The `.startTransaction()` function ](delayProcess.md)
  | |[](deleteString.md)
  | |[](ds.md)
  | -|[](equalPictures.md)
  | |[](exp.md)
  | |[](false.md)
  | |[](file.md)
  | diff --git a/docs/language/commands/equalPictures.md b/docs/language/commands/equalPictures.md deleted file mode 100644 index 92633e9c73..0000000000 --- a/docs/language/commands/equalPictures.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -id: equalPictures -title: equalPictures ---- - - -**equalPictures** ( *picture1* : picture, *picture2* : picture, *mask* : picture ) : boolean - - - -|Parameter|Type||Description| -|---------|--- |:---:|------| -|picture1|picture|->|Original source picture| -|picture2|picture|->|Picture to compare| -|mask|picture|<-|Resulting mask| -|Result|boolean|<-|True if both pictures are identical; otherwise, False| - - -#### Description - -The `equalPictures` command precisely compares both the dimensions and the contents of two pictures. - -Pass the source picture in *picture1* and the picture you want to compare with it in *picture2*. - -- If the pictures are not the same dimension, the command returns **False** and the *mask* parameter contains a blank picture. -- If the pictures are of the same dimension but with different contents, the command returns **False** and the *mask* parameter contains the resulting picture mask based on a comparison of the two pictures. This comparison is performed pixel by pixel, and each pixel that does not match appears white on a black background. -- If both pictures are exactly the same, the command returns **True** and the *mask* parameter contains a picture that is completely black. diff --git a/docs/language/commands/openDatastore.md b/docs/language/commands/openDatastore.md index 445e881c4a..1d26954744 100644 --- a/docs/language/commands/openDatastore.md +++ b/docs/language/commands/openDatastore.md @@ -29,8 +29,8 @@ Pass in *connectionInfo* an object describing the remote datastore you want to c |Property| Type|Qodly application|Remote 4D application| |---|---|---|---| -|hostname|Text|[API Endpoint](../../cloud/api-key#api-endpoint) of the Qodly cloud instance|Name or IP address of the remote database + ":" + port number (port number is mandatory)| -|api-key|Text|[API Key](../../cloud/api-key#api-key) of the Qodly cloud instance|- (ignored)| +|hostname|Text|[API Endpoint](../../cloud/apiKeys#api-endpoint) of the Qodly cloud instance|Name or IP address of the remote database + ":" + port number (port number is mandatory)| +|api-key|Text|[API Key](../../cloud/apiKeys#api-key) of the Qodly cloud instance|- (ignored)| |idleTimeout|Longint|- (ignored)|Inactivity session timeout (in minutes), after which the session is automatically closed by 4D. If omitted, default value is 60 (1h). The value cannot be < 60 (if a lower value is passed, the timeout is set to 60). For more information, see [Closing sessions](https://developer.4d.com/docs/ORDA/datastores#closing-sessions).| |tls|Boolean|True to use secured connection. If omitted, false by default|True to use secured connection(1). If omitted, false by default. Using a secured connection is recommended whenever possible.| |type |Text |- (ignored)|must be "4D Server"| diff --git a/docs/notes/1.0.0-beta-0.md b/docs/notes/1.0.0-beta-0.md new file mode 100644 index 0000000000..e818a257f6 --- /dev/null +++ b/docs/notes/1.0.0-beta-0.md @@ -0,0 +1,8 @@ +--- +id: 1.0.0-beta.0 +title: 1.0.0 - beta.0 +--- + +#### 10/02/2022 + +First Qodly beta release! diff --git a/docs/notes/v1.0.0-beta-1.md b/docs/notes/1.0.0-beta-1.md similarity index 99% rename from docs/notes/v1.0.0-beta-1.md rename to docs/notes/1.0.0-beta-1.md index ab10ec614d..5cf0c7f927 100644 --- a/docs/notes/v1.0.0-beta-1.md +++ b/docs/notes/1.0.0-beta-1.md @@ -1,5 +1,5 @@ --- -id: v1.0.0-beta.1 +id: 1.0.0-beta.1 title: 1.0.0 - beta.1 --- diff --git a/docs/notes/v1.0.0-beta-2.md b/docs/notes/1.0.0-beta-2.md similarity index 98% rename from docs/notes/v1.0.0-beta-2.md rename to docs/notes/1.0.0-beta-2.md index e7e8094bb2..fa9422df9c 100644 --- a/docs/notes/v1.0.0-beta-2.md +++ b/docs/notes/1.0.0-beta-2.md @@ -1,5 +1,5 @@ --- -id: v1.0.0-beta.2 +id: 1.0.0-beta.2 title: 1.0.0 - beta.2 --- @@ -207,6 +207,6 @@ title: 1.0.0 - beta.2

What's New

-- Sleep Mode for Your Sandbox: In our ongoing efforts to enhance resource efficiency, we introduce a new "Sleep Mode" feature for your sandbox environment. See [this page](../cloud/getStarted.md#sleep-mode-for-sandbox-applications) for more information. +- Sleep Mode for Your Sandbox: In our ongoing efforts to enhance resource efficiency, we introduce a new "Sleep Mode" feature for your sandbox environment. See [this page](../cloud/sandbox.md#sleep-mode) for more information. Thank you for your continued support and understanding as we implement these enhancements! diff --git a/docs/notes/v1.0.0-beta-3.md b/docs/notes/1.0.0-beta-3.md similarity index 99% rename from docs/notes/v1.0.0-beta-3.md rename to docs/notes/1.0.0-beta-3.md index 7dfdda4f41..8329222e41 100644 --- a/docs/notes/v1.0.0-beta-3.md +++ b/docs/notes/1.0.0-beta-3.md @@ -1,5 +1,5 @@ --- -id: v1.0.0-beta.3 +id: 1.0.0-beta.3 title: 1.0.0 - beta.3 --- diff --git a/docs/notes/v1.0.0-beta-4.md b/docs/notes/1.0.0-beta-4.md similarity index 97% rename from docs/notes/v1.0.0-beta-4.md rename to docs/notes/1.0.0-beta-4.md index 72f76d1b01..256867adcb 100644 --- a/docs/notes/v1.0.0-beta-4.md +++ b/docs/notes/1.0.0-beta-4.md @@ -1,5 +1,5 @@ --- -id: v1.0.0-beta.4 +id: 1.0.0-beta.4 title: 1.0.0 - beta.4 --- @@ -47,6 +47,6 @@ title: 1.0.0 - beta.4

What's New

-- New [API key management](../cloud/api-key.md) designed to enhance external access control to its applications. It simplifies the creation, management, and oversight of API keys, enabling better security and efficiency for developers working with Qodly platforms. +- New [API key management](../cloud/apiKeys.md) designed to enhance external access control to its applications. It simplifies the creation, management, and oversight of API keys, enabling better security and efficiency for developers working with Qodly platforms. Thank you for your continued support and understanding as we implement these enhancements! diff --git a/docs/notes/v1.0.0-beta-5.md b/docs/notes/1.0.0-beta-5.md similarity index 99% rename from docs/notes/v1.0.0-beta-5.md rename to docs/notes/1.0.0-beta-5.md index d50d5d1fa1..9aba7f0168 100644 --- a/docs/notes/v1.0.0-beta-5.md +++ b/docs/notes/1.0.0-beta-5.md @@ -1,5 +1,5 @@ --- -id: v1.0.0-beta.5 +id: 1.0.0-beta.5 title: 1.0.0 - beta.5 --- diff --git a/docs/notes/v1.0.0-beta-6.md b/docs/notes/1.0.0-beta-6.md similarity index 99% rename from docs/notes/v1.0.0-beta-6.md rename to docs/notes/1.0.0-beta-6.md index dd1188efcb..0c33502095 100644 --- a/docs/notes/v1.0.0-beta-6.md +++ b/docs/notes/1.0.0-beta-6.md @@ -1,5 +1,5 @@ --- -id: v1.0.0-beta.6 +id: 1.0.0-beta.6 title: 1.0.0 - beta.6 --- diff --git a/docs/notes/_1.0.0.md b/docs/notes/_1.0.0.md new file mode 100644 index 0000000000..329cfc5006 --- /dev/null +++ b/docs/notes/_1.0.0.md @@ -0,0 +1,14 @@ +--- +id: 1.0.0 +title: 1.0.0 +--- + + + +#### 11/20/2024 + +import ComingSoon from '@site/src/components/ComingSoon' + + +🎉Qodly 1.0.0 is out!🎉 + diff --git a/docs/orda/data-model.md b/docs/orda/data-model.md index 6f112fd802..efcff9b6de 100644 --- a/docs/orda/data-model.md +++ b/docs/orda/data-model.md @@ -3,7 +3,19 @@ id: data-model title: Data Model Objects --- -## Introduction +## The ORDA Concept + + +ORDA stands for **Object Relational Data Access**. It is an enhanced technology allowing to access both the model and the data of a database through objects. + +Relations are transparently included in the concept, in combination with [lazy loading](#lazy-loading), to remove all the typical hassles of data selection or transfer from the developer. With ORDA, data is accessed through an abstraction layer, the [datastore](#datastore). A datastore is an object that provides an interface to the database model and data through objects and classes. For example, a table is mapped to a [dataclass](#dataclass) object, a field is an [attribute](#attribute) of a dataclass, and records are accessed through [entities](data-model.md#entity) and [entity selections](data-model.md#entity-selection). + +A query returns a list of entities called an entity selection, which fulfills the role of a SQL query’s row set. The difference is that each entity "knows" where it belongs in the data model and "understands" its relationship to all other entities. This means that a developer does not need to explain in a query how to relate the various pieces of information, nor in an update how to write modified values back to the relational structure. + +Basically, ORDA handles objects. In ORDA, all main concepts, including the datastore itself, are available through objects. The datastore is automatically mapped upon the underlying database structure. + +ORDA objects can be handled like standard objects, but they automatically benefit from specific properties and methods. ORDA objects are created and instanciated when necessary (you do not need to create them). However, ORDA data model objects are associated with classes where you can add custom functions and define [calculated attributes](#calculated-attributes-1). + ### Database as Objects diff --git a/docs/orda/data.md b/docs/orda/data.md index e2473a80a4..8b77da07c2 100644 --- a/docs/orda/data.md +++ b/docs/orda/data.md @@ -91,7 +91,7 @@ You can handle entities like any other object and pass their references directly :::note -You can use as many entities as you need at the same time, there is no automatic lock on an entity (see [Entity locking](#entity-locking)). When an entity is loaded, it uses the [lazy loading](../concepts/platform.md#lazy-loading) mechanism, which means that only the needed information is loaded. +You can use as many entities as you need at the same time, there is no automatic lock on an entity (see [Entity locking](#entity-locking)). When an entity is loaded, it uses the **lazy loading** mechanism, which means that only the needed information is loaded. ::: diff --git a/docs/orda/sessions.md b/docs/orda/sessions.md new file mode 100644 index 0000000000..d7078c2f3e --- /dev/null +++ b/docs/orda/sessions.md @@ -0,0 +1,19 @@ +--- +id: sessions +title: User sessions +--- + + + + +When a user connects to a Qodly application, a *user session* is automatically opened on the Qodly server to manage their access with regards to their privileges. A session cookie is generated. + +The session automatically gets [privileges](../studio/roles/rolesPrivilegesOverview.md) according to the **Profile** [associated to the user in the console](../cloud/userAccountManagement.md#add-new-user). + +The Qodly developer can also handle a user session through the [`Session` class](../language/SessionClass.md). For example, you can get the list of privileges associated to the session using the [`getPrivileges()`](../language/SessionClass.md#getprivileges) function, or store user information in the session's [`storage`](../language/SessionClass.md#storage) property. + +:::info + +A Qodly user session never expires, however the parent **Amazon Cognito** session expires after one week of inactivity. + +::: diff --git a/docs/studio/coding.md b/docs/studio/coding.md index 1084bb1d40..fa6d31f9dd 100644 --- a/docs/studio/coding.md +++ b/docs/studio/coding.md @@ -57,7 +57,7 @@ You can create a method or class using one of the three methods:
    -
  1. You can create them individually from dedicated grids on the Qodly Studio Homepage.





  2. +
  3. You can create them individually from dedicated grids on the Studio Homepage.





  4. In the Explorer, simply click the plus icon located next to either Methods or Classes.




  5. While in the Page Editor, go to the New + tab and opt for either Methods or Classes.
@@ -237,7 +237,7 @@ Reloading is recommended in cases where a connection is not established. Without ### Type-ahead features -The Qodly Studio code editor includes helpful type-ahead and auto-completion features. You can easily incorporate these suggestions into your code using the following methods: +Qodly Studio code editor includes helpful type-ahead and auto-completion features. You can easily incorporate these suggestions into your code using the following methods: - The suggestion list automatically appears as you start typing. - To insert the selected suggestion, simply press the `Tab` key. diff --git a/docs/studio/debugging.md b/docs/studio/debugging.md index 7b99cda357..520308c6ff 100644 --- a/docs/studio/debugging.md +++ b/docs/studio/debugging.md @@ -15,7 +15,7 @@ In the Qodly development environment, you have access to a range of debugging to To execute your code line-by-line and evaluate expressions, you must initiate a **debug session** on the server and **attach** it to your browser. Follow these steps: -1. Click the Debug button located in the Studio toolbar. +1. Click the Debug button located in Qodly Studio toolbar. 2. If the debug session starts successfully, a green bullet will appear on the button label. @@ -43,7 +43,7 @@ Verify that the method or function with the breakpoint is saved and not in [draf If you wish to stop a debug session, follow these steps: -1. Click the **Debug** button in the Studio toolbar while a debug session is active. +1. Click the **Debug** button in Qodly Studio toolbar while a debug session is active. 2. A warning dialog box will prompt you to confirm whether you want to detach the debugger, effectively closing the debug session attached to your browser. You will have several options: diff --git a/docs/studio/model/attributes.md b/docs/studio/model/attributes.md index ff58d6cd59..ba024eadac 100644 --- a/docs/studio/model/attributes.md +++ b/docs/studio/model/attributes.md @@ -21,7 +21,7 @@ You can view and modify a few of the attribute’s properties when you select or - a name in _italics_ indicates a not exposed attribute - **Primary Key**: Indicates the primary key attribute for the datastore class. This attribute is mandatory, you can rename it but not delete it. - **Type Icon**: Displays the datastore entity type as an icon. -- **Type**: Attribute type that you can change by double-clicking on it to render the area enterable. An attribute type can be [scalar](../../concepts/platform.md#data-types) or based upon a [relation](#create-a-relation-attribute), in which case it can be of the _classNameEntity_ or _classNameSelection_ type. +- **Type**: Attribute type that you can change by double-clicking on it to render the area enterable. An attribute type can be [scalar](#data-types) or based upon a [relation](#create-a-relation-attribute), in which case it can be of the _classNameEntity_ or _classNameSelection_ type. All attributes of a datastore class are also listed in the [Outline area](model-editor-interface#outline) of the model editor. @@ -41,7 +41,7 @@ There are several categories of attributes in Qodly: Indicates an alias attribute. - **Calculated**: A [calculated attribute](#calculated-attributes) does not store information; instead, it determines its value based on other values from the same entity or from other entities, attributes or datastore class methods. Indicates a calculated attribute. -The data type list contains [predefined data types](../../concepts/platform.md#qodly-database) as well as datastore classes and entity selections (in bold), and relation attributes if some have already been defined: +The data type list contains [predefined data types](#data-types) as well as datastore classes and entity selections (in bold), and relation attributes if some have already been defined: @@ -63,9 +63,27 @@ To create a storage attribute: 2. Give a [name](#attribute-name) to the attribute. 3. Select a predefined data type from the list and press **Enter**. -:::info -The **Qodly database** supports [an extended set of data types](../../concepts/platform.md#data-types). -::: + +### Data types + +The following table lists all available Qodly Database storage (*aka* scalar) data types and how they are handled in the [QodlyScript language](../../language/basics/lang-data-types.md): + +|Data Types |Language support|Description| +|---|----|---| +|Text|`string` |A sequence of characters up to 2 GB| +|String |`string` |A sequence of characters with properties| +|UUID|-|Universally Unique Identifier: a 16-bytes (128 bits) number containing 32 hexadecimal characters| +|Date|`date` |If the **Date only** property is selected for this attribute type, the date value will include only the "MM/DD/YYYY" format (e.g., "10/05/2023"). Otherwise, the date value including the time, stored in UTC. The date is expressed in the following format: YYYY-MM-DDTHH:MM:ss.SSSZ (e.g., "2023-10-05T23:00:00.000Z" for October 5, 2023 in the Central European Timezone). SSS represents the milliseconds, which can be between 0 to 999. | +|Duration|`time` |A time value which is stored as a duration between two dates | +|Bool|`boolean`|A Boolean value: either true or false.| +|Byte|-|A sequence of 8 bits.| +|Word|-|A 16-bit signed integer. Range: -32,767 to 32,768| +|Number|`real`|A numeric value, can be a Real or a Long. Range: ±1.7e±308 (real), -2^31 to (2^31)-1 (long)| +|Long|`real`|An integer number, greater than or equal to a standard number. Range: -2,147,483,648 to 2,147,483,647 | +|Object|`object`|Object containing any kind of property/value pairs, including collections. This data type can be indexed. Functions and recursive references are not supported| +|Image|`picture` |A path to an image file or an actual image. | +|Blob|`blob` or `object` |Binary Large Object stored as a scalar value or a `4D.Blob` object | + ## Create a relation attribute diff --git a/docs/studio/model/model-editor-interface.md b/docs/studio/model/model-editor-interface.md index 1bcc78054f..8cc77308a7 100644 --- a/docs/studio/model/model-editor-interface.md +++ b/docs/studio/model/model-editor-interface.md @@ -14,7 +14,7 @@ The Data Model Editor in Qodly enables you to create and modify the **model** fo ### ORDA Concepts -In Qodly, each datastore class can have attributes that store or calculate data, or refer to data in other datastore classes (relation attributes). You can also create functions to interact with the data in your model, following the ORDA concepts. +In Qodly, each datastore class can have attributes that store or calculate data, or refer to data in other datastore classes (relation attributes). You can also create functions to interact with the data in your model, following the [ORDA concepts](../../orda/data-model.md#the-orda-concept). ### Permissions diff --git a/docs/studio/overview.md b/docs/studio/overview.md index d133f75820..62b8668343 100644 --- a/docs/studio/overview.md +++ b/docs/studio/overview.md @@ -6,7 +6,7 @@ title: Overview Development in Qodly relies on the use of **Qodly Studio**, an innovative platform for creating business web applications. Our primary goal with **Qodly Studio** is to provide developers with a seamless, 100% web-based development experience. This platform empowers developers to: - Design and modify data models that align with your business logic. -- Effortlessly link data with [ORDA](../concepts/platform.md#the-orda-concept) dataclasses. +- Effortlessly link data with [ORDA](../orda/data-model.md#the-orda-concept) dataclasses. - Visually craft Pages by simply dragging and dropping components onto a canvas. - Instantly preview web pages. - Execute QodlyScript code directly within web events or qodlysource events. @@ -31,10 +31,11 @@ Deployed Qodly applications are accessible on all popular web browsers, with no ## Accessing Qodly Studio -Access to Qodly Studio is granted to developers once they complete a series of authentication steps to enter the Qodly Console, as outlined in the [Architecture chapter](../concepts/cloud.md). From the Development or Staging [environments](../cloud/getStarted.md#environments-and-services) within the Qodly Console, you can access your application instance in Qodly Studio by either: +Access to Qodly Studio is granted to developers once they complete a series of authentication steps to enter the Qodly Cloud Management Console. From the Development or Staging [environment](../cloud/environmentsOverview.md) within the Qodly Console, you can access your application instance in Qodly Studio by either: + +- Clicking on the [Studio](../cloud/consoleOverview#accessing-the-studio) button on the Overview page. +- Clicking on the [Studio URL](../cloud/resourceMonitoring#1-studio-url) in the General tab for the environment. -- Clicking on the [Studio](../cloud/application-management#open-qodly-studio) button on the Overview page. -- Clicking on the [Studio URL](../cloud/application-management#open-qodly-studio) in the General tab for the open environment. diff --git a/docs/studio/pageLoaders/components/checkbox.md b/docs/studio/pageLoaders/components/checkbox.md index 6f9adcb593..bda36cf42c 100644 --- a/docs/studio/pageLoaders/components/checkbox.md +++ b/docs/studio/pageLoaders/components/checkbox.md @@ -6,7 +6,6 @@ import Column from '@site/src/components/Column' The **Checkbox** component is a UI element designed for binary selections. It consists of a small box that can be checked (selected) or unchecked (deselected) by the user. - :::info The **Checkbox** component contains an embedded **Checkbox Input** and a **Label** element. This is of great importance as configuring the **Checkbox** component may require adjusting properties within the embedded elements. This applies to the visual style, triggers, and actions as they may differ. @@ -115,152 +114,128 @@ Interacting with user input data is straightforward. When you bind a qodlysource Subsequently, you can utilize this input value in various ways, such as within a standard action to initiate a search with matching attribute values. -## Customizing Checkbox Styles +## Customizing CheckBox Styles The **Checkbox** component offers additional customization options through CSS, providing control over the appearance of checkbox elements. -### Understanding Checkbox CSS Classes +### Component-Specific Classes + +The following CSS classes are applied to various elements within the **CheckBox** component, defining their layout, style, and behavior. Each class can be customized to adjust the look and functionality of specific parts of the component. + +| **Class Name** | **Applies To** | **Description** | +|------------------------------|--------------------------------------|----------------------------------------------------------------------------------------------------------------------------| +| `chakra-checkbox` | CheckBox wrapper | Provides base styling for the CheckBox wrapper, including layout and positioning. | +| `chakra-checkbox__input` | Checkbox input | Applies default styling for the actual checkbox input element, usually hidden to allow the control to display instead. | +| `chakra-checkbox__control` | Checkbox control indicator | Styles the visible checkbox control, which represents the checked or unchecked state of the component. | +| `fd-label` | Label element | Styles the CheckBox label, including font size, color, and positioning relative to the checkbox input. | -The Checkbox component supports various CSS classes that enable customization of the checkbox container, label, outline, and checkmark area. Below is a list of the supported CSS classes and their corresponding elements. -| **Class Name** | **Applies To** | **Description** | -|------------------|-------------------------------|--------------------------------------------| -| `.chakra-checkbox` | The outline of the checkbox component | Applies styles to the outline of the checkbox component.| -| `.chakra-checkbox__control` | The embedded checkmark area | Customizes the chechmark area within the checkbox element. | +### Component-Specific Tags -### Custom styling examples +The following HTML tags make up the structure of the **CheckBox** component. Each tag can be styled to adjust its appearance, alignment, and user interaction. -The following examples demonstrate how to customize the appearance of the Checkbox component. +| **Tag Name** | **Applies To** | **Description** | +|--------------|-----------------------------|----------------------------------------------------------------------------------------------------------------------------| +| `` | Checkbox input field | The main checkbox where users select or deselect options. Styling the input affects borders, padding, and position, influencing how it appears alongside the label text. | -#### Example 1 - Rounded Silver Outline -This example customizes the outline of the checkbox component by using a rounded border in silver and a background color in white for contrast. +### Example 1 - Overall CheckBox Style + +The `self .chakra-checkbox` selector targets the main CheckBox container, allowing customization of size, cursor behavior, and shadow effects. - +
       
-{`self {
-	padding: 10px;
-	width: 150px;
-	box-shadow: 4px 4px 10px rgba(215, 218, 225, 0.9), 4px 4px 10px rgba(221, 221, 232, 0.9), 4px 4px 10px rgba(240, 240, 244, 0.9), 4px 4px 10px rgba(227, 227, 234, 0.9);
-	font-family: 'Times New Roman', Times, serif;	
-	border-radius: 10px;
-}
+{`/* Main CheckBox container styling */
 self .chakra-checkbox{
-	background-color:white;
-	margin-left: 60px;
-	border-radius: 20px;
-	border-color:silver;
-	border-width: 3px;
-}
-` }
+  width: 2.8rem;
+  height: 2.8rem;
+  cursor: pointer;
+  border-radius: .5rem;
+  box-shadow: .3rem .3rem .6rem #c8d0e7, -.2rem -.2rem .5rem #FFFFFF;
+}`}
       
     
+ src={require('./img/checkbox__style1.png').default} style={{ borderRadius: '6px', display: 'block', margin: '0 auto' }}/>
-#### Example 2 - Shadowed Checkmark Area -In this example, the checkmark area is styled by setting the background color to white, adding rounded corners, and applying a silver border to highlight changes. A shadow is also added for depth. +### Example 2 - Check Mark Control Style + +The `self .chakra-checkbox__control` selector applies to the visual representation of the check mark control, adjusting its font size, weight, and transition effects. - +
       
-{`self {
-	padding: 10px;
-	width: 150px;
-	box-shadow: 4px 4px 10px rgba(215, 218, 225, 0.9), 4px 4px 10px rgba(221, 221, 232, 0.9), 4px 4px 10px rgba(240, 240, 244, 0.9), 4px 4px 10px rgba(227, 227, 234, 0.9);
-	font-family: 'Times New Roman', Times, serif;	
-	border-radius: 10px;
-}
+{`/* Check mark control styling */
 self .chakra-checkbox__control{
-	background-color:white;
-	box-shadow: 4px 4px 10px rgba(215, 218, 225, 0.9), 4px 4px 10px rgba(221, 221, 232, 0.9), 4px 4px 10px rgba(240, 240, 244, 0.9), 4px 4px 10px rgba(227, 227, 234, 0.9);
-	border-radius: 10px;
-	border-color: silver;
-	margin-left: 70px;
-}
-` }
+  font-size: 80%;
+  font-weight: 700;
+  color: #9baacf;
+  transition: .3s ease;
+  border: 0;
+  width: 100%;
+  height: 100%;
+}`}
       
     
+ src={require('./img/checkbox__style2.png').default} style={{ borderRadius: '6px', display: 'block', margin: '0 auto' }}/>
-#### Example 3 - Grey Hovered Embedded Checkmark Area -In this example, the checkmark area is styled with a grey background, rounded corners, and a shadow is added for depth. +### Example 3 - Checked State Style + +The `self .chakra-checkbox__control[data-checked]` selector applies styles when the CheckBox is checked, changing the background, shadow, and color. - +
       
-{`self {
-	padding: 10px;
-	width: 150px;
-	box-shadow: 4px 4px 10px rgba(215, 218, 225, 0.9), 4px 4px 10px rgba(221, 221, 232, 0.9), 4px 4px 10px rgba(240, 240, 244, 0.9), 4px 4px 10px rgba(227, 227, 234, 0.9);
-	font-family: 'Times New Roman', Times, serif;	
-	border-radius: 10px;
-}
-self .chakra-checkbox__control:hover{
-	background-color:grey;
-	box-shadow: 4px 4px 10px rgba(215, 218, 225, 0.9), 4px 4px 10px rgba(221, 221, 232, 0.9), 4px 4px 10px rgba(240, 240, 244, 0.9), 4px 4px 10px rgba(227, 227, 234, 0.9);
-	border-radius: 10px;
+{`/* Checked state styling */
+self .chakra-checkbox__control[data-checked]{
+  background: transparent;
+  box-shadow: inset .2rem .2rem .5rem #c8d0e7, inset -.2rem -.2rem .5rem #FFFFFF !important;
+  color: #6d5dfc;
 }`}
       
     
+ src={require('./img/checkbox__style3.png').default} style={{ borderRadius: '6px', display: 'block', margin: '0 auto' }}/>
-#### Example 4 - Dark-blue Checked Embedded Checkmark -In this example, the embedded checked checkmark area is styled with a dark blue background, rounded corners, and a white text color for contrast. +### Example 4 - Hover Effect on Checked State + +The self `.chakra-checkbox__control[data-checked]:hover` selector applies styles when the checked CheckBox is hovered, creating a visual highlight effect. - +
       
-{`
-self {
-	padding: 10px;
-	width: 150px;
-	box-shadow: 4px 4px 10px rgba(215, 218, 225, 0.9), 4px 4px 10px rgba(221, 221, 232, 0.9), 4px 4px 10px rgba(240, 240, 244, 0.9), 4px 4px 10px rgba(227, 227, 234, 0.9);
-	font-family: 'Times New Roman', Times, serif;	
-	border-radius: 10px;
-}
-self .chakra-checkbox__control[data-checked]{
-	color:white;
-	background-color:rgb(63, 17, 103);
-	margin: 5px 5px 5px 5px;
-	border-radius: 10px;
+{`/* Checked state styling */
+self .chakra-checkbox__control[data-checked]:hover{
+  color: white;
+  box-shadow: inset .2rem .2rem 1rem #5b0eeb, inset -.2rem -.2rem 1rem #8abdff !important;
 }`}
       
     
+ src={require('./img/checkbox__style4.png').default} style={{ borderRadius: '6px', display: 'block', margin: '0 auto' }}/>
diff --git a/docs/studio/pageLoaders/components/img/checkbox__style1.png b/docs/studio/pageLoaders/components/img/checkbox__style1.png new file mode 100644 index 0000000000..75dcb039e8 Binary files /dev/null and b/docs/studio/pageLoaders/components/img/checkbox__style1.png differ diff --git a/docs/studio/pageLoaders/components/img/checkbox__style2.png b/docs/studio/pageLoaders/components/img/checkbox__style2.png new file mode 100644 index 0000000000..c066887b6b Binary files /dev/null and b/docs/studio/pageLoaders/components/img/checkbox__style2.png differ diff --git a/docs/studio/pageLoaders/components/img/checkbox__style3.png b/docs/studio/pageLoaders/components/img/checkbox__style3.png new file mode 100644 index 0000000000..a3f7b0a8f0 Binary files /dev/null and b/docs/studio/pageLoaders/components/img/checkbox__style3.png differ diff --git a/docs/studio/pageLoaders/components/img/checkbox__style4.png b/docs/studio/pageLoaders/components/img/checkbox__style4.png new file mode 100644 index 0000000000..31589bc883 Binary files /dev/null and b/docs/studio/pageLoaders/components/img/checkbox__style4.png differ diff --git a/docs/studio/pageLoaders/components/img/checkbox_chakra.png b/docs/studio/pageLoaders/components/img/checkbox_chakra.png deleted file mode 100644 index c4d0dd65f0..0000000000 Binary files a/docs/studio/pageLoaders/components/img/checkbox_chakra.png and /dev/null differ diff --git a/docs/studio/pageLoaders/components/img/checkbox_chakra_control.png b/docs/studio/pageLoaders/components/img/checkbox_chakra_control.png deleted file mode 100644 index daf9c261b1..0000000000 Binary files a/docs/studio/pageLoaders/components/img/checkbox_chakra_control.png and /dev/null differ diff --git a/docs/studio/pageLoaders/components/img/checkbox_chakra_control_checked.png b/docs/studio/pageLoaders/components/img/checkbox_chakra_control_checked.png deleted file mode 100644 index 7968885475..0000000000 Binary files a/docs/studio/pageLoaders/components/img/checkbox_chakra_control_checked.png and /dev/null differ diff --git a/docs/studio/pageLoaders/components/img/checkbox_chakra_control_hover.png b/docs/studio/pageLoaders/components/img/checkbox_chakra_control_hover.png deleted file mode 100644 index ca9e0b5fbb..0000000000 Binary files a/docs/studio/pageLoaders/components/img/checkbox_chakra_control_hover.png and /dev/null differ diff --git a/docs/studio/pageLoaders/components/rangeinput.md b/docs/studio/pageLoaders/components/rangeinput.md index 6362aab0d5..916e757847 100644 --- a/docs/studio/pageLoaders/components/rangeinput.md +++ b/docs/studio/pageLoaders/components/rangeinput.md @@ -346,39 +346,39 @@ To adjust the size of stars, select the component and modify its size.
-      
+      
 {`/* Create the empty stars */
 self::before {
-  content: "\\2606 \\2606 \\2606 \\2606 \\2606"; /* Unicode representation of empty star */
-  color: #ccc; 
+    content: "\\2606 \\2606 \\2606 \\2606 \\2606"; /* Unicode representation of empty star */
+    color: #ccc; 
 }
 /* Hide the slider but keep functionality */
-self .fd-slidercontainer{
-  position: absolute !important;
-  opacity: 0;
-  width: 130px;
-  padding: 0;
+self .fd-slidercontainer {
+    position: absolute !important;
+    opacity: 0;
+    width: 130px;
+    padding: 0;
 }
 /* Fill the stars based on the 'aria-valuenow' attribute */
-self:has([aria-valuenow="1"])::before{
-  content: "\\2605 \\2606 \\2606 \\2606 \\2606"; 
-  color: #6d5dfc;
+self:has([aria-valuenow="1"])::before {
+    content: "\\2605 \\2606 \\2606 \\2606 \\2606"; 
+    color: #6d5dfc;
 }
-self:has([aria-valuenow="2"])::before{
-	content: "\\2605 \\2605 \\2606 \\2606 \\2606"; 
-  color: #6d5dfc;
+self:has([aria-valuenow="2"])::before {
+    content: "\\2605 \\2605 \\2606 \\2606 \\2606"; 
+    color: #6d5dfc;
 }
-self:has([aria-valuenow="3"])::before{
-  content: "\\2605 \\2605 \\2605 \\2606 \\2606"; 
-  color: #6d5dfc;
+self:has([aria-valuenow="3"])::before {
+    content: "\\2605 \\2605 \\2605 \\2606 \\2606"; 
+    color: #6d5dfc;
 }
-self:has([aria-valuenow="4"])::before{
-  content: "\\2605 \\2605 \\2605 \\2605 \\2606"; 
-  color: #6d5dfc;
+self:has([aria-valuenow="4"])::before {
+    content: "\\2605 \\2605 \\2605 \\2605 \\2606"; 
+    color: #6d5dfc;
 }
-self:has([aria-valuenow="5"])::before{
-  content: "\\2605 \\2605 \\2605 \\2605 \\2605"; 
-  color: #6d5dfc;
+self:has([aria-valuenow="5"])::before {
+    content: "\\2605 \\2605 \\2605 \\2605 \\2605"; 
+    color: #6d5dfc;
 }`}
       
     
diff --git a/docs/studio/pageLoaders/components/textinput.md b/docs/studio/pageLoaders/components/textinput.md index 8ec9cdb902..88f70ce507 100644 --- a/docs/studio/pageLoaders/components/textinput.md +++ b/docs/studio/pageLoaders/components/textinput.md @@ -321,12 +321,12 @@ self { box-shadow: inset .2rem .2rem .5rem #c8d0e7, inset -.2rem -.2rem .5rem #FFFFFF; background: none; font-family: inherit; - padding-left: 1.4rem; + padding-left: 1.4rem; } /* Input tag styling*/ self input{ - color: #9a8ff8; - border: 0 !important; + color: #9a8ff8; + border: 0 !important; } /* Layout adjustment to display the first child element as a flex container */ self > :first-child{ diff --git a/docs/studio/pageLoaders/states/nonConditionalState.md b/docs/studio/pageLoaders/states/nonConditionalState.md index 0dbb3f7221..1c50cb804f 100644 --- a/docs/studio/pageLoaders/states/nonConditionalState.md +++ b/docs/studio/pageLoaders/states/nonConditionalState.md @@ -244,7 +244,7 @@ To prevent any confusion between the editable and base states, the `Preview` but :::info -Remember that when previewing in the studio, you are on the WebAdmin port, so no privilege restrictions are applied (even if you have [Conditional states](./conditionalState.md) that reference privileges). +Remember that when previewing in Qodly Studio, you are on the WebAdmin port, so no privilege restrictions are applied (even if you have [Conditional states](./conditionalState.md) that reference privileges). ::: diff --git a/docs/studio/rendering.md b/docs/studio/rendering.md index f3854eaf0f..aeec9ab5cb 100644 --- a/docs/studio/rendering.md +++ b/docs/studio/rendering.md @@ -23,7 +23,7 @@ In the case of Qodly Studio, rendering takes a different path compared to conven - **Rendering Trigger**: Accessing the Page directly in a web browser is not an option. Instead, the Page is "**rendered**" when users initiate the rendering process, which can be done in one of two ways: - - **Preview in the Studio**: Users have the option to [preview the Page within the Qodly Studio interface](#preview-in-the-studio). + - **Preview in Qodly Studio**: Users have the option to [preview the Page within Qodly Studio interface](#preview-in-the-studio). - **Dedicated Browser Tab**: Alternatively, users can opt to [render the Page in a separate browser tab](#preview-in-a-browser-window). @@ -48,7 +48,7 @@ Crucially, each Page is assigned a **unique URL** on the Qodly Web server. These ## Data Flow and Server Architecture -The flow of data within the Qodly Studio ecosystem is carefully orchestrated, ensuring a seamless rendering experience: +The flow of data within Qodly Studio ecosystem is carefully orchestrated, ensuring a seamless rendering experience: @@ -61,18 +61,18 @@ The flow of data within the Qodly Studio ecosystem is carefully orchestrated, en ## Page Rendering Options -Rendering a Page in Qodly Studio provides versatile control and accessibility. You can preview it in the Studio or a separate browser window, but It's important to note that: +Rendering a Page in Qodly Studio provides versatile control and accessibility. You can preview it in Qodly Studio or a separate browser window, but It's important to note that: :::info Database resource access control depends on the chosen rendering method. ::: -### Preview in the Studio +### Preview in Qodly Studio - This option enables you to render the current page directly within the Page Editor window. Here, the Page is rendered by the Qodly Studio's embedded web server.

+ This option enables you to render the current page directly within the Page Editor window. Here, the Page is rendered by Qodly Studio's embedded web server.

This approach provides a comprehensive view of data classes, functions, and attributes, even if they are not exposed as REST resources.
diff --git a/docs/studio/settings.md b/docs/studio/settings.md index 9687cdf2fd..826f1a8515 100644 --- a/docs/studio/settings.md +++ b/docs/studio/settings.md @@ -3,7 +3,7 @@ id: settings title: Settings --- -The Settings panel allows you to customize the Qodly Studio interface for the current user and the current application. +The Settings panel allows you to customize Qodly Studio interface for the current user and the current application. To open the Settings panel, click on the **Settings** button from the Explorer or the toolbar: @@ -48,7 +48,7 @@ Show/hide helper tip icons + Enables selection of a Page to serve as the application’s start page. This chosen Page will automatically render in the following situations: - When the **Preview** button is clicked in the Page Editor, the Page opens in a new tab. -- When the **Preview URL** area in the Qodly Cloud dashboard is clicked, the Page is displayed. +- When the **Authenticated URL** area in the Qodly Cloud console is clicked, the Page is displayed. ### Default Display Mode diff --git a/docusaurus.config.js b/docusaurus.config.js index 9b62fb27c2..f37848e0c3 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -98,13 +98,13 @@ const config = { alt: 'Qodly', //src: 'img/qodly-logo-dark.svg', //srcDark: 'img/qodly-logo-white.svg', - src: 'img/Qodly-beta-D.png', - srcDark: 'img/Qodly-beta-W.png', + src: 'img/qodly-light-version.svg', + srcDark: 'img/qodly-dark-version.svg', }, items: [ { type: 'doc', - docId: 'concepts/quickstart', + docId: 'get-started/quickstart', position: 'left', label: 'Getting Started', }, @@ -112,7 +112,7 @@ const config = { type: 'doc', docId: 'cloud/getStarted', position: 'left', - label: 'Dashboard', + label: 'console', },*/ { type: 'doc', @@ -122,16 +122,10 @@ const config = { }, { type: 'doc', - docId: 'cloud/getStarted', + docId: 'cloud/consoleOverview', position: 'left', label: 'Run & Manage', }, - { - type: 'doc', - docId: 'concepts/platform', - position: 'left', - label: 'Architecture', - }, { type: 'doc', docId: 'api/overview', @@ -176,7 +170,7 @@ const config = { }, { label: "Release Notes", - to: "notes/v1.0.0-beta.6", + to: "notes/1.0.0-beta.6", }, ], }, diff --git a/package-lock.json b/package-lock.json index 01991d1e8b..bb5eb5ddae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4463,9 +4463,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001542", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001542.tgz", - "integrity": "sha512-UrtAXVcj1mvPBFQ4sKd38daP8dEcXXr5sQe6QNNinaPd0iA/cxg9/l3VrSdL73jgw5sKyuQ6jNgiKO12W3SsVA==", + "version": "1.0.30001680", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", + "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", "funding": [ { "type": "opencollective", @@ -4479,7 +4479,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/ccount": { "version": "1.1.0", @@ -16391,9 +16392,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001542", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001542.tgz", - "integrity": "sha512-UrtAXVcj1mvPBFQ4sKd38daP8dEcXXr5sQe6QNNinaPd0iA/cxg9/l3VrSdL73jgw5sKyuQ6jNgiKO12W3SsVA==" + "version": "1.0.30001680", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", + "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==" }, "ccount": { "version": "1.1.0", diff --git a/sidebars.js b/sidebars.js index c8450d4b8c..16d96b5659 100644 --- a/sidebars.js +++ b/sidebars.js @@ -42,8 +42,46 @@ const sidebars = { GetStarted: [ { type: 'doc', - id: 'concepts/quickstart', - label: "Quickstart" + id: 'get-started/quickstart' + }, + { + type: 'doc', + id: 'get-started/first-app' + },{ + type: 'doc', + id: 'get-started/test-debug' + }, + { + type: 'doc', + id: 'get-started/deployment' + }, + { + type: 'doc', + id: 'get-started/data-management' + }, + { + type: 'doc', + id: 'get-started/support' + }, + { + type: 'doc', + id: 'get-started/updates' + }, + { + type: 'doc', + id: 'get-started/community' + }, + { + type: 'doc', + id: 'get-started/subscriptions' + }, + { + type: 'doc', + id: 'get-started/payments' + }, + { + type: 'doc', + id: 'get-started/refunds' }, ], Develop: [ @@ -157,7 +195,10 @@ const sidebars = { { type: 'category', label: 'Programming Guide', - items: ['orda/data-model', 'orda/data', 'orda/queries', + items: [ 'orda/data-model', + 'orda/data', + 'orda/queries', + 'orda/sessions', ], }, { @@ -268,7 +309,6 @@ const sidebars = { 'language/commands/delayProcess', 'language/commands/deleteString', 'language/commands/ds', - 'language/commands/equalPictures', 'language/commands/exp', 'language/commands/false', 'language/commands/file', @@ -412,40 +452,30 @@ const sidebars = { ], Run: [ + 'cloud/consoleOverview', { - type: "doc", - id: "cloud/getStarted", - label: "Qodly Applications", - }, - { - type: "doc", - id: "cloud/application-management", - label: "Application Management", - }, - { - type: "doc", - id: "cloud/api-key", - label: "API Keys", + type: 'category', + label: 'Applications', + items: [ + 'cloud/sandbox', + 'cloud/myApps', + ], }, { - type: "doc", - id: "cloud/deployment", - label: "Release Management and Deployment", + type: 'category', + label: 'Environments', + items: [ + 'cloud/environmentsOverview', + 'cloud/resourceMonitoring', + 'cloud/apiKeys', + 'cloud/dataManagement', + 'cloud/deployManagement', + ], }, + 'cloud/billingSubscriptionManagement', + 'cloud/userAccountManagement', ], - Architecture: [ - { - type: 'doc', - id: 'concepts/platform', - label: "Platform Overview" - }, - { - type: 'doc', - id: 'concepts/cloud', - label: "Cloud Architecture" - }, - ], ReactComponent: [ { type: 'doc', @@ -535,13 +565,13 @@ const sidebars = { label: 'Qodly Releases', collapsed: false, items: [ - - 'notes/v1.0.0-beta.6', - 'notes/v1.0.0-beta.5', - 'notes/v1.0.0-beta.4', - 'notes/v1.0.0-beta.3', - 'notes/v1.0.0-beta.2', - 'notes/v1.0.0-beta.1' + 'notes/1.0.0-beta.6', + 'notes/1.0.0-beta.5', + 'notes/1.0.0-beta.4', + 'notes/1.0.0-beta.3', + 'notes/1.0.0-beta.2', + 'notes/1.0.0-beta.1', + 'notes/1.0.0-beta.0' ], }, ], diff --git a/src/components/HomepageFeatures/index.js b/src/components/HomepageFeatures/index.js index d2e463e3d7..bf1d7ed6c5 100644 --- a/src/components/HomepageFeatures/index.js +++ b/src/components/HomepageFeatures/index.js @@ -14,7 +14,7 @@ const FeatureList = [ the application building world! ), - link: "concepts/quickstart" + link: "get-started/quickstart" }, { title: 'Develop', @@ -33,21 +33,21 @@ const FeatureList = [ description: ( <> Launch and monitor your Qodly applications using a - comprehensive console in our cloud infrastructure. + full-featured console in our cloud infrastructure. ), - link: "cloud/getStarted" + link: "cloud/consoleOverview" }, { - title: 'Architecture', - Svg: require('@site/static/img/q-architecture.svg').default, + title: 'REST API', + Svg: require('@site/static/img/q-dev.svg').default, description: ( <> - Explore the Qodly architecture, technologies, - and main concepts. + Access your data from other applications + using the highly secured, comprehensive Qodly REST API. ), - link: "concepts/platform" + link: "api/overview" }, { title: 'Custom Components', diff --git a/src/pages/index.js b/src/pages/index.js index 491a51876a..78c55f59c9 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -18,7 +18,7 @@ function HomepageHeader() {
+ to="/docs/get-started/quickstart#create-your-account"> Get started - 5min ⏱️
diff --git a/static/img/Qodly-Dark.svg b/static/img/Qodly-Dark.svg new file mode 100644 index 0000000000..2a72329dd2 --- /dev/null +++ b/static/img/Qodly-Dark.svg @@ -0,0 +1 @@ +by \ No newline at end of file diff --git a/static/img/qodly-dark-version.svg b/static/img/qodly-dark-version.svg new file mode 100644 index 0000000000..2a72329dd2 --- /dev/null +++ b/static/img/qodly-dark-version.svg @@ -0,0 +1 @@ +by \ No newline at end of file diff --git a/static/img/qodly-light-version.svg b/static/img/qodly-light-version.svg new file mode 100644 index 0000000000..bfeefcedd9 --- /dev/null +++ b/static/img/qodly-light-version.svg @@ -0,0 +1 @@ +by \ No newline at end of file