Este aplicativo de referência usa a biblioteca de pesquisa Algolia de baixo nível. Se você estiver criando um aplicativo semelhante, use a biblioteca oficial Angular InstaSearch.
Para baixar (clonar) este projeto em sua máquina, você precisa ter git
instalado. Leia mais sobre como instalar o Git em seu sistema.
Uma vez instalado, abra um terminal e clone este repositório usando o seguinte comando:
> git clone https://github.com/manekinekko/angular-search-experience.git
Você precisará npm install
para instalar as dependências deste projeto. A seguir, usando seu terminal, você precisará mudar o diretório para a pasta onde clonou este projeto anteriormente; por padrão (se você copiou a linha de comando acima), seria angular-search-experience
:
> cd angular-search-experience
> npm install
Decidimos proteger a Cloud Function (esta é uma boa prática). Portanto, para solicitar a API search
, você terá que anexar um cabeçalho Authorization
às suas solicitações. Aqui está a Authorization: SearchToken this-is-a-fake-token
. Veja um exemplo de comando cURL abaixo.
Antes de iniciar o servidor, você precisará adicionar algumas variáveis de ambiente dentro de um arquivo .env, na pasta /functions
. Você pode usar este arquivo de modelo env como exemplo (renomeá-lo para .env, que é gitignored) e definir:
YOUR_ALGOLIA_APPLICATION_ID
YOUR_ALGOLIA_API_KEY
Você pode encontrar o ID do seu aplicativo e sua chave de API em https://www.algolia.com/apps na seção Chaves de API. Você precisa criar uma conta para obter sua chave de API.
Para testar o servidor em sua máquina local, execute o seguinte comando: npm run start:backend
Esta opção requer que você esteja logado em sua conta do Firebase e tenha acesso a este projeto (no Firebase). Somente os zeladores têm acesso ao projeto firebase!
Outra versão do back-end conta com uma arquitetura Serverless implementada usando Cloud Functions para Firebase.
Este projeto vem com firebase-tools
como dependência local. Esta ferramenta é um conjunto de ferramentas Firebase Command Line Interface (CLI) que pode gerar, executar e implantar um projeto Firebase. Observe que essa dependência geralmente é instalada globalmente.
Além disso, o tempo de execução do Firebase usa uma versão mais antiga do Node.js: v6.11.5
. Incluímos uma pasta .nvmrc
em /functions
. Este arquivo especial é um arquivo de configuração usado pelo NVM
para alternar facilmente para uma versão necessária do Node.js dentro de uma pasta específica. Se você ainda não possui NVM
instalado, leia o guia de instalação.
Use NVM
para instalar a versão necessária do Node.js e depois use-a (somente dentro da pasta /functions
):
> nvm install 6.11.5
> nvm use
Agora que está usando o Node.js v6.11.5
, você está pronto para executar (ou seja, emular) a função search
do Cloud localmente. Para isso, execute npm run start:backend:firebase
. Este comando fará duas coisas:
/functions
(encontrada na raiz do projeto). Esta pasta contém todo o código de back-end.search
do Cloud localmente em http://localhost:5000/angular-search-experience/us-central1/search
Importante: observe que a função
search
implementa apenas os métodos HTTPPOST
eDELETE
, permitindo adicionar e excluir uma entidade, portanto você precisará de um cliente HTTP, comocURL
ouPostman
, para poder solicitar a Cloud Function.
Na raiz do projeto, execute npm start
para iniciar o servidor de desenvolvimento front-end. Navegue para http://localhost:4200/
. O aplicativo será recarregado automaticamente se você alterar algum dos arquivos de origem.
A aplicação front-end foi gerada com Angular CLI versão 6.1.2.
Execute npm run build
para compilar o projeto. Os artefatos de construção serão armazenados no diretório dist/angular-search-experience/
. Use o script npm run build:prod
para uma compilação de produção.
Usamos hospedagem Firebase para publicar o aplicativo front-end. Antes de implantar uma nova versão, precisamos construir um pacote de produção usando o seguinte comando:
> npm run build
Então, podemos implantar a nova compilação no Firebase:
> npm run deploy
IMPORTANTE: a implantação no Firebase requer privilégio de acesso (ao projeto Firebase).
Os endpoints de produção (função de nuvem) estão disponíveis em:
Para solicitar a Cloud Function de produção, você pode usar estes comandos cURL:
> curl -H "Authorization: SearchToken this-is-a-fake-token" -H "Content-Type: application/json" -X POST -d '{}' https://example.com/api/1/apps
{"createdAt":"2018-04-19T13:17:10.343Z","taskID":29343382,"objectID":"10788302"}
NOTA: não validamos o objeto
application
propositalmente.
> curl -H "Authorization: SearchToken this-is-a-fake-token" -X DELETE https://example.com/api/1/apps/10788302
{"deletedAt":"2018-04-19T13:30:42.190Z","taskID":29353102,"objectID":"10788302"}
<app-search></app-search>
<app-search-input></app-search-input>
<app-category></app-category>
<app-search-result></app-search-result>
<mat-nav-list></mat-nav-list>
[appRating]
freePriceLabel
Leia mais sobre a documentação da API aqui: https://manekinekko.github.io/angular-search- Experience/index.html
Incluímos um chatbot neste aplicativo. Pode ajudá-lo a pesquisar aplicativos usando sua voz. Basta pedir para ajudá-lo a procurar um aplicativo de previsão do tempo ou encontrar um jogo .
Para ativar o bot, você precisará ligar o microfone e os alto-falantes. Aí, basta clicar 6 vezes no logotipo do aplicativo (o cabeçalho).
NOTA: A implementação deste bot é experimental (e divertida!) e não foi treinada contra um grande conjunto de declarações de usuários!
yarn install v1.5.1
[1/4] ? Resolving packages...
[2/4] ? Fetching packages...
error [email protected]: The engine "node" is incompatible with this module. Expected version "~8.0".
error An unexpected error occurred: "Found incompatible module".
info If you think this is a bug, please open a bug report with the information provided in "/Users/vvo/Dev/Algolia/angular-search-experience/functions/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Solução alternativa:
nvm use 8.0
dentro da pasta /functions
.npm install
.cd ..
então npm run start:backend
.