{"revision":"c10276e953456835cdbb1f3a60d58ae1980be353","document":{"id":2486,"path":"application-development/servicenow-studio-classic/building-apps-in-source-code-sn-studio.md","title":"Building apps in source code in ServiceNow Studio","bundle":null,"doc_type":null,"release":"australia","body":"\n# Building apps in source code in ServiceNow Studio\n\nDeveloping and maintaining applications in source code enables you to create and modify complex applications, manage code in source control more easily, and catch errors at build time.\n\nTo create apps in ServiceNow Studio, you use ServiceNow Fluent, a domain-specific programming language, to define the metadata that makes up applications. ServiceNow Fluent includes APIs for defining the different types of metadata. For more information, see [ServiceNow Fluent](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-fluent.md).\n\n## Workspaces\n\nThe concept of workspaces is a bit different in ServiceNow Studio than in ServiceNow IDE. In the ServiceNow IDE, you can add any applications that you're working on to a workspace to navigate through them all from one place. You can create multiple workspaces to group different sets of applications. Workspaces are specific to a user, and applications can be added or removed from a workspace at any time.\n\nIn ServiceNow Studio, the **Explorer** tab acts as a single, persistent workspace, where you can add any application that has been converted to Fluent. For that reason, workspaces don't need to be created in ServiceNow Studio to create or group applications.\n\n## Application structure\n\nFluent applications created or converted in ServiceNow Studio include source code files and metadata XML files. The `package.json` and `now.config.json` files define the application structure, which is similar to that of Node.js applications or Node Package Manager \\(npm\\) packages.\n\n\\[Omitted image \"servicenow-ide-app-structure.png\"\\] Alt text: Structure of a source code application created in ServiceNow Studio\n\nBy default, applications include the following directories and files. You can modify certain aspects of the application structure to suit your needs in the `now.config.json` file.\n\n<table id=\"table_ws5_flw_53c\"><thead><tr><th>\n\nDirectory or file\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\n.vscode\n\n</td><td>\n\nDirectory containing recommended Visual Studio Code extensions.\n\n</td></tr><tr><td>\n\ndist\n\n</td><td>\n\nDirectory containing the build artifacts for packaging. This directory includes the following subdirectories:-   `app`: Directory containing the built metadata XML files.\n-   `static`: Directory containing the built static asset files.\n\n</td></tr><tr><td>\n\nmetadata\n\n</td><td>\n\nDirectory containing the application metadata \\(XML\\) of the application, such as table schemas and business rules, organized in the same directory structure as existing ServiceNow applications.\n\n **Note:** Application metadata shouldn't be edited from the XML files. Edit application metadata in the source code or on the ServiceNow AI Platform.\n\n</td></tr><tr><td>\n\nnode\\_modules\n\n</td><td>\n\nDirectory containing the third-party Node.js modules on which your application depends.\n\n</td></tr><tr><td>\n\nsrc\n\n</td><td>\n\nDirectory containing the source code of your application. This directory includes the following subdirectories:-   `client`: Directory containing the client-side files for developing user interfaces.\n-   `fluent`: Directory containing ServiceNow Fluent code in `.now.ts` files. The `generated` subdirectory contains the application files converted to ServiceNow Fluent.\n-   `server`: Directory containing JavaScript module code in `.js` or `.ts` files.\n\n</td></tr><tr><td>\n\ntarget\n\n</td><td>\n\nDirectory containing an installable package \\(`.zip` file\\) to upload to an instance.\n\n</td></tr><tr><td>\n\n.eslintrc\n\n</td><td>\n\nFile containing the ESLint configuration. ESLint helps identify and fix issues in the application code.\n\n</td></tr><tr><td>\n\n.gitignore\n\n</td><td>\n\nFile containing a list of directories or files for Git to ignore. These files aren't tracked in source control.\n\n</td></tr><tr><td>\n\nnow.config.json\n\n</td><td>\n\nFile containing the ServiceNow application configuration. The `now.config.json` file must be in the base directory for an application. You can configure aspects of an application by adding support parameters. For more information, see [Custom application configuration in source code](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/app-config-source-code.md).\n\n</td></tr><tr><td>\n\nnow.prebuild.mjs\n\n</td><td>\n\nAuto-updated file containing complete information about dependencies and their versions. This file is only available with the ServiceNow SDK.\n\n</td></tr><tr><td>\n\npackage-lock.json\n\n</td><td>\n\nAuto-updated file containing complete information about dependencies and their versions. This file is only available with the ServiceNow SDK.\n\n</td></tr><tr><td>\n\npackage.json\n\n</td><td>\n\nFile containing information about your application and custom or third-party module dependencies. The `package.json` file must be in the base directory for an application. On an instance, the `package.json` path is specified in the **Package JSON** field of the custom application record \\[sys\\_app\\] in the format `<scope>/<package-name>/<version>/package.json`.\n\n</td></tr></tbody>\n</table>-   **[Create an app in source code](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-studio-classic/create-an-app-in-source-code.md)**  \nCreate an application to develop in source code in ServiceNow Studio.\n-   **[Convert an application to Fluent](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-studio-classic/convert-app-to-fluent.md)**  \nConvert an existing application to support development in source code with ServiceNow Studio.\n-   **[Build and install a Fluent app in ServiceNow Studio](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-studio-classic/build-install-fluent-app-sns.md)**  \nBuild an application to compile its source code and install application changes across an instance from ServiceNow Studio.\n-   **[Synchronizing Fluent apps in ServiceNow Studio](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-studio-classic/synchronizing-fluent-apps.md)**  \nSynchronizing an application in ServiceNow Studio downloads and transforms application metadata into ServiceNow Fluent code.\n\n**Parent Topic:**[Using ServiceNow Studio](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-studio-classic/using-servicenow-studio.md)\n\n"}}