# Quick Start for Catalyst-Managed Runtimes -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.635Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/introduction/" service: "Serverless" -------------------------------------------------------------------------------- # Quick Start for Catalyst-Managed Runtimes of Java, Node.js, and Python ### Introduction This section covers examples of building sample applications with popular frameworks of each programming environment of a {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/" %}}Catalyst-managed runtime{{%/link%}}. Catalyst defines no restrictions on the frameworks that you might use for the supported programming environments, Java, Node.js, and Python to build your apps. Based on the language and framework you use, you can incorporate plugins, libraries, extensions, or any other dependencies that you might require. {{%note%}}{{%bold%}}Note:{{%/bold%}} When you build your Catalyst-managed runtime app in your local environment, you might incorporate operating system-specific dependencies in it. However, after you deploy your app as an AppSail service, the dependencies might not work as Catalyst might use different OS and architecture specifications to run your app. Therefore, it is best to avoid using any OS-specific dependencies in your app bundle.{{%/note%}} ## Java -------------------------------------------------------------------------------- title: "Overview" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.636Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/java/overview/" service: "Serverless" -------------------------------------------------------------------------------- # Java ### Overview The Java programming environment includes a variety of frameworks that contain pre-written classes, templates, packages, and structure upon which you can build your own code. As mentioned earlier, Catalyst enables you to {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize{{%/link%}} or {{%link href="/en/cli/v1/add-appsail/" %}}add{{%/link%}} an AppSail service in one of these two formats: * {{%link href="https://docs.oracle.com/cd/E19199-01/816-6774-10/a_war.html" %}}Java- WAR{{%/link%}} * {{%link href="https://www.oracle.com/cis/java/technologies/java-se-glance.html" %}}Java- SE{{%/link%}} After you select the Java stack while initializing an app service, you can select one of these options. However, you can still build your Java application with any frameworks; incorporate any libraries, modules, or dependencies; generate it as any standard package; and follow any editions you require. {{%note%}}{{%bold%}}Note:{{%/bold%}} When you use the Java WAR template for deploying your Java application exported as a WAR file, you need not embed a Java web server in your application, as AppSail will bundle your application with a server by default. If you choose Java SE as your template for all other Java application formats, such as a JAR file, you will need to include an embedded server in your application.{{%/note%}} The Java help guide contains step-by-step instructions on building basic sample apps with some of the most popular frameworks, using popular Java web servers in them, and deploying these apps as AppSail services, and configuring {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup commands{{%/link%}} as required. <br> ### Prerequisites Depending on the framework, server, and edition you use in these examples, you will need to ensure that you have all the prerequisites installed in your local machine. -------------------------------------------------------------------------------- title: "Embedded Jetty" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.637Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/java/embedded-jetty/" service: "Serverless" -------------------------------------------------------------------------------- # Simple Java App with Embedded Jetty This example illustrates the steps to build a simple Java app with a {{%link href="https://docs.oracle.com/cd/E19199-01/816-6774-10/a_war.html" %}}Jetty server{{%/link%}} embedded in it. Eclipse Jetty is a lightweight Java web server as well as a servlet container. This application will then be compiled, bundled, and associated with an AppSail service as a Java SE type, and deployed to the console. 1. Create a new Java project from an IDE of your choice. 2. Include the following libraries in your source directory. We have created a new folder in this example and named it deps. These JAR files include all the servlets, utility files, and other dependencies that will embed the Jetty server into your application. You can fetch these dependencies from the {{%link href="https://mvnrepository.com/" %}}official Maven repository{{%/link%}}. You can also add these as Maven dependencies. {{%code class="language-json"%}}javax.servlet-api-3.1.0.jar jetty-io-9.4.50.v20221201.jar jetty-server-9.4.50.v20221201.jar jetty-util-9.4.50.v20221201.jar jetty-http-9.4.50.v20221201.jar jetty-security-9.4.50.v20221201.jar jetty-servlet-9.4.50.v20221201.jar jetty-util-ajax-9.4.50.v20221201.jar{{%/code%}} <br> 3. To create an embedded Jetty application, you will need to create an instance of org.eclipse.jetty.server.Server class and refer to the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#default-port-for-app-startups"%}}listening port{{%/link%}} with the environment variable {{%badge%}}X_ZOHO_CATALYST_LISTEN_PORT{{%/badge%}} in your main code. You must add a Servlet handler to handle these requests. Create the following Java files in your main directory and add the sample code snippets given below: **CustomJettyServer.java** {{%code class="language-java"%}}import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; public class CustomJettyServer { public static void main( String[] args ) throws Exception { String port = System.getenv("X_ZOHO_CATALYST_LISTEN_PORT"); int listenPort; if(port != null && !port.isEmpty()) { listenPort = Integer.parseInt(System.getenv("X_ZOHO_CATALYST_LISTEN_PORT")); } else { listenPort = 9000; } Server server = new Server(listenPort); ServletContextHandler handler = new ServletContextHandler(); handler.addServlet(ServletHandler.class.getName(), "/"); server.setHandler(handler); server.start(); } }{{%/code%}} <br> **ServletHandler.java** {{%code class="language-java"%}}import java.io.IOException; import java.nio.charset.StandardCharsets; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletHandler extends HttpServlet{ @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String path = req.getServletPath(); System.out.println(path); try { resp.getWriter().write("Hello ABC"); resp.getWriter().close(); } catch (Exception e) { e.printStackTrace(); } } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } }{{%/code%}} <br> 4. Compile the application by executing the command given below: {{%code class="language-json"%}}javac -cp ".:./*:./deps/*" *.java{{%/code%}} <br> 5. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following values while initializing the app service: **Stack:** Java 8 <br> **Platform:** Java SE 6. Ensure the compiled file, along with the JAR files in the deps folder, are added in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 7. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 8. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-java"%}}java -cp ".:./*:./deps/*" *.java{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. -------------------------------------------------------------------------------- title: "Spring MVC" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.639Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/java/spring-mvc/" service: "Serverless" -------------------------------------------------------------------------------- # Spring- MVC The {{%link href="https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/mvc.html" %}}Spring Web MVC{{%/link%}} framework is a module of the popular {{%link href=https://spring.io" %}}Spring framework{{%/link%}} that follows a Model-View-Controller architecture. This framework allows for the creation of web applications, incorporating the advantages of the Spring framework along with loose coupling of components in the MVC design pattern. It is built around a {{%badge%}}DispatcherServlet{{%/badge%}} that handles HTTP requests and responses, and dispatches the requests to necessary handlers and controllers. This example explains the steps to build a sample app in the Spring MVC framework, export it as a WAR file, and deploy it to AppSail. 1. Create a new Maven project using an IDE of your choice. You must select the following {{%link href="https://maven.apache.org/guides/introduction/introduction-to-archetypes.html" %}}Archetype{{%/link%}} for the project: {{%badge%}}org.apache.maven.archetypes maven-archetype-webapp{{%/badge%}}. 2. In the {{%badge%}}pom.xml{{%/badge%}} file of your project, add the spring dependencies given below. {{%code class="language-java"%}}&lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-core&lt;/artifactId&gt; &lt;version&gt;5.2.19.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-context&lt;/artifactId&gt; &lt;version&gt;5.2.19.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-aop&lt;/artifactId&gt; &lt;version&gt;5.2.19.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt; &lt;version&gt;5.2.19.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-web&lt;/artifactId&gt; &lt;version&gt;5.2.19.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;javax.servlet&lt;/groupId&gt; &lt;artifactId&gt;jstl&lt;/artifactId&gt; &lt;version&gt;1.2&lt;/version&gt; &lt;/dependency&gt;{{%/code%}} <br> 3. Add the dependencies below in a build enclosure to compile and generate the WAR file. {{%code class="language-java"%}}&lt;plugins&gt; &lt;plugin&gt; &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt; &lt;version&gt;3.8.0&lt;/version&gt; &lt;configuration&gt; &lt;source&gt;1.8&lt;/source&gt; &lt;target&gt;1.8&lt;/target&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;plugin&gt; &lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt; &lt;version&gt;3.2.1&lt;/version&gt; &lt;configuration&gt; &lt;warSourceDirectory&gt;WebContent&lt;/warSourceDirectory&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;/plugins&gt;{{%/code%}} <br> 4. Create a {{%link href="https://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html" %}}Spring XML configuration file{{%/link%}} in your project, and add the bean configurations given below. {{%code class="language-java"%}}&lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "&gt;{{%/code%}} Your Spring configuration file should look something like this: {{%code class="language-java"%}}&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "&gt; &lt;mvc:annotation-driven/&gt; &lt;mvc:default-servlet-handler/&gt; &lt;context:component-scan base-package="com.amelia.example.controller" /&gt; &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="prefix" value="/"&gt;&lt;/property&gt; &lt;property name="suffix" value=".jsp"&gt;&lt;/property&gt; &lt;/bean&gt; &lt;/beans&gt; {{%/code%}} <br> 5. Add a server runtime to the project. For example, if you are working in the Eclipse IDE, you can add a targeted runtime for the Apache Tomcat server in the following way: Right click on the **project -&gt; Properties -&gt; Targeted Runtime**. Here, you can add the required runtime, then click **Apply**. 6. You can now add the required controller and error page handling, as well as a servlet mapping in the {{%badge%}}web.xml{{%/badge%}} file of your project. For example, you can use the configuration given below: {{%code class="language-java"%}}&lt;welcome-file-list&gt; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt; &lt;/welcome-file-list&gt; &lt;servlet&gt; &lt;servlet-name&gt;helloworld&lt;/servlet-name&gt; &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;helloworld&lt;/servlet-name&gt; &lt;url-pattern&gt;/&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; &lt;error-page&gt; &lt;error-code&gt;404&lt;/error-code&gt; &lt;location&gt;/error.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;401&lt;/error-code&gt; &lt;location&gt;/error.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;500&lt;/error-code&gt; &lt;location&gt;/error.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;400&lt;/error-code&gt; &lt;location&gt;/error.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;403&lt;/error-code&gt; &lt;location&gt;/error.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;408&lt;/error-code&gt; &lt;location&gt;/error.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;413&lt;/error-code&gt; &lt;location&gt;/error.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;414&lt;/error-code&gt; &lt;location&gt;/error.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;505&lt;/error-code&gt; &lt;location&gt;/error.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;405&lt;/error-code&gt; &lt;location&gt;/error.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;409&lt;/error-code&gt; &lt;location&gt;/error.jsp&lt;/location&gt; &lt;/error-page&gt; &lt;error-page&gt; &lt;exception-type&gt; java.lang.Throwable &lt;/exception-type&gt; &lt;location&gt;/error.jsp&lt;/location&gt; &lt;/error-page&gt;{{%/code%}} <br> 7. You can upload the application to Catalyst by exporting it as a WAR file. In the Eclipse example, you can right click on the project and choose **Export As -&gt; WAR**. You must do the following: a. Choose a destination with file name as {{%badge%}}ROOT.war{{%/badge%}} <br> b. Uncheck the Optimize for specific server runtime option. <br> 8. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following values while initializing the app service: **Stack:** Java 8 <br> **Platform:** Java WAR 9. Ensure the compiled files are added in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 10. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. -------------------------------------------------------------------------------- title: "Spring Boot" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.651Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/java/spring-boot/" service: "Serverless" -------------------------------------------------------------------------------- # Spring Boot {{%link href="https://spring.io/projects/spring-boot" %}}Spring Boot{{%/link%}} is built on top of the popular {{%link href="https://spring.io" %}}Spring framework{{%/link%}}, and includes a wide range of enhancements that allow you to easily build production-grade microservices, web applications, and standalone Spring projects with reduced development efforts. Spring Boot typically includes embedded HTTP servers like Jetty or Apache Tomcat, without the complex XML configurations of Spring. {{%note%}}{{%bold%}}Note:{{%/bold%}} When you export a Spring Boot app as a JAR file in the example below, you can retain the embedded server included in it. However, when you export the Spring Boot app as a WAR file, you will need to exclude the embedded server included in it, if you initialize it as Java WAR in AppSail. This is because AppSail offers native support for WAR files and bundles them with the Jetty server by default.{{%/note%}} ### Spring Boot- JAR This example illustrates the steps to build a sample Spring Boot app, export it as a JAR file, and deploy it to AppSail. 1. Open {{%link href="https://start.spring.io/" %}}Spring Initializr{{%/link%}} to create a new project. 2. Choose the following configurations for your project:<br><br> a. Project - Maven Project<br> b. Language - Java<br> c. Spring Boot Version - 2.7.10<br> d. Package - JAR<br> e. Java Version - 8<br> f. Click **Add Dependencies** and select **Spring Web**. 3. Click **Generate**. 4. Unzip the project and open it in any IDE of your choice. 5. Add necessary controllers to the project. For example, create a file named {{%badge%}}DemoController.java{{%/badge%}} in the main Java file's directory of your project, and add the controller specified below in the file. {{%code class="language-java"%}}package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class DemoController { @GetMapping("/") public String index() { return "Greetings from Spring Boot!"; } }{{%/code%}} <br> 6. Catalyst will check the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#default-port-for-app-startups"%}}port configured for listening{{%/link%}} with the environment variable {{%badge%}}X_ZOHO_CATALYST_LISTEN_PORT{{%/badge%}} and the app must listen to that port on all interfaces (host 0.0.0.0). Therefore, you will need to customize the port. You can do this by creating a file named {{%badge%}}ServerPortCustomizer.java{{%/badge%}} in the main Java file's directory of your project, and adding the code specified below in it: {{%code class="language-java"%}}package com.example.demo; import org.springframework.boot.web.server.ConfigurableWebServerFactory; import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.stereotype.Component; @Component public class ServerPortCustomizer implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> { @Override public void customize(ConfigurableWebServerFactory factory) { String port = System.getenv("X_ZOHO_CATALYST_LISTEN_PORT"); int listenPort; if(port != null && !port.isEmpty()) { listenPort = Integer.parseInt(System.getenv("X_ZOHO_CATALYST_LISTEN_PORT")); } else { listenPort = 9000; } factory.setPort(listenPort); } }{{%/code%}} You can now save the application and run it in Catalyst. 7. You can run this application on your local machine by executing the following command from your terminal: {{%code class="language-java"%}}./mvnw spring-boot:run{{%/code%}} 8. You can then compile the source code, run tests, and package the compiled code by executing the following command: {{%code class="language-java"%}}./mvnw clean package{{%/code%}} This will generate the JAR file of the application in the target folder. 9. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following values while initializing the app service: **Stack:** Java 8 <br> **Platform:** Java SE 10. Ensure the JAR file is added in the build directory you specified during initialization. Catalyst will automatically ZIP your app file during deployment to the remote console. 11. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 12. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-java"%}}java -jar demo-0.0.1-SNAPSHOT.jar{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. <br> <br> ### Spring Boot - WAR This example explains the steps to build a sample Spring Boot app, export it as a WAR file, and deploy it to AppSail: 1. Open {{%link href="https://start.spring.io/" %}}Spring Initializr{{%/link%}} to create a new project. 2. Choose the following configurations for your project:<br><br> a. Project - Maven Project<br> b. Language - Java<br> c. Spring Boot Version - 2.7.10<br> d. Package - WAR<br> e. Java Version - 8<br> f. Click **Add Dependencies** and select **Spring Web**. 3. Click **Generate**. 4. Unzip the project and open in any IDE of your choice. 5. You must now add necessary controllers to the project. For example, create a file named {{%badge%}}DemoController.java{{%/badge%}} in the main Java file's directory of your project, and add the controller specified below in the file. {{%code class="language-java"%}}package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class DemoController { @GetMapping("/") public String index() { return "Greetings from Spring Boot WAR!"; } }{{%/code%}} <br> 6. You must now modify the {{%badge%}}pom.xml{{%/badge%}} file in your project to exclude the embedded Tomcat server while generating the WAR file, as explained in the overview. You can do this by adding the snippet given below in the {{%badge%}}spring-boot-maven-plugin enclosure{{%/badge%}} in the XML file: {{%code class="language-json"%}}&lt;configuration&gt; &lt;mainClass&gt;${main_class_name}&lt;/mainClass&gt; &lt;classifier&gt;exec&lt;/classifier&gt; &lt;/configuration&gt;{{%/code%}} <br> 7. You can run this application on your local machine by executing the following command from your terminal: {{%code class="language-java"%}}./mvnw spring-boot:run{{%/code%}} <br> 8. You can upload the application to Catalyst with this command: {{%code class="language-java"%}}./mvnw clean package{{%/code%}} This will generate the WAR file of the application in the target folder. 9. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following values while initializing the app service: **Stack:** Java 8 <br> **Platform:** Java WAR 10. Ensure the WAR file is added in the build directory you specify during initialization. Catalyst will automatically ZIP your app file during deployment to the remote console. 11. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. ## Node.js -------------------------------------------------------------------------------- title: "Overview" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.651Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/nodejs.md/overview/" service: "Serverless" -------------------------------------------------------------------------------- # Node.js ### Overview The Node.js programming environment boasts of a variety of frameworks for both server-side and web client development, and even a host of full-stack frameworks. These frameworks are equipped with pre-written libraries, templates, plugins, and features upon which you can build your own code. Some frameworks are MVC-oriented, some contribute to building end-to-end dynamic web apps or REST APIs, while some are mounted on top of other frameworks. Based on your application needs, you can opt for the right framework. AppSail does not provide any templates for specific Node.js frameworks, and therefore does not contain any framework restrictions. You can build your app service using any Node.js technology that you prefer, and incorporate any libraries, modules, or dependencies. You can then directly select a Node.js runtime while initializing the app service in the CLI, and deploy it to AppSail. The Node.js help guide contains step-by-step instructions on building basic sample apps with some of its most popular frameworks, deploying these apps as AppSail services, and configuring {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup commands{{%/link%}} as required. ### Prerequisites {{%link href="https://nodejs.org/en/download" %}}Download{{%/link%}} and install Node.js on your local machine. -------------------------------------------------------------------------------- title: "Express" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.652Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/nodejs.md/express/" service: "Serverless" -------------------------------------------------------------------------------- # Express Framework {{%link href="https://expressjs.com/" %}}Express{{%/link%}} is a highly robust and minimalist framework that comes bundled with a host of HTTP utility methods and middleware. This example illustrates the steps to build a simple Node.js app with the Express framework. This application will then be bundled and associated with an AppSail service, and deployed to the console. 1. Create a new folder in your local system for the Express app. 2. Navigate to the directory from your terminal and initialize Node with the following command: {{%code class="language-javascript"%}}npm init{{%/code%}} Follow the steps in the terminal and provide the required details. 3. Now, add the express module to your application using the {{%link href="https://www.npmjs.com/" %}}npm{{%/link%}} package manager by executing the command: {{%code class="language-javascript"%}}npm install --save express{{%/code%}} 4. You can now add the logic you require in the application's code in the main file. Given below is a sample code for a basic "Hello World" program. {{%code class="language-javascript"%}}const express = require('express') const app = express() app.all('/', (req, res) => { res.status(200).send("Hello World") }) app.listen(process.env.X_ZOHO_CATALYST_LISTEN_PORT || 9000, () => { console.log("Server Started") }){{%/code%}} 5. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following value while initializing the app service: **Stack:** Node16 6. Ensure the main file, configuration files, and the node modules are present in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 7. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 8. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-javascript"%}}node index.js{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. -------------------------------------------------------------------------------- title: "Express with NPM" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.652Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/nodejs.md/express-npm/" service: "Serverless" -------------------------------------------------------------------------------- # Express Framework With NPM This example illustrates the steps to build a Node.js app with the Express framework, then configuring a {{%link href="https://www.npmjs.com/" %}}Node Package Manager{{%/link%}} (npm) {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} in one of the configuration files through scripts. This application will be bundled and associated with an AppSail service, and deployed to the console, before you configure the startup command in the console. 1. Create a new folder in your local system for the Express app. 2. Navigate to the directory from your terminal and initialize Node with the following command: {{%code class="language-javascript"%}}npm init{{%/code%}} Follow the steps in the terminal and provide the required details. 3. Now, add the express module to your application using the npm package manager by executing the command: {{%code class="language-javascript"%}}npm install --save express{{%/code%}} 4. You can now add the logic you require in the application's code in the main file. Given below is a sample code for a basic "Hello World" program. {{%code class="language-javascript"%}}const express = require('express') const app = express() app.all('/', (req, res) => { res.status(200).send("Hello World") }) app.listen(process.env.X_ZOHO_CATALYST_LISTEN_PORT || 9000, () => { console.log("Server Started") }){{%/code%}} 5. Open the {{%link href="https://docs.npmjs.com/cli/v9/configuring-npm/package-json" %}}{{%badge%}}package.json{{%/badge%}}{{%/link%}} configuration file in the application's directory. Inside the {{%badge%}}scripts{{%/badge%}} key in the file, you must add a new key: {{%badge%}}start{{%/badge%}} and configure its value as: {{%badge%}}node index.js{{%/badge%}}. This defines the startup command for the application. You can then refer to this key while adding the startup command. 6. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following value while initializing the app service: **Stack:** Node16 7. Ensure the main file, configuration files, and the node modules are present in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 8. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 9. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-javascript"%}}npm start{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. -------------------------------------------------------------------------------- title: "Hapi" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.652Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/nodejs.md/hapi/" service: "Serverless" -------------------------------------------------------------------------------- # Hapi Framework {{%link href="https://hapi.dev/" %}}Hapi.js{{%/link%}} is a Node framework that helps you build scalable web applications, HTTP-proxy applications, APIs, and more. Hapi offers a robust plugin system, a comprehensive and integrated authentication architecture, end-to-end high security, and more. This example illustrates the steps to build a simple Node.js app with the Hapi framework. This application will then be bundled and associated with an AppSail service, and deployed to the console. 1. Create a new folder in your local system for the Hapi app. 2. Navigate to the directory from your terminal and initialize Node with the following command: {{%code class="language-javascript"%}}npm init{{%/code%}} Follow the steps in the terminal and provide the required details. 3. Add the Hapi module to your application using {{%link href="https://www.npmjs.com/" %}}npm{{%/link%}} by executing the command: {{%code class="language-javascript"%}}npm install --save @hapi/hapi{{%/code%}} 4. You can now add the logic you require in the application's code in the main file. Given below is a sample code for a basic "Hello World" program. {{%code class="language-javascript"%}}'use strict'; const Hapi = require('@hapi/hapi'); const init = async () => { const server = Hapi.server({ port: process.env.X_ZOHO_CATALYST_LISTEN_PORT | 9000, host: '0.0.0.0' }); server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hello World!'; } }); await server.start(); console.log('Server running on %s', server.info.uri); }; process.on('unhandledRejection', (err) => { console.log(err); process.exit(1); }); init();{{%/code%}} 5. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following value while initializing the app service: **Stack:** Node16 6. Ensure the main file, configuration files, and the node modules are present in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 7. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 8. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-javascript"%}}node index.js{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. -------------------------------------------------------------------------------- title: "Koa" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.652Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/nodejs.md/koa/" service: "Serverless" -------------------------------------------------------------------------------- # Koa Framework {{%link href="https://koajs.com/" %}}Koa{{%/link%}} is a Node.js middleware framework that is minimal and expressive in nature, and enables you to build robust web applications and APIs. Koa uses async functions that remove the need for callbacks, handles errors efficiently, and substantially reduces your time in building servers through a multitude of other features it offers. This example illustrates the steps to build a simple Node.js app with the Koa framework. This application will then be bundled and associated with an AppSail service, and deployed to the console. 1. Create a new folder in your local system for the Koa app. 2. Navigate to the directory from your terminal and initialize Node with the following command: {{%code class="language-javascript"%}}npm init{{%/code%}} Follow the steps in the terminal and provide the required details. 3. Add the Koa module to your application using {{%link href="https://www.npmjs.com/" %}}npm{{%/link%}} by executing the command: {{%code class="language-javascript"%}}npm install --save koa npm install --save @koa/router{{%/code%}} 4. You can now add the logic you require in the application's code in the main file. Given below is a sample code for a basic "Hello World" program. {{%code class="language-javascript"%}}var Koa = require('koa'); var Router = require('@koa/router'); const app = new Koa(); const router = new Router(); router.get('/', (ctx, next) => { ctx.body = "Hello World" }); app.use(router.routes()) app.listen(process.env.X_ZOHO_CATALYST_LISTEN_PORT | 9000);{{%/code%}} 5. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following value while initializing the app service: **Stack:** Node16 6. Ensure the main file, configuration files, and the node modules are present in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 7. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 8. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-javascript"%}}node index.js{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. -------------------------------------------------------------------------------- title: "Fastify" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.653Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/nodejs.md/fastify/" service: "Serverless" -------------------------------------------------------------------------------- # Fastify {{%link href="https://www.fastify.io/" %}}Fastify{{%/link%}} is a high-performance, highly-extensible Node.js framework with minimal overhead, that helps you create reliable and efficient applications and APIs. Fastify brings in a host of convent features, such as affordable logging, Schema support, TypeScript-readiness, and various other developer-friendly features. This example illustrates the steps to build a simple Node.js app with the Fastify framework. This application will then be bundled and associated with an AppSail service, and deployed to the console. 1. Create a new folder in your local system for the Fastify app. 2. Navigate to the directory from your terminal and initialize Node with the following command: {{%code class="language-javascript"%}}npm init{{%/code%}} Follow the steps in the terminal and provide the required details. 3. Add the Fastify framework to your application using {{%link href="https://www.npmjs.com/" %}}npm{{%/link%}} by executing the command: {{%code class="language-javascript"%}}npm install --save fastify{{%/code%}} 4. You can now add the logic you require in the application's code in the main file. Given below is a sample code for a basic "Hello World" program. {{%code class="language-javascript"%}}// Require the framework and instantiate it const fastify = require('fastify')({ logger: true }) // Declare a route fastify.get('/', async (request, reply) => { return { hello: 'world' } }) // Run the server! const start = async () => { try { await fastify.listen({ port: process.env.X_ZOHO_CATALYST_LISTEN_PORT | 9000 , host: "0.0.0.0" }) } catch (err) { fastify.log.error(err) process.exit(1) } } start(){{%/code%}} 5. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following value while initializing the app service: **Stack:** Node16 6. Ensure the main file, configuration files, and the node modules are present in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 7. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 8. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-javascript"%}}node index.js{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. -------------------------------------------------------------------------------- title: "Restify" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.653Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/nodejs.md/restify/" service: "Serverless" -------------------------------------------------------------------------------- # Restify Framework {{%link href="http://restify.com/" %}}Restify{{%/link%}} is a Node.js framework that helps you build RESTful web services specifically with a focus on high performance, and provides features that facilitate optimal error handling, versioning, and semantics-support. Restify also offers router introspection, datastore support with popular SQLs, and many other additional conveniences. This example illustrates the steps to build a simple Node.js app with the Restify framework. This application will then be bundled and associated with an AppSail service, and deployed to the console. 1. Create a new folder in your local system for the Restify app. 2. Navigate to the directory from your terminal and initialize Node with the following command: {{%code class="language-javascript"%}}npm init{{%/code%}} Follow the steps in the terminal and provide the required details. 3. Add the Restify framework to your application using {{%link href="https://www.npmjs.com/" %}}npm{{%/link%}} by executing the command: {{%code class="language-javascript"%}}npm install --save restify{{%/code%}} 4. You can now add the logic you require in the application's code in the main file. Given below is a sample code for a basic "Hello World" program. {{%code class="language-javascript"%}}var restify = require('restify'); var server = restify.createServer(); server.get('/', function respond(req, res, next) { res.send('hello world'); next(); }); server.listen(process.env.X_ZOHO_CATALYST_LISTEN_PORT | 9000, '0.0.0.0', function () { console.log('%s listening at %s', server.name, server.url); });{{%/code%}} 5. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following value while initializing the app service: **Stack:** Node16 6. Ensure the main file, configuration files, and the node modules are present in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 7. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 8. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-javascript"%}}node index.js{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. ## Python -------------------------------------------------------------------------------- title: "Overview" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.653Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/python/overview/" service: "Serverless" -------------------------------------------------------------------------------- # Python ### Overview Python is one of the leading and most in-demand programming languages in the world, used in a wide variety of domains for numerous applications. Python's popularity is reflected in the vast collection of frameworks available for the programming environment, which can be broadly grouped into full-stack frameworks, microframeworks, or asynchronous frameworks. Each group of frameworks, and each individual framework, serves specific requirements with their unique features and advantages. Python frameworks are equipped with pre-written libraries, templates, plugins, and features upon which you can build your own code. Based on your application needs, you can opt for the right framework. AppSail does not provide any templates for specific Python frameworks, and therefore does not contain any framework restrictions. You can build your app service using any Python technology that you prefer, and incorporate any libraries, plugins, extensions, or dependencies. You can then directly select a Python runtime while initializing the app service in the CLI, and deploy it to AppSail. The Python help guide contains step-by-step instructions on building basic sample apps with some of its most popular frameworks, deploying these apps as AppSail services, and configuring {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup commands{{%/link%}} as required. ### Prerequisites {{%link href="https://www.python.org/downloads/" %}}Download{{%/link%}} and install Python on your local machine. -------------------------------------------------------------------------------- title: "Flask" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.653Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/python/flask/" service: "Serverless" -------------------------------------------------------------------------------- # Flask App with zcatalyst-sdk {{%link href="https://flask.palletsprojects.com/en/2.2.x/" %}}Flask{{%/link%}} is a popular, lightweight microframework of Python that developers can use to build highly functional applications. It does not use any libraries or tools, but supports a wide range of extensions for a variety of functionalities. Flask comes with a fast and built-in debugger and development server, as well as offers secure cookies, Unicode support and more. This example illustrates the steps to build a simple Python app with the Flask framework and Catalyst Python SDK. This application will then be bundled and associated with an AppSail service, and deployed to the console. {{%note%}}{{%bold%}}Note:{{%/bold%}} Catalyst offers a built-in support for the Flask framework through the {{%link href="/en/sdk/python/v1/overview" %}}Catalyst Python SDK{{%/link%}}. You can create {{%link href="/en/serverless/help/functions/introduction/" %}}Catalyst serverless functions{{%/link%}} using this SDK package.{{%/note%}} 1. Create a new folder in your local system for the Flask app. 2. Navigate to the directory from your terminal and execute the following command to install Flask and the {{%link href="/en/sdk/python/v1/setup/#installing-the-sdk"%}}Python {{%badge%}}zcatalyst-sdk{{%/badge%}}{{%/link%}}: {{%code class="language-python"%}}python3 -m pip install flask -t . python3 -m pip install --pre zcatalyst-sdk -t . {{%/code%}} 3. You can now create your python index file and name it {{%badge%}}app.py{{%/badge%}} or anything of your choice. Add the logic you require in the application's code. Given below is a sample code for a basic "Hello World" program. {{%code class="language-python"%}}import os from flask import Flask, request app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' @app.route('/sdk') def sdk(): try: import zcatalyst_sdk as zcatalyst app = zcatalyst.initialize(req=request) cache_resp = app.cache().segment().put('Key', 'value') return cache_resp, 200 except Exception as e: return 'Got exception: ' + repr(e) if __name__ == '__main__': listen_port = int(os.getenv('X_ZOHO_CATALYST_LISTEN_PORT', 9000)) app.run(host="0.0.0.0", port=listen_port){{%/code%}} 4. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following value while initializing the app service: **Stack**: Python_3_9 5. Ensure all the Python application files along with the {{%badge%}}flask{{%/badge%}} and {{%badge%}}zcatalyst-sdk{{%/badge%}} modules are present in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 6. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 7. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-python"%}}python3 -u app.py{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. -------------------------------------------------------------------------------- title: "Django" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.653Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/python/django/" service: "Serverless" -------------------------------------------------------------------------------- # Django Framework {{%link href="https://www.djangoproject.com/" %}}Django{{%/link%}} is a highly popular, full-stack, open-sourced framework of Python that includes all Python features by default. This high-level framework handles much of the intricacies of web development in a built-in manner, and allows developers to focus on the logic of their apps. Django also offers inherent support for commonly-used database systems and ORM support to map objects to tables, which facilitates easy data migration. This example illustrates the steps to build a simple Python app with the Django framework. This application will then be bundled and associated with an AppSail service, and deployed to the console. 1. Create a new folder in your local system for the Django app. 2. Navigate to the directory from your terminal and execute the following command to install Django: {{%code class="language-python"%}}python3 -m pip install django -t .{{%/code%}} 3. Create a {{%link href="https://docs.djangoproject.com/en/4.1/intro/tutorial01/#creating-a-project" %}}Django project{{%/link%}} by executing the following command. {{%code class="language-python"%}}python3 -m django startproject mysite{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} You will need to configure your AppSail domain in {{%badge%}}ALLOWED_HOSTS{{%/badge%}} as mentioned in {{%link href="https://docs.djangoproject.com/en/4.2/ref/settings/#allowed-hosts" %}}this help section{{%/link%}}.{{%/note%}} 4. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following value while initializing the app service: **Stack**: Python_3_9 5. Ensure all the Python application files along with the {{%badge%}}django{{%/badge%}} modules are present in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 6. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 7. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-python"%}}sh -c 'python3 -u mysite/manage.py runserver 0.0.0.0:${X_ZOHO_CATALYST_LISTEN_PORT}'{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. -------------------------------------------------------------------------------- title: "Bottle" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.653Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/python/bottle/" service: "Serverless" -------------------------------------------------------------------------------- # Bottle Framework {{%link href="https://bottlepy.org/docs/dev/" %}}Bottle{{%/link%}} is a fast and simple microframework of Python for building APIs, small-scale personal applications without the requirement of any dependencies. Bottle comes with a host of features like a built-in development server, plugins for various databases, request-dispatching routing, and several utilities. This example illustrates the steps to build a simple Python app with the Bottle framework. This application will then be bundled and associated with an AppSail service, and deployed to the console. 1. Create a new folder in your local system for the Bottle app. 2. Navigate to the directory from your terminal and execute the following command to install Bottle: {{%code class="language-python"%}}python3 -m pip install bottle -t.{{%/code%}} 3. You can now create your python index file and name it {{%badge%}}app.py{{%/badge%}} or anything of your choice. Add the logic you require in the application's code. Given below is a sample code for a basic "Hello World" program. {{%code class="language-python"%}}import os import bottle app = bottle.Bottle() @app.route('/') def hello(): return "Hello, World!" if __name__ == '__main__': listen_port = int(os.getenv('X_ZOHO_CATALYST_LISTEN_PORT', 9000)) bottle.run(app, host='0.0.0.0', port=listen_port){{%/code%}} 4. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following value while initializing the app service: **Stack**: Python_3_9 5. Ensure all the Python application files along with the {{%badge%}}bottle{{%/badge%}} modules are present in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 6. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 7. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-python"%}}python3 -u app.py{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. -------------------------------------------------------------------------------- title: "CherryPy" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.654Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/python/cherrypy/" service: "Serverless" -------------------------------------------------------------------------------- # CherryPy Framework {{%link href="https://cherrypy.dev/" %}}CherryPy{{%/link%}} is an open-source, minimalist microframework of Python used to build web applications similar to writing an object-oriented program. CherryPy offers a highly functional plugin system, built-in support for authentication, encoding, caching, multiple- HTTP servers, and more. 1. Create a new folder in your local system for the CherryPy app. 2. Navigate to the directory from your terminal and execute the following command to install CherryPy: {{%code class="language-python"%}}python3 -m pip install CherryPy -t.{{%/code%}} 3. You can now create your python index file and name it {{%badge%}}app.py{{%/badge%}} or anything of your choice. Add the logic you require in the application's code. Given below is a sample code for a basic "Hello World" program. {{%code class="language-python"%}}import os import cherrypy class HelloWorld: @cherrypy.expose def index(self): return "Hello, World!" if __name__ == "__main__": listen_port = int(os.getenv('X_ZOHO_CATALYST_LISTEN_PORT', 9000)) cherrypy.config.update({ "server.socket_host": "0.0.0.0", "server.socket_port": 9000 }) cherrypy.quickstart(HelloWorld()){{%/code%}} 4. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following value while initializing the app service: **Stack**: Python_3_9 5. Ensure all the Python application files along with the {{%badge%}}cherrypy{{%/badge%}} modules are present in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 6. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 7. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-python"%}}python3 -u app.py{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}. -------------------------------------------------------------------------------- title: "Tornado" description: "Catalyst AppSail is a fully-managed PaaS component of Catalyst Serverless that enables you to develop and deploy services in Java, Node.js, and Python in the cloud with ease, and manage your platform instances." last_updated: "2026-03-18T07:41:08.654Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/help-guides/python/tornado/" service: "Serverless" -------------------------------------------------------------------------------- # Tornado Framework {{%link href="https://www.tornadoweb.org/en/stable/" %}}Tornado{{%/link%}} is a Python web framework and an asynchronous networking library that relies on non-blocking network I/O to serve web applications. This framework is therefore ideal for handling a large number of active server connections, such as in websockets. Tornado also offers built-in internalization, quick request execution, and many other features. This example illustrates the steps to build a simple Python app with the Tornado framework. This application will then be bundled and associated with an AppSail service, and deployed to the console. 1. Create a new folder in your local system for the Tornado app. 2. Navigate to the directory from your terminal and execute the following command to install Tornado: {{%code class="language-python"%}}python3 -m pip install tornado -t.{{%/code%}} 3. You can now create your python index file and name it {{%badge%}}app.py{{%/badge%}} or anything of your choice. Add the logic you require in the application's code. Given below is a sample code for a basic "Hello World" program. {{%code class="language-python"%}}import os import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, World!") if __name__ == "__main__": app = tornado.web.Application([ (r"/", MainHandler), ]) listen_port = int(os.getenv('X_ZOHO_CATALYST_LISTEN_PORT', 9000)) app.listen(listen_port, address='0.0.0.0') tornado.ioloop.IOLoop.current().start(){{%/code%}} 4. You can now {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} in the same directory from the CLI or {{%link href="/en/cli/v1/add-appsail/" %}}add it{{%/link%}} in an existing project directory. The app's source must be your application's directory. Provide the following value while initializing the app service: **Stack**: Python_3_9 5. Ensure all the Python application files along with the {{%badge%}}tornado{{%/badge%}} modules are present in the build directory you specify during initialization. Catalyst will automatically ZIP your app files during deployment to the remote console. 6. {{%link href="/en/cli/v1/deploy-resources/deploy-appsail//" %}}Deploy the app service{{%/link%}} to the console. 7. You can then configure the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup command{{%/link%}} given below from the console: {{%code class="language-python"%}}python3 -u app.py{{%/code%}} You can also configure this in the {{%badge%}}app-config.json{{%/badge%}} file before deploying. <br> Access the deployed app service from its {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#custom-domain-url" %}}endpoint URL{{%/link%}}.