Este projeto foi desenvolvido para automatizar o controle de movimentação e localização das obras do acervo do MASP (Museu de Arte de São Paulo Assis Chateaubriand). Tradicionalmente, o museu utilizava registros manuais em papel, o que gerava erros de transcrição e dificuldades de rastreamento. A solução propõe substituir o processo manual por um sistema digital baseado em QR Codes.
- Registrar as movimentações de obras de forma digital e segura.
- Facilitar a consulta de movimentações e gerar históricos de movimentação.
- Gerar e imprimir QR Codes para obras e locais.
- Integrar parcialmente com o banco oficial do MASP (In.Arte), garantindo informações atualizadas de obras.
O sistema é composto por 3 camadas principais:
- Frontend: Aplicação React.js responsiva e intuitiva.
- Backend: API REST em Node.js com Express.js.
- Banco de Dados: PostgreSQL.
Tudo hospedado na nuvem (Render).
Além disso, há integração com a API oficial do MASP (In.Arte) para manter os dados das obras sempre atualizados.
- React.js (Frontend)
- Node.js + Express.js (Backend)
- PostgreSQL (Banco de Dados)
- Axios (requisições HTTP)
- Bcrypt (hash de senhas)
- JWT (autenticação)
- html5-qrcode (leitura de QR Codes via câmera)
- QRCode + JSZip + FileSaver (geração e download de QR Codes)
- Luxon (manipulação de datas com timezone)
- Render (Hospedagem na nuvem)
- Página de Login (
Login.jsx
) faz requisição para/login
na API. - Token JWT recebido é armazenado no
localStorage
. - Middleware
RequireAuth
(emApp.jsx
) protege as rotas autenticadas.
- Movimentacao.jsx: Registro das movimentações com leitura de QR Codes (obras e locais).
- CriarQRCode.jsx: Geração de QR Codes de forma manual ou em lote (texto ou CSV).
- Consulta.jsx: Consulta avançada com múltiplos filtros e exportação CSV das movimentações.
- NavBar.jsx: Navegação pelo sistema.
- LerQR.jsx: Componente de leitura de QR Code via câmera.
- Arquivo
api.js
centraliza as chamadas ao backend e já injeta o token JWT no header.
POST /login
: Autenticação com bcrypt e JWT.GET /obras
: Busca de obras via API pública do MASP (In.Arte).GET /locais
: Consulta dos locais armazenados no banco local.GET /movimentacoes
: Consulta com filtros dinâmicos.POST /movimentacoes
: Registra movimentação de obra, buscando dados em tempo real na API do MASP.GET /usuarios
: Listagem de usuários cadastrados.
- Busca de obras é feita via requisições HTTP usando
axios
. - Sempre que uma obra é lida ou consultada, o sistema consulta a base oficial garantindo dados atualizados.
- As senhas são armazenadas de forma criptografada (bcrypt).
- Todas rotas de movimentação exigem token JWT válido.
usuarios
: dados de autenticação.locais
: locais de armazenamento das obras.movimentacoes
: registros detalhados de cada movimentação.
- obra_tombo
- obra_nome
- local_id
- local_nome
- usuario_id
- usuario_nome
- tipo_movimentacao (Entrada ou Saída)
- data_movimentacao (timestamp)
- notas_adicionais
- Funcionário acessa o sistema e realiza login.
- Escaneia QR Codes das obras e do local de origem/destino.
- Seleciona tipo de movimentação (Entrada ou Saída).
- (Opcional) Insere notas adicionais.
- Registra a movimentação, que fica gravada no banco.
- Pode consultar movimentações passadas com múltiplos filtros.
- Pode exportar consultas em CSV.
- Pode gerar QR Codes individualmente ou em lote.
- Node.js >= 18.x
- PostgreSQL >= 15.x
cd backend-masp
npm install
- Criar arquivo
.env
com as seguintes variáveis:
DB_USER=...
DB_PASSWORD=...
DB_HOST=...
DB_NAME=...
DB_PORT=...
JWT_SECRET=...
MASP_API_BASE_URL=https://inarte.masp.org.br/api/api
MASP_API_LANG=BR
MASP_API_PAGE_SIZE=50
node server.js
cd frontend-masp
npm install
- Criar arquivo
.env
com:
VITE_API_URL=http://localhost:5000
npm run dev
Sistema rodará localmente em http://localhost:5173
- Integração direta via POST com o banco oficial do MASP (In.Arte).
- Migração para infraestrutura interna do MASP (servidor dedicado).
- Integração de tecnologia RFID para segurança adicional.
- Melhorias na performance com novos servidores de cloud.
- Alexandre Rodrigues Santarossa
- Natan Kron Goldenberg Lewi
- Pedro Gomes de Sá Drumond
- Orientador: Prof. Dr. Luiz Fernando Cardoso dos Santos Durão
- Coorientador: Prof. Maurício Bouskela
- Capstone Insper 2025
Este projeto foi desenvolvido em parceria direta com a equipe técnica do MASP.