Skip to content

DanielCayresFilho/obs

Repository files navigation

🎨 ISOBS - Obscura Tattoo Studio Management System

Sistema completo de gestão para estúdio de tatuagem, desenvolvido com NestJS (Backend) e Vue 3 (Frontend).

Status License Vue NestJS


✨ Funcionalidades

📋 Gestão de Clientes

  • Cadastro completo de clientes
  • Upload de fotos de perfil (Backblaze B2)
  • Busca e filtros avançados
  • Histórico de procedimentos

💰 Orçamentos

  • Criação de orçamentos com múltiplos procedimentos
  • Workflow: Pendente → Aprovado → Convertido
  • Cálculo automático de valores e descontos
  • Conversão para comanda/agendamento

📅 Agendamentos

  • Sistema de agenda com calendário
  • Upload de fotos (decalques)
  • Vinculação com procedimentos
  • Status: Aguardando, Concluído, Cancelado

🧾 Comandas

  • Controle de comandas abertas/fechadas
  • Rastreamento de materiais utilizados
  • Múltiplos procedimentos por comanda
  • Cálculo de custos operacionais

📦 Estoque

  • Gestão de materiais (tintas, agulhas, descartáveis)
  • Controle de entrada/saída
  • Produtos para venda
  • Rastreabilidade completa (StockMovement)

💳 Financeiro

  • Contas a pagar/receber
  • Controle de vencimentos
  • Múltiplas formas de pagamento (PIX, Dinheiro, Débito, Crédito até 6x)
  • Dashboard de métricas financeiras

📊 Analytics

  • Dashboard com gráficos (Chart.js)
  • Métricas de vendas, comandas, estoque
  • Relatórios visuais

🖼️ Galeria

  • Grid responsivo de fotos
  • Viewer com zoom, download e impressão
  • Filtros por cliente/procedimento

🏗️ Arquitetura

isobs/
├── obs-backend/          # NestJS + Prisma + PostgreSQL
│   ├── src/
│   │   ├── auth/        # JWT Authentication
│   │   ├── users/       # User management
│   │   ├── clients/     # Client CRUD
│   │   ├── budgets/     # Budget system
│   │   ├── appointments/
│   │   ├── commands/
│   │   ├── stock/
│   │   ├── procedures/
│   │   ├── financials/
│   │   ├── analytics/
│   │   └── sales/
│   └── prisma/
│       ├── schema.prisma
│       └── seed.ts      # Initial user creation
│
├── obs-frontend/         # Vue 3 + Vite
│   ├── src/
│   │   ├── components/  # 15 reusable components
│   │   ├── views/       # 9 main views
│   │   ├── router/
│   │   └── assets/
│   └── .env
│
├── docker-compose.yml
├── DEPLOY.md
├── SECURITY-CHECKLIST.md
└── README.md

🚀 Stack Tecnológica

Backend

  • Framework: NestJS 11
  • ORM: Prisma 6
  • Database: PostgreSQL 16
  • Auth: JWT + Passport.js
  • Storage: Backblaze B2 (AWS S3 compatible)
  • Validation: class-validator

Frontend

  • Framework: Vue 3 (Composition API)
  • Build: Vite 7
  • Router: Vue Router 4
  • Charts: Chart.js
  • Icons: Iconify Vue
  • HTTP: Fetch API

DevOps

  • Containerização: Docker + Docker Compose
  • Web Server: Nginx (reverse proxy)
  • SSL: Let's Encrypt
  • CI/CD: (a implementar)

📦 Instalação (Desenvolvimento)

Pré-requisitos

  • Node.js 18+
  • Docker & Docker Compose
  • Git

1. Clone o repositório

git clone <repositorio>
cd isobs

2. Configure variáveis de ambiente

Backend:

cd obs-backend
cp .env.example .env
# Editar .env com suas configurações

Frontend:

cd obs-frontend
cp .env.example .env
# Configurar VITE_API_URL

3. Inicie com Docker

docker-compose up -d

4. Execute migrations e seed

# Migrations
docker exec obs-backend npx prisma migrate dev

# Seed (cria usuário joycecayres)
docker exec obs-backend npx prisma db seed

5. Acesse o sistema

⚠️ Altere a senha após primeiro login!


🔒 Segurança

ANTES DE FAZER DEPLOY:

  1. ✅ Ler completamente SECURITY-CHECKLIST.md
  2. ✅ Gerar novo JWT_SECRET
  3. ✅ Alterar senha do PostgreSQL
  4. ✅ Rotacionar credenciais Backblaze B2
  5. ✅ Configurar CORS corretamente
  6. ✅ Alterar senha padrão do usuário

📚 Documentação

  • Deploy em Produção: Ver DEPLOY.md
  • Segurança: Ver SECURITY-CHECKLIST.md
  • API Docs: (a implementar Swagger)

🗄️ Modelo de Dados

Principais Entidades

Users (Artistas)

  • id, username, name, email, password, birthday, userPicture

Clients

  • id, name, phone, birthday, instagram, clientPicture

Budgets

  • id, budgetName, idClient, procedures[], status (pending/approved/rejected/converted), finalPrice, validityDate

Commands (Comandas)

  • id, commandName, idUser, idClient, totalPrice, paymentType, commandStatus

Appointments

  • id, procedure, appointmentDate, appointmentPicture, commandId

Stock

  • id, name, type (sale/intern), price, quantity, category

StockMovement

  • id, idStock, cost, used, movementType (input/output), commandId

Procedures

  • id, procedureName, procedureType, duration, procedurePrice

Financials

  • id, accountName, price, vencimentDay, paymentStatus

🛠️ Scripts Úteis

Backend

# Development
npm run start:dev

# Production build
npm run build
npm run start:prod

# Prisma
npx prisma studio        # GUI do banco
npx prisma migrate dev   # Criar migration
npx prisma db seed       # Executar seed

Frontend

# Development
npm run dev

# Production build
npm run build
npm run preview

Docker

# Logs
docker-compose logs -f

# Restart
docker-compose restart

# Stop & Remove
docker-compose down

# Rebuild
docker-compose up -d --build

📊 Avaliação Técnica

Nota Geral: 8.0/10

Pontos Fortes ⭐

  • Arquitetura bem estruturada (NestJS modules)
  • UI/UX profissional e responsiva
  • Seed de dados completo
  • Workflows de negócio bem implementados
  • Integração com cloud storage (B2)
  • Docker setup funcional

Melhorias Futuras 🔧

  • Implementar testes (Jest + Cypress)
  • Migrar frontend para TypeScript
  • Adicionar Pinia (state management)
  • Implementar Swagger (API docs)
  • CI/CD pipeline
  • Rate limiting
  • Soft delete
  • Multi-tenancy

📈 Roadmap

v1.1 (Próximo)

  • Testes unitários (70%+ coverage)
  • Swagger API documentation
  • Notificações por email
  • Relatórios PDF

v1.2

  • Multi-tenancy (múltiplos estúdios)
  • App mobile (React Native)
  • Integração com WhatsApp
  • Sistema de agendamento online

v2.0

  • IA para sugestão de preços
  • Marketplace de artistas
  • Sistema de fidelidade

👥 Contribuindo

  1. Fork o projeto
  2. Crie uma branch (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -m 'Add: nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

📝 Licença

MIT License - veja LICENSE para detalhes


👤 Autor

Daniel Cayres

  • Sistema desenvolvido para Obscura Tattoo Studio

🙏 Agradecimentos

  • NestJS Team
  • Vue.js Team
  • Prisma Team
  • Comunidade Open Source

📞 Suporte

Para dúvidas ou problemas:

  1. Verificar DEPLOY.md e SECURITY-CHECKLIST.md
  2. Revisar logs: docker-compose logs -f
  3. Abrir uma issue no repositório

⚡ Sistema 100% pronto para produção!

Versão: 1.0.0 Última atualização: 19/10/2025

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors