##############
Project Layout
##############

Summary
=======

In this section, we will discuss the layout and directory structure of the Basic Application tutorial.

Concepts
========

* Introduction to JS Development Environment
* Required libraries

------------------------------------

As mentioned in the previous section, |HCNOW| ships with a Node.js server, which will serve up the samples included in the package.

.. note::
	
	The |HCNOW| package was designed to be compatible with modern web development tools. All JavaScript provided is written to the ES6 standard with TypeScript Declaration Files included. This allows the |HCNOW| package to be compatible with modern libraries and frameworks (such as Angular and React) with optional TypeScript support.


Sample code
===========

In your installation directory for |HCNOW|, we have provided a library of sample code that corresponds to tutorials in this documentation. There is a directory named *basic_app* that holds all of the starting files you need to start this tutorial. You will find other directories with names that correspond to the tutorials listed in the sidebar to the left under :doc:`Tutorials </tutorials/basic-app/introduction>`.


.. code-block:: html

	<HC_INSTALL_DIR>
	├── tutorials
	│   ├── basic_app
	│   │   ├── index.html
	│   │   ├── start_server.[bat|sh]
	│   │   ├── server_config.js
	│   │   ├── js
	│   │   │   └── hoops

Let's take a closer look at the contents of the *basic_app* directory.

* *start_server.[bat|sh]* – This script will start the same HOOPS Server used in :doc:`Getting Started </overview/quickstart>`, but slightly modified to serve the files from this project.
* *server_config.js* – This file contains the HOOPS Server configuration.
* *js/* – This directory will contain all of the JavaScript files required for our basic application, including the HOOPS Web Viewer. You will need to copy the necessary files into this dir (see next section).


Copying files
=============

The HOOPS Web Viewer JavaScript library files are located in *HC_INSTALL_DIR/web_viewer*:

.. code-block:: html

	<HC_INSTALL_DIR>
	└── web_viewer
		├── engine.esm.wasm
		└── hoops-web-viewer.mjs
				
The file *hoops_web_viewer.mjs* contains the core functionality of the HOOPS Web Viewer component and has dependencies on *engine-esm.js* and *engine.esm.wasm*. Copy these files into */js/hoops* of your project. To keep things simple, we will not use the :doc:`HOOPS Web Viewer UI </prog_guide/viewing/misc/user-interface>` for this tutorial.
