> For the complete documentation index, see [llms.txt](https://medellin-js.gitbook.io/workshop-fullstack-js-developer/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://medellin-js.gitbook.io/workshop-fullstack-js-developer/backend/introduccion.md).

# Introducción

### Conceptos Basicos <a href="#conceptos-basicos" id="conceptos-basicos"></a>

**Node.JS**, es un entorno en tiempo de ejecución multiplataforma, de código abierto, para la capa del servidor basado en el lenguaje de programación ECMAScript, asíncrono, con I/O de datos en una arquitectura orientada a eventos y basado en el motor V8 de Google.

**API REST**, es cualquier interfaz entre sistemas que use HTTP para obtener datos o generar operaciones sobre esos datos en todos los formatos posibles, como XML y JSON. Las operaciones más importantes relacionadas con los datos en cualquier sistema REST y la especificación HTTP son cuatro: POST (crear), GET (leer y consultar), PUT (editar) y DELETE (eliminar).

**JWT**, JSON Web Token (abreviado JWT) es un estándar abierto basado en JSON propuesto por IETF (RFC 7519) para la creación de tokens de acceso que permiten la propagación de identidad y privilegios.&#x20;

**Express.JS**, Es un framework para Node.js que sirve para ayudarnos a crear aplicaciones web en menos tiempo ya que nos proporciona funcionalidades como el enrutamiento, opciones para gestionar sesiones y cookies, entre otras cosas.

**Mongodb,** es un sistema de base de datos NoSQL orientado a documentos de código abierto.\
En lugar de guardar los datos en tablas, tal y como se hace en las bases de datos relacionales, MongoDB guarda estructuras de datos BSON (una especificación similar a JSON) con un esquema dinámico, haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida.

### Crea tu directorio de proyecto

Vamos a crear e inicializar el directorio para la aplicación. Para ello vamos a nuestra terminal y ejecutamos los siguientes comandos.

{% code title="Init project" %}

```bash
# Crear carpeta y moverme a ella
mkdir backend-js-shopping && cd backend-js-shopping

# Agregar git a nuestro proyecto
git init
```

{% endcode %}

### Package.json

Luego de eso vamos a crear el archivo **package.json,** el ❤️ de nuestro proyecto.

```bash
# Crea la base ❤️ de nuestro proyecto package.json
npm init
```

Cuando ejecutas npm init deberas responder algunas preguntas simples, acá te dejo un ejemplo de como se ve el resultado.

![npm init](/files/-Lgz9W0d8B9fp_LZr9EN)

### Gitignore

Vamos a crear un archivo bastante util para git el cual va a indicarle a nuestro control de versiones que no tenga en cuenta algunos archivos y/o carpetas para que sean agregados-rastreados. Este archivo es **.gitignore**&#x20;

{% code title=".gitignore" %}

```
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Dependency directory
# Commenting this out is preferred by some people, see
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-
node_modules

# Users Environment Variables
.env.development
.env.production

lib/
data/

# IDES
.idea
.vscode

```

{% endcode %}

### Primer Commit

Hasta ahora solo hemos creado un directorio llamado **backend-js-shopping** el cual contiene un archivo **package.json** y un archivo oculto llamado **.gitignore.** Ahora es el momento de hacer nuestro primer commit, para ello ejecutamos los siguientes comandos:

```bash
# Agregar todos los archivos al commit
git add .

# Realizar el commit con un mensaje
git commit -am "Initial commit"
```

### Repositorio: [Initial commit](https://github.com/colombia-dev/medjs-workshop-fullstack-js-backend/commit/3e1e37f84dd0c57226c4ed7470ce5703ae22cc76)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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://medellin-js.gitbook.io/workshop-fullstack-js-developer/backend/introduccion.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.
