- Extrair automaticamente os dados relevantes de faturas de energia.
- Estruturar e armazenar os dados de forma organizada em um banco de dados PostgreSQL.
- Apresentar essas informações de maneira intuitiva e acessível através de uma aplicação web, utilizando uma API para comunicação com o backend.
- Next.js: Framework React para desenvolvimento de aplicações web com renderização no lado do servidor.
- React: Biblioteca JavaScript para construção da interface do usuário.
- Tailwind CSS: Framework CSS para estilização rápida e responsiva.
- ShadcnUI: Biblioteca de componentes UI baseada em React.
- TypeScript: Linguagem de programação para garantir tipagem estática e segurança no desenvolvimento.
- Fastify: Framework web para construção de APIs com alto desempenho.
- Prisma: ORM (Object-Relational Mapping) para interagir com o banco de dados PostgreSQL.
- PostgreSQL: Banco de dados relacional para armazenamento dos dados estruturados.
- TypeScript: Linguagem de programação para garantir tipagem estática e segurança no desenvolvimento.
- AWS S3: Armazenamento de faturas de energia.
- Azure EC2: Hospedagem do backend utilizando Nginx e PM2 para gerenciamento de processos.
- Vercel: Plataforma de hospedagem para o frontend.
- Neon DB: Banco de dados hospedado para armazenamento de dados estruturados.
- Docker: Opção para hospedagem do banco de dados PostgreSQL no EC2. Tanto o Docker quanto o Neon DB são soluções extremamente funcionais e flexíveis para o deploy.
- Visualização dos dados cadastrados de clientes e faturas através de uma dashboard.
- Apresentação de gráficos com informações úteis, como energia consumida e compensada, valores consumidos e compensados
- Exibição de cartões com informações principais, como total de clientes, total de faturas e consumo de energia.
- Visualização e filtragem das faturas por mês ou por cliente.
- Pré-visualização das faturas e possibilidade de baixá-las.
- Envio de novas faturas, caso necessário.
- Implementação de rotas para gerenciamento de clientes, faturas e métricas.
- Lógica de extração de dados das faturas enviadas.
- Armazenamento das informações das faturas tratadas em um bucket no AWS S3 para disponibilização aos usuários.
Estas instruções permitirão que você obtenha uma cópia de trabalho do projeto em sua máquina local para fins de desenvolvimento e teste.
Antes de começar, certifique-se de atender aos seguintes requisitos:
- Você instalou Git.
- Você instalou Node.js.
- Você instalou Docker.
- Você possui um navegador web moderno.
Também é bom ter um editor para trabalhar com o código como VSCode
# Clone o repositório
$ git clone https://github.com/GabrielFeijo/Desafio-Lumi
# Acesse a pasta do projeto em terminal/cmd
$ cd Desafio-Lumi
# Acesse a pasta do projeto em terminal/cmd
$ cd lumi-back
# Instale as dependências
npm install
# Inicie o banco de dados PostgreSQL usando Docker Compose
$ docker compose up -d
# Configure as variáveis de ambiente no arquivo .env
DATABASE_URL="postgresql://postgre:Postgres2024!@localhost:5432/lumi?schema=public"
# Credenciais para acessar o Bucket na AWS
AWS_REGION="string"
AWS_ACCESS_KEY_ID="string"
AWS_SECRET_ACCESS_KEY="string"
AWS_BUCKET_NAME="string"
#CORS
ORIGIN="["*"]"
# Execute as migrações do Prisma para configurar o banco de dados.
$ npx prisma migrate dev --name init
# Para popular seu banco de dados com dados iniciais, execute o seguinte comando.
$ npx prisma db seed
# Inicie a aplicação em DEV:
$ npm run start:dev
# Acesse a pasta do projeto em terminal/cmd
$ cd lumi-front
# Instale as dependências
npm install
# Configure as variáveis de ambiente no arquivo .env
NEXT_PUBLIC_API_URL="http://localhost:3333/api"
# Inicie a aplicação em DEV:
$ npm run dev
Para executar os testes unitários, navegue até a pasta do projeto (lumi-front ou lumi-back) e execute o seguinte comando:
# BACKEND - (lumi-back): Para popular seu banco de dados com dados iniciais, execute o seguinte comando.
$ npx prisma db seed
$ npm run test