Sistema de gerenciamento de biblioteca Full Stack com suporte a impressão de etiquetas, busca pública e dashboards.
- Gestão de Acervo: Livros, Editoras e Categorias.
- Consulta Pública: Interface de busca para visitantes sem login.
- Gestão de Usuários: Login seguro e suporte a MFA/OTP.
- Etiquetas: Geração de etiquetas com QR Code para lombada de livros.
- Relatórios: Filtros avançados por data de aquisição, editora e status.
- Upload de Capas: Suporte a envio de imagens para os livros.
client/: Frontend em React (Vite).server/: Backend em Node.js (Express) + MySQL.
Utilize o script setup_lxc.sh fornecido na raiz.
- Copie a pasta
library-systempara o servidor (ex:/rootou/var/www). - Copie o arquivo
setup_lxc.shpara o mesmo diretório pai. - Dê permissão de execução e rode:
Este script instala Node.js, MariaDB (MySQL), PM2, e configura o banco de dados e dependências.
chmod +x setup_lxc.sh ./setup_lxc.sh
1. Pré-requisitos
- Node.js > 20
- MySQL ou MariaDB
2. Backend
cd library-system/server
# Cria o arquivo .env (edite com sua senha do banco)
cp .env.example .env
npm install
npm install multer # Garante dependências críticas
node src/index.js # Roda migrações e inicia3. Frontend
cd library-system/client
npm install
npm run build # Gera a pasta 'dist'O sistema usa um arquivo .env no diretório server.
Exemplo:
DB_HOST=localhost
DB_USER=library_user
DB_PASSWORD=secure_password_123
DB_NAME=library_db
PORT=3000
JWT_SECRET=sua_chave_secreta_aquiO backend já serve os arquivos estáticos do frontend (pasta client/dist).
Na pasta server:
# Iniciar com PM2 (Process Manager)
pm2 start src/index.js --name library-api || pm2 restart library-api
# Salvar lista de processos para iniciar no boot
pm2 save
pm2 startupAcesse via navegador: http://SEU_IP:3000
- Imagens não carregam: Verifique se a pasta
server/uploadsexiste. O script de setup deve criá-la. - Datas Erradas: O sistema usa
dateStrings: trueno MySQL. Se datas aparecerem com um dia a menos, verifique se o frontend e backend foram reiniciados após a última atualização.