--- title: "Initialize the Project" url: https://docs.catalyst.zoho.com/en/tutorials/birthday-greetings/nodejs/init-project/ description: "Build a birthday greetings application using the Job Scheduling service and automatically send out birthday greetings to the required person via their email." last_updated: 2026-08-17T12:16:04Z service: All Services type: tutorial related_links: - name: "Catalyst CLI" url: /en/cli/v1/cli-command-reference/ - name: "Initialize Resources" url: /en/cli/v1/initialize-resources/introduction/ - name: "Project Directory" url: /en/cli/v1/project-directory-structure/introduction/ - name: "Catalyst Functions" url: /en/serverless/help/functions/introduction/ --- # Initialize the Project You can now begin working on your Catalyst project from the CLI. The first step is to initialize the project in an empty directory. This will be the home directory of your project, and all of the project files will be saved in it. You can learn more about this from the [Project Directory Structure help page](https://docs.catalyst.zoho.com/en/cli/v1/project-directory-structure/introduction/). You can learn about initializing a project in detail from the [CLI help documentation](https://docs.catalyst.zoho.com/en/cli/v1/initialize-resources/introduction). For this application, we will initialize a [Basic I/O function](https://docs.catalyst.zoho.com/en/serverless/help/functions/basic-io/), which will contain the logic for [Custom User Validation](https://docs.catalyst.zoho.com/en/cloud-scale/help/authentication/whitelisting/custom-user-validation/introduction/) and a [React web app](https://docs.catalyst.zoho.com/en/cli/v1/initialize-resources/initialize-client/#react-applications) as the client component. Later, we will also initialize an [Advanced I/O function](https://docs.catalyst.zoho.com/en/serverless/help/functions/advanced-io/) and a [Job Function](https://docs.catalyst.zoho.com/en/serverless/help/functions/job-functions/). > **Note:** Ensure that you enter the function's package name or class name exactly as instructed because the application's code contains the same name. 1. Create a folder for the project on your local machine and navigate to it from the terminal. 2. Initialize a project by executing the following command from that directory: ```sh catalyst init ``` 3. Navigate using the **arrow keys**, select your preferred portal, and press the **Enter** key. If you have no other organizations associated with the account, then the default one will be selected automatically. ![catalyst_tutorials_jobscheduling_cli_portl_choice](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_portl_choice.webp) > **Info:** You can find out more about Catalyst’s multi-org portal feature in this [help document](https://docs.catalyst.zoho.com/en/getting-started/catalyst-projects/#access-the-multi-org-portal). 4. The CLI will now ask you to associate a Catalyst project with the directory. Associate it with the project that we created earlier from the console. Select **BirthdayGreetings** from the list and click **Enter**. ![catalyst_tutorials_jobscheduling_cli_project_choice](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_project_choice.webp) 5. Select **Functions** and **Client** using the **space bar**, then click **Enter** to initialize. ![catalyst_tutorials_jobscheduling_cli_func_client_sel](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_func_client_sel.webp) 6. The CLI will initiate the function setup. Select **Basic IO** as the function type to code your *Custom User Validation* function. ![catalyst_tutorials_jobscheduling_cli_basicio_sel](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_basicio_sel.webp) 7. Select the latest runtime of **Node.js** as the function stack. ![catalyst_tutorials_jobscheduling_cli_basicio_node_sel](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_basicio_node_sel.webp) 8. Enter "`basic_function`" as the package name, "`index.js`" as the entry point, and your email address as the author, then press **Enter**. Alternatively, you can press **Enter** without entering inputs to fill in the default values. The CLI will prompt the initialization of the Node dependencies. Press **Y** to confirm the installation, and press **Enter** to confirm your choice. The Node modules will be installed. ![catalyst_tutorials_jobscheduling_cli_basicio_cmpltd](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_basicio_cmpltd.webp) The CLI will now initiate the client setup. 9. Select **React web app** and press **Enter** to initialize your client as a [React web app](https://docs.catalyst.zoho.com/en/cli/v1/initialize-resources/initialize-client/#react-applications). ![catalyst_tutorials_jobscheduling_cli_react_client_sel](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_react_client_sel.webp) 10. Select **JavaScript** as the React app type and press **Enter**. ![catalyst_tutorials_jobscheduling_cli_react_client_js_choice](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_react_client_js_choice.webp) 11. Enter "`birthdaygreetings`" as the name of your client package and click **Enter**. You can also provide any name of your choice. Enter "**y**" at the prompt to install the required React packages, such as "`react`", "`react-dom`," and "`react-scripts`." These packages will be installed through the Catalyst React plugin ([`zcatalyst-cli-plugin-react`](https://www.npmjs.com/package/zcatalyst-cli-plugin-react)). ![catalyst_tutorials_jobscheduling_cli_react_client_name_dep_enter](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_react_client_name_dep_enter.webp) The client is now successfully initialized as a React web application. ![catalyst_tutorials_jobscheduling_cli_react_client_cmpltd](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_react_client_cmpltd.webp) The [client directory](https://docs.catalyst.zoho.com/en/cli/v1/project-directory-structure/client-directory) will be created in the standard structure in the project directory. This is the current structure of the *Birthday Greetings* project’s directory. ![catalyst_tutorials_jobscheduling_dir_cur](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_dir_cur.webp) Now, we will begin initializing the Advanced I/O Function and Job Function using the following CLI command in the `BirthdayGreetings/functions/` directory: ```sh catalyst functions:add ``` This [CLI command](https://docs.catalyst.zoho.com/en/cli/v1/working-with-functions/add-functions/) will trigger the function set up and allow you to add the required functions to your project directory. 1. Select the **Advanced IO** function once the function setup starts. ![catalyst_tutorials_jobscheduling_cli_func_add_advaced](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_func_add_advaced.webp) 2. Select the latest runtime of **Node.js** as the function stack. ![catalyst_tutorials_jobscheduling_cli_func_add_advaced_node_sel](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_func_add_advaced_node_sel.webp) 3. Enter "`advance_function`" as the package name, "`index.js`" as the entry point, and your email address as the author, then press **Enter**. Alternatively, you can press **Enter** without entering inputs to fill in the default values. The CLI will prompt the initialization of the Node dependencies. Press **Y** to confirm the installation, and press **Enter** to confirm your choice. The Node modules will be installed. ![catalyst_tutorials_jobscheduling_cli_func_add_advaced_node_done](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_func_add_advaced_node_done.webp) The Advanced I/O function has been initialized. Let's initialize the Job Function using the same CLI command. ```sh catalyst functions:add ``` 1. Select **Job** as the function type once the function setup starts. ![catalyst_tutorials_jobscheduling_cli_func_add_job_start](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_func_add_job_start.webp) 2. Select the latest runtime of **Node.js** as the function stack. ![catalyst_tutorials_jobscheduling_cli_func_add_job_node_sel](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_func_add_job_node_sel.webp) 3. Enter "`dynamic_cron`" as the package name, "`index.js`" as the entry point, and your email address as the author, then press **Enter**. Alternatively, you can press **Enter** without entering inputs to fill in the default values. The CLI will prompt the initialization of the Node dependencies. Press **Y** to confirm the installation, and press **Enter** to confirm your choice. The Node modules will be installed. ![catalyst_tutorials_jobscheduling_cli_func_add_job_node_cmpltd](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_cli_func_add_job_node_cmpltd.webp) All of the required client and function components have been initialized for your application. This is the current structure of the project directory: ![catalyst_tutorials_jobscheduling_dir_2](https://catalyst-docs-development.zohostratus.in/images/tutorials/birthday-greetings/catalyst_tutorials_jobscheduling_dir_2.webp)