Skip to content

engsoft-pantanal-dev/InovaB3

Repository files navigation

InovaB3

Sistema completo de gestão de ideias inovadoras para o Pantanal EngComp, desenvolvido com backend FastAPI e frontend Next.js, oferecendo uma plataforma moderna e intuitiva para submissão, acompanhamento e gestão de ideias de inovação.


Sobre o Projeto

Este sistema foi desenvolvido para facilitar a gestão de ideias inovadoras no ambiente corporativo, proporcionando:

✨ Funcionalidades Principais

Para Usuários Comuns:

  • Autenticação Segura: Sistema completo de login e cadastro
  • Dashboard Pessoal: Visualização das próprias ideias submetidas
  • Submissão de Ideias: Formulário intuitivo para envio de novas propostas
  • Acompanhamento de Status: Histórico completo do progresso das ideias
  • Busca e Filtros: Ferramentas para encontrar ideias facilmente

Para Administradores:

  • Dashboard Administrativo: Visão geral completa do sistema
  • Gestão de Ideias: Visualização e gerenciamento de todas as ideias
  • Alteração de Status: Aprovar, rejeitar ou arquivar propostas
  • Filtros Avançados: Por pilar, status, data, usuário
  • Histórico Completo: Rastreamento de mudanças de status
  • Estatísticas: Métricas e indicadores do sistema
  • Resumos por IA: Resumos automáticos gerados por inteligência artificial (Google Gemini)
  • Busca de Ideias Similares: Sistema inteligente de detecção de similaridade entre ideias usando IA
  • Análise de Similaridade: Percentual de similaridade e visualização em barras de progresso

🧠 Funcionalidades de Inteligência Artificial

O sistema integra tecnologia de IA avançada para otimizar a gestão de ideias:

📝 Geração Automática de Resumos

  • Tecnologia: Google Gemini AI
  • Funcionalidade: Criação automática de resumos executivos para cada ideia submetida
  • Benefício: Facilita a compreensão rápida do conteúdo das propostas

🔍 Detecção Inteligente de Similaridade

  • Algoritmo: Análise semântica usando modelos de linguagem
  • Precisão: Cálculo de percentual de similaridade entre ideias
  • Interface: Barras de progresso visuais para fácil interpretação
  • Navegação: Sistema de clique para visualizar ideias relacionadas

🎯 Benefícios da IA

  • Para Usuários: Feedback sobre ideias similares já existentes
  • Para Administradores: Identificação eficiente de duplicatas e propostas relacionadas
  • Para o Sistema: Otimização do processo de avaliação e categorização

🎯 Objetivos

  • Centralizar a gestão de ideias inovadoras
  • Facilitar o processo de submissão e acompanhamento
  • Proporcionar transparência no processo de avaliação
  • Gerar métricas e relatórios para tomada de decisão
  • Aplicar inteligência artificial para otimização do processo

🚀 Tecnologias Utilizadas

Backend

  • FastAPI: Framework web moderno e rápido para construção de APIs
  • PostgreSQL: Banco de dados relacional robusto e escalável
  • SQLAlchemy: ORM avançado para Python
  • Docker & Docker Compose: Containerização e orquestração de serviços
  • JWT: Autenticação segura com tokens
  • Bcrypt: Hash seguro de senhas
  • Uvicorn: Servidor ASGI de alta performance
  • Google Gemini AI: Integração com IA para geração automática de resumos e análise de similaridade

Frontend

  • Next.js 15: Framework React com App Router para SSR e SSG
  • TypeScript: Tipagem estática para maior segurança no desenvolvimento
  • Tailwind CSS: Framework de CSS utilitário para estilização rápida
  • HeroUI: Componentes UI modernos (Drawer, Dialog, Progress)
  • Axios: Cliente HTTP para comunicação com a API
  • React Hook Form: Gerenciamento eficiente de formulários
  • Sonner: Sistema elegante de notificações (toasts) com estilos customizados
  • Lucide React: Biblioteca de ícones moderna e consistente
  • AuthJS: Sistema de autenticação integrado com Next.js

Ferramentas de Desenvolvimento

  • Docker: Containerização para desenvolvimento e produção
  • Git: Controle de versão
  • ESLint: Linting para código JavaScript/TypeScript
  • PostCSS: Processamento de CSS
  • Autoprefixer: Compatibilidade automática de CSS

🏗️ Arquitetura e Estrutura

Estrutura do Projeto

pantanal-engcomp/
├── app/                    # 🐍 Backend (FastAPI)
│   ├── api/                # Rotas da API
│   │   ├── __init__.py
│   │   ├── auth.py         # Autenticação (login, registro)
│   │   ├── users.py        # Gestão de usuários
│   │   ├── ideias.py       # CRUD de ideias
│   │   └── admin.py        # Funcionalidades administrativas
│   ├── core/               # Configurações principais
│   │   ├── __init__.py
│   │   ├── auth.py         # Middlewares de autenticação
│   │   ├── config.py       # Configurações da aplicação
│   │   ├── database.py     # Conexão com banco de dados
│   │   └── security.py     # Utilitários de segurança
│   ├── models/             # Modelos SQLAlchemy
│   │   ├── __init__.py
│   │   └── models.py       # Definição das tabelas
│   └── schemas/            # Schemas Pydantic
│       ├── __init__.py
│       └── schemas.py      # Validação de dados de entrada/saída
├── frontend/               # ⚛️ Frontend (Next.js)
│   ├── src/
│   │   ├── app/            # App Router (Next.js 15)
│   │   │   ├── page.tsx            # Página inicial
│   │   │   ├── layout.tsx          # Layout principal
│   │   │   ├── providers.tsx       # Providers de contexto
│   │   │   ├── globals.css         # Estilos globais
│   │   │   ├── dashboard/
│   │   │   │   └── page.tsx        # Dashboard principal
│   │   │   ├── auth/
│   │   │   │   ├── login/
│   │   │   │   │   └── page.tsx    # Página de login
│   │   │   │   └── cadastro/
│   │   │   │       └── page.tsx    # Página de cadastro
│   │   │   ├── submit-idea/
│   │   │   │   └── page.tsx        # Formulário de ideias
│   │   │   └── my-ideas/
│   │   │       └── page.tsx        # Minhas ideias
│   │   ├── components/             # Componentes React
│   │   │   ├── ui/                 # Componentes base (Radix UI)
│   │   │   │   ├── button.tsx
│   │   │   │   ├── card.tsx
│   │   │   │   ├── input.tsx
│   │   │   │   ├── dialog.tsx
│   │   │   │   └── ...
│   │   │   ├── AuthLayout.tsx      # Layout autenticado
│   │   │   ├── LoginForm.tsx       # Formulário de login
│   │   │   ├── CadastroForm.tsx    # Formulário de cadastro
│   │   │   └── ProtectedRoute.tsx  # Proteção de rotas
│   │   ├── contexts/               # Contextos React
│   │   │   └── AuthContext.tsx     # Contexto de autenticação
│   │   ├── lib/                    # Utilitários
│   │   │   ├── api.ts              # Cliente Axios configurado
│   │   │   ├── auth.ts             # Funções de autenticação
│   │   │   ├── types.ts            # Tipos TypeScript
│   │   │   └── utils.ts            # Funções utilitárias
│   │   └── types/                  # Definições de tipos globais
│   │       └── index.ts
│   ├── public/                     # Arquivos estáticos
│   │   ├── favicon.ico
│   │   └── ...
│   ├── package.json                # Dependências do frontend
│   ├── tailwind.config.ts          # Configuração Tailwind CSS
│   ├── next.config.ts              # Configuração Next.js
│   ├── postcss.config.js           # Configuração PostCSS
│   └── tsconfig.json               # Configuração TypeScript
├── 📄 Arquivos de Configuração
├── main.py                         # Arquivo principal da API
├── requirements.txt                # Dependências Python
├── Dockerfile                      # Containerização do backend
├── docker-compose.yml              # Orquestração dos serviços
├── .env.example                    # Exemplo de variáveis de ambiente
├── .gitignore                      # Arquivos ignorados pelo Git
└── README.md                       # Este arquivo

🗄️ Estrutura do Banco de Dados

Tabela: administradores

administradores {
  id              INTEGER PRIMARY KEY UNIQUE
  nome            VARCHAR(100) NOT NULL
  email           VARCHAR(100) UNIQUE NOT NULL
  cargo           VARCHAR(100)
  unidade         VARCHAR(100)
  senha_hash      VARCHAR(255) NOT NULL
  created_at      TIMESTAMP DEFAULT NOW()
  updated_at      TIMESTAMP DEFAULT NOW()
}

Tabela: users (colaboradores)

users {
  id_usuario      INTEGER PRIMARY KEY UNIQUE
  nome            VARCHAR(100) NOT NULL
  sexo            VARCHAR(10)
  email           VARCHAR(100) UNIQUE NOT NULL
  senha_hash      VARCHAR(255) NOT NULL
  ocupacao        VARCHAR(100)
  created_at      TIMESTAMP DEFAULT NOW()
  updated_at      TIMESTAMP DEFAULT NOW()
}

Tabela: ideias

ideias {
  id                  INTEGER PRIMARY KEY UNIQUE
  titulo              VARCHAR(200) NOT NULL
  tema                TEXT NOT NULL
  contexto_original   TEXT NOT NULL
  nome_user           VARCHAR(100) NOT NULL
  email_user          VARCHAR(100) NOT NULL
  pilar               VARCHAR(100) NOT NULL    -- Pilar de inovação
  status              VARCHAR(50) DEFAULT 'Novo'
  motivo_arquivamento TEXT
  resumo_ia           TEXT                     -- Resumo gerado por IA (Google Gemini)
  created_at          TIMESTAMP DEFAULT NOW()
  updated_at          TIMESTAMP DEFAULT NOW()
}

Tabela: historico_status_ideias

historico_status_ideias {
  id                INTEGER PRIMARY KEY
  ideia_id          INTEGER FOREIGN KEY -> ideias.id
  status_anterior   VARCHAR(50)
  status_novo       VARCHAR(50) NOT NULL
  data_mudanca      TIMESTAMP DEFAULT NOW()
  admin_id          INTEGER FOREIGN KEY -> administradores.id
  admin_nome        VARCHAR(100)
}

🔐 Sistema de Autenticação

Método: JWT (JSON Web Tokens)

  • Timeout: 30 minutos
  • Tipos de usuário: admin e user
  • Hash de senhas: bcrypt com salt
  • Middleware: Verificação automática de tokens

Endpoints de Autenticação:

  • POST /api/v1/auth/admin/register - Cadastro de administradores
  • POST /api/v1/auth/user/register - Cadastro de colaboradores
  • POST /api/v1/auth/login - Login unificado

🚀 Instalação e Execução

📋 Pré-requisitos

Antes de iniciar, certifique-se de ter instalado:

Programas:

  • Docker
  • Python 3.11+
  • Node.js (versão atual 20.3)
  • Git

Ferramentas de Desenvolvimento (Opcionais):

  • VS Code com extensões para Python e TypeScript

⚡ Comandos

1. Clone o Repositório

git clone https://github.com/MarceloFBorba/Project-PantanalDev.git
cd pantanal-engcomp

2. Execute o Sistema Completo

# No terminal do Vscode execute:
cd pantanal-engcomp
.\start.bat
Verifique no docker se os containers foram executados

# Em outro terminal, execute o frontend

cd frontend
npm install
npm run dev

3. Adicione a chave ao arquivo .env

echo "GEMINI_API_KEY=sua_chave_api_do_gemini_aqui" >> .env


Consulte `GEMINI_SETUP.md` para instruções detalhadas.

4. Acesse o Sistema

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors