# Getting Started

## Installation

1. Install npm package\
   &#x20;`npm install odi --save`<br>
2. Install reflect-metadata \
   &#x20;`npm install reflect-metadata --save`<br>
3. Import reflect-metadata (for example in `index.ts`):\
   &#x20;`import "reflect-metadata";`<br>
4. Enabled the following settings in `tsconfig.json`<br>

   ```javascript
   "emitDecoratorMetadata":  true, 
   "experimentalDecorators":  true
   ```

## Hello World application

First of all, let's create simple controller `hello.controller.ts`

```typescript
import { Controller, IController, Get } from 'odi';

@Controller()
export class HelloController extends IController {

    @Get index() {
        return "Hello world !";
    }

}
```

And our startup file `index.ts`

```typescript
import "reflect-metadata";
import { Core } from "odi";

const port = 8080;
const sources = __dirname;

new Core({ server: { port }, sources }).listen();
```

Build your application and run it `tsc && node index.js` Check it in your browser

<div align="left"><img src="https://3374300881-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOyHUV3Z-FqURpcPf9j%2F-LPLPAyHhHn6I3M75_wh%2F-LPLPBRrHtOg1CwzfO6b%2Fimage.png?generation=1540121742076399&#x26;alt=media" alt=""></div>

It was just a basic example. There are many other interesting things. Check docs for further information.
