# Padronização de entrega de aplicações
O objetivo deste documento é definir padrões e boas práticas para a entrega de código fonte de aplicações Web, Mobile e Desktop feitas por desenvolvedores terceirizados ou pela equipe interna de software da Inova.
## Justificativa
As aplicações de software integram-se com os equipamentos eletrônicos fabricados pela Inova e tem um alto grau de personalização, por este motivo o código fonte das aplicações é mantido pela Inova para uso em futuras atualizações no software. Para que seja feita a portabilidade do desenvolvimento para novos desenvolvedores é necessário que a tecnologia e os algoritmos utilizados na construção do software sejam documentados e estejam sob o domínio da Inova.
## Definições
### Aplicação Web
Uma aplicação web é uma aplicação distribuída executada em um navegador web sem que o usuário necessite instalar o software em sua maquina, este tipo de aplicação possui duas partes principais denominadas Front-End e Back-End
* **Front-End**
Constitui a parte da aplicação cuja o código é executado no navegador web - Ex: Google Chrome
* **Back-End**
Parte da aplicação que interage com outros serviços e APIs cuja o código é executado em um servidor remoto
---
### Aplicação Mobile
Uma aplicação mobile é um software que é executado em um dispositivo móvel (celulares/tablets) através da plataforma Android ou IOS
#### Software Mobile Hibrido
Software cuja o código fonte é compartilhado entre as plataformas Android e IOS
---
### Aplicação Desktop
Uma aplicação desktop é executada em um computador de mesa (desktop/notebook) através da plataforma Microsoft Windows, Linux ou MacOS
#### Software Desktop Hibrido
Software cuja o código fonte é compartilhado em mais de uma plataforma Ex: MacOS/Windows
---
### API
Uma API é um conjunto de serviços e funcionalidades que atendem a um determinado requisito da aplicação
#### API Remota
A API remota é executada em um abiente diferente do ambiente da aplicação, normalmente hospedada em um domínio
#### API Local
Uma API local define um conjunto de classes e métodos utilizados por módulos da aplicação que rodam em contextos separados Ex: [NodeJS API](https://nodejs.org/docs/latest/api/)