O que é o PocketBase e como usá-lo?

O que é o PocketBase e como usá-lo?

O PocketBase é um back-end de código aberto que consiste em um banco de dados SQLite incorporado com validação de dados, assinaturas em tempo real e uma API REST fácil de usar. Ele também oferece autenticação e armazenamento de arquivos para arquivos de mídia.

O PocketBase é perfeito para projetos para os quais você prefere não criar um back-end devido a restrições de tempo ou conveniência, pois é totalmente portátil e requer configuração mínima. Ele também se integra a tecnologias populares como Vue, Svelte, React, Angular e Flutter.

Serviços prestados pela PocketBase

O PocketBase fornece a maioria dos serviços oferecidos por outros provedores de back-end, como o SupaBase.

  • Banco de dados SQLite : PocketBase inclui um banco de dados SQLite incorporado. Isso difere de outros provedores de back-end que usam bancos de dados maiores, como PostgreSQL ou MySQL. O uso do SQLite torna o PocketBase mais leve. Você também pode se inscrever em eventos de banco de dados em tempo real por meio de uma API.
  • Autenticação : PocketBase suporta autenticação de e-mail/senha e autenticação OAuth2 via Facebook, Google, GitLab e GitHub.
  • Armazenamento de arquivos : você pode carregar fotos, arquivos de áudio e vídeo para armazenamento local ou um balde S3 usando o PocketBase.
  • Painel do administrador : o painel do administrador permite criar e gerenciar coleções no banco de dados. Você também pode fazer upload de arquivos, visualizar arquivos de log e definir a configuração para enviar e-mails,

De acordo com os documentos, o PocketBase pode atender facilmente mais de 10.000 conexões simultâneas e persistentes em tempo real em 6 servidores privados virtuais, tornando-o uma opção de back-end acessível para aplicativos de pequeno a médio porte.

Observe que o PocketBase escala apenas verticalmente. Isso significa que você precisa adicionar mais CPU e RAM para aumentar o poder de processamento. Se você tiver um aplicativo grande, considere um provedor de back-end como o Firebase, que permite escalabilidade horizontal.

Introdução ao PocketBase

Atualmente, o PocketBase fornece dois SDKs:

  • Um SDK JavaScript que você pode usar com estruturas JavaScript como Svelte, React, Vue e Angular.
  • Um Dart SDK para aplicativos Flutter.

A maneira mais fácil de começar é baixar o PocketBase . Existem vários links, portanto, certifique-se de baixar aquele compatível com seu ambiente.

Depois de baixá-lo, extraia e navegue até a pasta pocketbase. Em seguida, execute este comando em um terminal:

./pocketbase serve

Este comando deve iniciar um servidor web nessas rotas.

  • Servidor: http://127.0.0.1:8090/
  • API REST: http://127.0.0.1:8090/api/
  • IU do administrador: http://127.0.0.1:8090/_/

Navegue até o URL http://127.0.0.1:8090/_/ para criar sua primeira coleção usando o painel de administração.

Criando uma coleção no PocketBase

Na primeira vez que você abrir a interface do usuário do administrador, ela solicitará um endereço de e-mail e uma senha para criar uma conta de administrador.

Aqui está a aparência da interface do usuário do administrador:

IU de administração do Pocketbase

Clicar no botão Nova coleção na interface do usuário do administrador abrirá um painel de coleção que você pode preencher com detalhes para criar uma nova coleção.

Veja como você criaria uma coleção chamada todos consistindo em um título e campos preenchidos:

Coleção de bolso todo

Uma coleção pode ser uma coleção base ou de autenticação. Uma coleção base é o tipo de coleção padrão e você pode usá-la para qualquer tipo de dados. Uma coleção de autenticação contém campos extras para gerenciar usuários, como nome de usuário, e-mail e verificado.

Você não precisa usar a interface do usuário do administrador para criar uma coleção; você pode criar um usando a API da Web. Os documentos do PocketBase fornecem exemplos específicos do SDK de como criar e gerenciar coleções por meio da API. Você pode criar, visualizar, atualizar, excluir ou importar coleções.

Usando o PocketBase em um aplicativo React

O JavaScript SDK permite que você interaja com o PocketBase a partir de um projeto React.

Para acompanhar, comece criando um projeto React.

Em seguida, instale o PocketBase JavaScript SDK em seu projeto React via npm:

npm install pocketbase --save

Em seguida, em app.js, importe PocketBase e inicialize-o.

import PocketBase from 'pocketbase';
const pb = new PocketBase('http://127.0.0.1:8090');

Para ilustrar como o PocketBase integra o React, você criará as funções auxiliares para um aplicativo de tarefas pendentes. Essas funções criarão, atualizarão, recuperarão e excluirão itens.

Criar um item de tarefa

Em app.js, crie uma função chamada addTodo.

const addTodo = async (todo) => {
try {
   const record = await await pb.collection("todos").create(todo);
   return record;
 } catch (error) {
   return { error: error.message };
 }
};

Esta função adiciona um novo registro na coleção todos.

Atualizar um item de tarefa

Para atualizar um registro na coleção de tarefas, crie uma função chamada updateTodo e use o método update.

const updateTodo = async (record_id, todo) => {
try {
   const record = await pb.collection("todos").update(record_id, todo);
   return record;
 } catch (error) {
   return { error: error.message };
 }
};

A função updateTodo localiza o item pendente com base no ID do registro e o atualiza com os novos dados.

Excluir um item de tarefa

Em app.js, crie uma função chamada deleteTodo que exclui um registro na coleção de tarefas.

const deleteTodo = async (record_id) => {
try {
   await pb.collection("todos").delete(record_id);
 } catch (error) {
   return { error: error.message };
 }
};

Recuperar um item de tarefa

Você pode recuperar um único item de tarefa ou todos os itens da coleção.

Esta função recupera um único item de tarefa por id:

const getTodo = async (record_id) => {
try {
   const record = await pb.collection("todos").getOne(record_id, {
     expand: "relField1,relField2.subRelField",
   });
   return record
 } catch (error) {
   return { error: error.message };
 }
};

Enquanto a função abaixo irá recuperar todos os registros da coleção de tarefas:

const getTodos = async (record_id) => {
  try {
    const records = await pb
      .collection("todos")
      .getFullList(200 /* batch size */, {
        sort: "-created",
      });
    return records;
  } catch (error) {
    return { error: error.message };
  }
}

Você pode usar essas funções para criar e atualizar a interface do usuário do aplicativo.

Para obter exemplos mais detalhados, consulte a documentação da API de registros do PocketBase ou a documentação da API gerada em “Admin UI > Collections > API Preview”. Você deve ser capaz de acessar a lista, visualizar, criar, atualizar, excluir e a documentação em tempo real de sua coleção.

documentos API gerados

Por que você deve usar o PocketBase

PocketBase é o melhor back-end para projetos de pequeno a médio porte. Requer configuração mínima e é fácil de usar. Ele oferece dois SDKs de cliente — um SDK para JavaScript e um SDK para Dart — e você pode usá-lo em aplicativos da Web e móveis.

O PocketBase também é auto-hospedável e você pode hospedá-lo em um servidor local ou em um VPS. Embora não ofereça suporte a funções de nuvem, você pode usá-lo como uma estrutura Go e criar seu próprio aplicativo com lógica de negócios personalizada.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *