# Set-up Node+Express back-end\*

## 1. Git Repository

* Creați un **repository public nou** în GitHub ( !bifați optiunea **Add a README file** și selectați **Add .gitignore template - Node** )
* Copiați link-ul de clonare al repository-ului și rulați din terminal (eu folosesc git bash - vine la pachet cand instalati git) comanda **git clone** într-un folder local cu respectivul link

![](/files/E2aTkX6OomSTg53FI256)

![](/files/L4mEgC0J2xfAVeSBZqie)

## 2. Inițializarea Back-end

* Deschideți proiectul nou creat în editor
* În terminal, în directorul specific proiectului, rulați **npm init,** enter pentru toate opțiunile default. La final va fi creat fișierul package.json care stochează meta-date despre aplicație, informații despre dependințele proiectului etc
* Primul pachet pe care îl vom instala pentru a porni un server rudimentar este **Express**. Așadar, rulați **npm install express**.
* Pentru a oferi acces si altor servere către API-ul nostru, folosim pachetul CORS. Așadar, **npm install cors (**&#x6E;ota &#x31;**).**
* Pentru a opri și reporni serverul după fiecare modificare a codului, instalați și **Nodemon.** Așadar, rulați **npm install** **-g nodemon.**&#x20;
* By default, fișierul de pornire al aplicației este index.js . Creați fișierul **index.js** și inserați codul de mai jos

```
//index.js
const express = require('express')
const cors = require('cors')
const app = express();
app.use(cors())

const port = process.env.PORT || 8080;

app.get('/', (req, res) => {
  res.send('Hello World!')
});

app.listen(port, () => {
  console.log(`Example app listening on port ${port}!`)
});
```

* Pentru a porni serverul, rulați **node index.js** .&#x20;
* Pentru a porni serverul utilizând nodemon, rulați **nodemon index.js .** În cazul în care apare eroarea "...\nodemon.ps1 cannot be loaded because running scripts is disabled on this system.", rulați în terminal "Set-ExecutionPolicy RemoteSigned -Scope CurrentUser" și mai încercați odată.

În terminalul în care ați solicitat pornirea serverului ar trebui să primiți urmatorul mesaj "*Example app listening on port 8080*!". Pentru a închide procesul, CTRL-C.

* Pentru a trimite codul în repository-ul remote, rulați **git add .** , **git commit -m "Initial setup"** , **git push origin \[numele branch-ului]** . Pentru mai multe detalii despre Git - <https://education.github.com/git-cheat-sheet-education.pdf>

{% hint style="info" %}
Nota 1.: CORS - Cross Origin Resource Sharing este un este un mecanism pentru browsere care permite unui site care rulează la originea A să solicite resurse de la originea B. (explicație mai detaliată [aici](https://ro.ilusionity.com/732-the-access-control-allow-origin-header-explained-with-a-cors-example) și [aici](https://www.section.io/engineering-education/how-to-use-cors-in-nodejs-with-express/#:~:text=CORS%20stands%20for%20Cross%2DOrigin,origins%20can%20access%20the%20API.)). Practic, prin setarea unei politici CORS, putem preciza către ce origini ne dorim să trimitem date, iar celelalte vor fi restricționate.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gurita-alexandru.gitbook.io/cloud-computing-2023-simpre/cloudcomputing2022/set-up-node+express-back-end.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
