🚀 Oferta especial: 60% OFF no CrazyStack - Últimas vagas!Garantir vaga →
Backend

API REST com Bun, Elysia, Postgres e Prisma: Guia Moderno e Prático

Aprenda como criar uma API realmente escalável, com validação, rotas limpas e banco de dados real utilizando Bun, Elysia, Prisma e Postgres — do setup ao CRUD profissional, passo a passo.

CrazyStack
15 min de leitura
API com BunElysiaPrismaPostgresTutorialCRUDDocker

Por que isso é importante

APIs rápidas e seguras deixam de ser opção: são pré-requisito para qualquer app moderno. Dominar o stack Bun + Elysia + Prisma + Postgres é desbloquear velocidade rara de entrega, dev-ex e escalabilidade — fugindo de armadilhas comuns, como endpoints sem validação, código repetitivo e setups que travam o projeto lá na frente.

Bun puro: rápido, mas insuficiente

Começar uma API com Bun puro é tentador pela performance e simplicidade. Só que, logo nos primeiros endpoints CRUD para um blog, surgem problemas: dependência apenas do Bun, ausência de banco de dados, rotas pesadas e sem validação. Parece profissional, mas não passa de MVP frágil.

⚠️Atenção

Sem banco de dados real, os dados vão desaparecer sempre que reiniciar o server — impossível escalar ou testar de verdade.

O salto de maturidade: Elysia, Postgres e Prisma

Adicionar Elysia para orquestrar as rotas, Postgres como banco principal e Prisma como ORM transforma a API. O código fica limpo, validado, rápido e pronto para crescer conforme a demanda. Nada de reinventar a roda: aqui você resolve problemas de verdade.

Por que Elysia e não outra?

Elysia explodiu em adoção porque une produtividade extrema e performance com Bun. Você poderia optar por Hono ou Fastify ou até Express, mas para Bun, Elysia é o ponto de partida favorito da comunidade.

ℹ️Escolha consciente

Prefira adotar Elysia se busca suporte ativo, exemplos e pouca fricção na integração com Bun.

Por que Prisma no Bun?

Prisma elimina o pesadelo de query manual e mapeamento de tipos. Ele está amadurecendo no Bun, entrega velocidade, DX e adoção transversal entre times Node/JS, além de trazer Vue de validação, migrations e scripts automáticos — tudo configurável, sem fricção.

Setup: criando o projeto com Bun Create

O ponto de partida: bun create elysia bun-elysia-prisma. Simples, coerente — você já começa com servidor pronto, dependências e scripts de dev out of the box. O comando instala o Elysia, prepara scripts e expõe o server rodando em localhost:3000 em segundos.

ℹ️Atenção

Entrou no projeto novo e não viu scripts dev e start? Ajuste seu package.json — eles poupam seu tempo para cada mudança small do código.

Prisma: inicializando e configurando o ORM

Instale o Prisma: bun add prisma. Em seguida, rode bunx prisma init: gera o diretório prisma/ e o arquivo .env, onde mora a config do banco.

Bug recorrente

Ao rodar scripts seed em Bun, um bug pode travar a execução. Execute scripts de seed por Node por enquanto (node scripts/seed.js).

Banco de dados Postgres local — sem complicação

Crie seu banco com Docker: docker run --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=12345678 -d postgres. Basta ajustar usuário, senha e database no .env conforme o container criado.

⚠️Atenção

Jamais salve senhas sensíveis em .env de produção. Prefira secrets seguros e variáveis per ambiente.

Modelando com Prisma: seu esquema e migrations

Desenhe o schema prisma/schema.prisma criando o modelo Post com id, title, content, createdAt e updatedAt. Rode bunx prisma migrate dev --name create-post-model para gerar a primeira migration e criar a tabela real rapidamente.

Populate seu banco: seeds de dados reais

Crie o diretório scripts/ e um seed.js. Use o Prisma Client para popular o banco com posts de teste. Utilize o método upsert, assim você evita duplicatas e garante dados enquanto desenvolve e testa a API.

Truque de dev

Script de seed rápido agiliza testes sem depender de criação manual no banco. Teste sempre antes de abrir endpoints para o frontend.

Testando requests: automatização e produtividade

Em vez de digitar curl a cada chamada, use um arquivo request-tester.http. Centralize suas requisições e repita execuções com um clique — economize tempo e tenha histórico das APIs testadas.

Arquitetura organizada: rotas modulares

Mantenha as rotas agrupadas em routes/posts/index.ts. Importe e prefixe todas com /posts usando Elysia. Traz clareza: cada rota explícita, cada função documentada, cada handler isolado.

Handlers desacoplados: manipulação limpa

Os handlers não tocam o server, só o banco: isolando responsabilidades, facilitando manutenção e reaproveitamento de lógica. Exportando funções como getPosts, getPostById, updatePost, cada uma executa só o necessário — máxima previsibilidade, mínima gambiarra.

⚠️De olho em erros

Cada handler envolve o acesso ao banco em try/catch. Logue erros e retorne respostas claras: evite que falhas silenciosas quebrem o sistema e a análise futura.

Endpoints CRUD completos: GET, POST, PATCH, DELETE

Você prova maturidade do backend quando suas rotas CRUD funcionam de ponta a ponta: GET all, GET by id, POST para criar, PATCH para atualizar, DELETE para remover. E tudo versionado sob /api/posts, já preparado para produção.

Prefixos e versionamento: facilidade desde o começo

Configure o prefix /api no server — e todas as rotas de posts sob /api/posts. Evite conflitos e mantenha a expansão do projeto organizada. Com isso, testes, integrações externas e manutenção futura ficam dezenas de vezes mais simples.

ℹ️Cuide do futuro

Ao usar prefixos e grupos, prepara sua API para crescer sem quebrar código legado ou interfaces do frontend conectadas.

Ganhe ritmo: testando e validando de verdade

Com banco real, seeds, rotas modulares e handlers limpos, seus endpoints podem ser testados com requests automatizados. Cada chamada retorna dados do banco, cada alteração já reflete no banco — sem state falso, sem cenário fake.

Checklist final: entregando qualidade — evite erros clássicos!

A API está pronta para uso e expansão, mas revise: 1) Banco versionado com migrations e scripts de seed; 2) Rotas modularizadas e validadas; 3) Handlers protegidos por capturas de erro; 4) Testes de requests automáticos e documentados; 5) Secrets seguros e variáveis de ambiente separadas.

⚠️Atenção

Nada disso significa zero bugs — só que agora você previne 90% das tragédias que devs inexperientes passam por não seguir fluxo moderno.

Você no comando: apenda e escale com consciência

Criando APIs com Bun, Elysia, Prisma e Postgres, você salta níveis no back-end moderno. Escape do caos do código improvisado. Aprofunde seus testes. Documente cada passo. Siga evoluindo. E volte neste artigo sempre que precisar de clareza.

BÔNUS: Acesse o vídeo completo e vá além

Quer cada passo detalhado com código real e explicações visuais? Assista ao guia em vídeo no canal: Veja no YouTube. Tire dúvidas, deixe comentários, peça temas — a comunidade cresce com sua dúvida e sua experiência.

Domine React e Node com o CrazyStack

Aprenda técnicas avançadas de React com nosso curso completo