Voltar aos projetos
Ragboost

Ragboost

Plataforma SaaS Multi-Tenant de Chatbots IA

Função: Full Stack Developer | Founder
Período: Outubro 2024 - Presente
Em Desenvolvimento (85%)
Cliente: Projeto Próprio

Visão Geral

Contexto

O mercado de chatbots IA está em crescimento, mas soluções enterprise são caras para PMEs. Empresas enfrentam custos elevados por mensagem e armazenamento, complexidade técnica para integrar RAG, widgets genéricos que não representam a marca, falta de colaboração em equipe, e dados isolados que não são aproveitados. A oportunidade: criar uma alternativa acessível com recursos avançados para empresas de todos os tamanhos.

Solução

Desenvolvimento de uma plataforma SaaS completa que democratiza o acesso a chatbots IA com preços acessíveis, simplifica a criação de assistentes sem código, escala com arquitetura multi-tenant robusta, e monetiza com planos flexíveis via Stripe. A plataforma permite que empresas criem assistentes virtuais contextualizados com base em seus próprios documentos usando tecnologia RAG (Retrieval-Augmented Generation), com sistema de colaboração em equipe com RBAC completo e suporte a 4 idiomas.

Meu Papel

Como fundador e desenvolvedor full stack, projetei e implementei toda a arquitetura do sistema. No backend, desenvolvi Clean Architecture com Either Monad, Use Case Pattern, e Domain Events. No frontend, implementei TanStack Query com Optimistic Updates, sistema de autenticação cross-subdomain, e roteamento file-based com TanStack Router. Também fiz todo o design UI/UX e as integrações com Stripe, serviço RAG open source, e sistema de emails.

Stack Técnica

Frontend

React
TypeScript
Vite
TanStack Router
TanStack Query
Tailwind CSS
shadcn/ui
Radix UI
React Hook Form
Zod
i18next
Recharts
Axios
Sonner
Lucide React

Backend

Fastify
TypeScript
Prisma
PostgreSQL
JWT
bcryptjs
Stripe
Nodemailer
Swagger
Zod

Projetos

1

Backend API

API REST Multi-Tenant com Clean Architecture

~52.000
Linhas de Código
200+
Arquivos
10
Módulos
17
Entities

API REST robusta com arquitetura limpa, 10 módulos de domínio, sistema de permissões granular (RBAC) com 50+ permissões, integração com Stripe para billing, e Domain Events para comunicação entre módulos.

Features

01
Clean Architecture

Separação em camadas: routes → controllers → use-cases → repositories → entities

02
Either Monad

Tratamento funcional de erros com Either<Error, Success> em todos os use cases

03
Multi-Tenancy

Isolamento total de dados por tenant via subdomain com middleware de contexto

04
RBAC Granular

50+ permissões em 4 níveis de roles (owner, admin, curator, user)

05
Domain Events

Comunicação assíncrona entre módulos para desacoplamento

06
Webhook Service

Handlers para eventos Stripe (checkout, subscription, invoice) com verificação de assinatura

07
Factory Pattern

Injeção de dependências manual sem container, fácil de testar e debugar

08
Zod + OpenAPI

Validação de schemas com geração automática de documentação Swagger

09
JWT Duplo

Access token (15min) + refresh token (7d) em cookie httpOnly

10
Rate Limiting

Proteção de endpoints com limites por IP e usuário

11
Integração RAG

Conexão com serviço open source para processamento de documentos e busca semântica

12
Sistema de Convites

Envio de convites por email com tracking, expiração e roles atribuíveis

13
Subscription com Addons

Sistema flexível de planos Stripe com addons modulares (extra seats, storage, API calls)

14
Billing Completo

Checkout sessions, customer portal, invoices, proration, trial periods, cancellation

Design Patterns

Either Monad Pattern
Use Case Pattern
Factory Pattern
Controller Pattern
Repository Pattern
Provider Pattern

Estratégia de Testes

Unit Tests
Use cases completos

60+ arquivos testando use cases e domain logic com 18+ In-Memory Repositories e 7 In-Memory Providers (hash, token, email, ragflow, stripe, etc.)

Ferramentas: Node.js Test Runner, In-Memory Repositories/Providers

E2E Tests
Todas as rotas

40+ arquivos testando controllers com Prisma Test Environment (banco isolado), seed automático de planos, helpers para dados únicos (generateUniqueEmail, generateUniqueSlug)

Ferramentas: Node.js Test Runner, Prisma Test Environment, Supertest

Decisões Técnicas

Fastify vs Express vs NestJS

2x mais rápido que Express, schema validation nativo, plugin system modular

Either Monad vs throw/catch

Erros type-safe, fluxo explícito, controller sabe exatamente que erros esperar

Factory Pattern vs DI Container

Zero magic, tree-shakeable, TypeScript puro sem decorators, fácil de testar

PostgreSQL + Prisma vs MongoDB

ACID compliance, relações complexas, type-safety, migrations, RLS nativo

Desafios & Soluções

Isolamento Multi-Tenant

Middleware injeta contexto do tenant em todas as queries via header X-Tenant-Subdomain

50+ Permissões Granulares

Matriz de roles → permissions, CheckPermissionUseCase reutilizado em todos os use cases

Webhook Stripe com Raw Body

Middleware customizado para preservar raw body antes do bodyParser do Fastify

Testes E2E Isolados

Prisma test environment com banco isolado, helpers para gerar dados únicos

2

Frontend Dashboard

SPA React 19 com Multi-Tenant via Subdomain

~19.500
Linhas de Código
206
Arquivos
88
Componentes
7+
Hooks
15+
Páginas

Dashboard administrativo SPA com React 19 e TanStack Router. Sistema de autenticação cross-subdomain via cookies, cache sofisticado com TanStack Query, internacionalização em 4 idiomas, e 31 componentes shadcn/ui.

Features

01
Multi-Tenant via Subdomain

Detecção automática de tenant via hostname (tenant1.ragboost.app)

02
Auth Cross-Subdomain

Cookies compartilhados entre subdomains via Domain=.ragboost.app

03
TanStack Query Cache

staleTime, gcTime, refetchOnMount/WindowFocus configurados por query

04
Optimistic Updates

onMutate → snapshot → rollback com feedback instantâneo

05
File-Based Routing

TanStack Router com type-safety completo e beforeLoad para guards

06
Axios Interceptors

Refresh token automático, retry com exponential backoff, error handling i18n

07
RBAC no Frontend

useCurrentUserRole() com canManageTeam, canEditChatbots, etc.

08
Formulários Validados

React Hook Form + Zod com schemas compartilhados frontend/backend

09
Design System

31 componentes shadcn/ui + Radix UI com Tailwind CSS 4

10
i18n Completo

4 idiomas (PT, EN, FR, ES) com namespaces lazy-loaded

11
Dashboard Analytics

Gráficos com Recharts para métricas de uso

12
Team Management

Convites, roles, remoção de membros com optimistic updates

13
Subscription Management

Visualização de plano atual, addons, usage, upgrade/downgrade com Stripe Customer Portal

14
Addon Selector

Interface para adicionar/remover addons (seats, storage, API calls) com preview de preço

Design Patterns

Custom Hooks Pattern
Optimistic Updates Pattern
Provider Pattern
API Queries Layer
Subdomain Detection
Interceptor Pattern

Decisões Técnicas

React 19 SPA vs Next.js

Dashboard não precisa de SSR, Vite HMR instantâneo, builds 10x mais rápidos

TanStack Query vs Redux

Cache automático, mutations com optimistic updates, menos boilerplate

TanStack Router vs React Router

Type-safety completo, file-based routing, beforeLoad para guards

Cookie Auth vs localStorage

Compartilhamento cross-subdomain impossível com localStorage

Desafios & Soluções

Auth Cross-Subdomain

Cookie com Domain=.localhost (dev) / .ragboost.app (prod) compartilhado entre tenants

Refresh Token Transparente

Interceptor detecta 401, chama /refresh-token, retenta request original

State Management Complexo

TanStack Query para server state, useCurrentTenant() para contexto, zero Redux

Subdomain Detection Multi-Ambiente

Suporte a lvh.me (dev), localhost, e multisaas.app (prod) com mesma lógica

Galeria

1
Image 1
2
Image 2
3
Image 3
4
Image 4
5
Image 5
6
Image 6
Gregory Praxedes | Full Stack Developer & UI/UX Specialist