A plataforma web para divulgar Lives aonde produtos serão leiloados.
Live Website
·
Reporte um Bug
Sumário
O objetivo deste desafio técnico é avaliar as habilidades de desenvolvimento de aplicativos ou sites, com foco em criar uma plataforma de live shopping.
Uma plataforma web para divulgar as Lives que permitirá que usuários cadastrem e gerenciem suas Lives e produtos que serão leiloados.
- Next.JS
- TypeScript
- PlanetScale (MySQL)
- UploadThing
- Prisma
- Clerk
- Svix (Integração do Clerk com o servidor)
- Shacn/UI (Livraria de componentes)
- TailwindCSS
- Lucide Icons
- Headless ui
- Embla Carousel
- React-Hook-Form
- Zod
- Tanstack/tables
- Day.js
- Query String
Este é um guia dos passos que você precisa fazer para utilizar o projeto na em sua máquina local
Em seu terminal:
- npm
npm install npm@latest -g
Em seu terminal:
-
Clone o repositório
git clone https://github.com/samuelcolares/moxen-live-shopping.git
-
Abra a pasta do repositório
cd moxen-live-shopping
-
Instale os pacotes NPM
npm install
-
Se você usa VSCode como seu editor de código:
code .
-
Para o projeto funcionar você vai precisar criar um arquivo '.env' na pasta raiz do seu projeto e definir as seguintes variáveis:
// Autenticação NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY='sua key aqui' CLERK_SECRET_KEY='sua key aqui' CLERK_WEBHOOK_SECRET='sua key aqui' // Manter essas 4 variáveis desta exata forma NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/ NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/ // Database de sua escolha (PlanetScale ou alguma MySQL database é extremamente recomendada) // Caso saiba como criar e configurar uma database local também funcionaria // https://www.prisma.io/dataguide/mysql/setting-up-a-local-mysql-database // https://www.prisma.io/dataguide/mysql/connecting-to-mysql-databases DATABASE_URL='sua key aqui' // Upload de imagens feita com Uploadthing UPLOADTHING_SECRET='sua secret UploadThing key aqui' UPLOADTHING_APP_ID='sua ID UploadThing key aqui'
-
Após a escolha da database de sua preferência, mude o "provider" no arquivo prisma.schema (📂 prisma/prisma.schema) de acordo com sua escolha.
datasource db { provider = "mysql" // <-- Sua escolha, poderia ser cockroachdb, postgre, mongoDB, sqlite... url = env("DATABASE_URL") }
-
Gere a relação do Prisma e faça a conexão com a database
npx prisma generate && npx prisma db push
-
Inicie o projeto localmente com
npm run dev
Os exemplos acima foram mostrando como iniciar a aplicação localmente com NPM, mas é claro que você pode usar outros gerenciadores de pacotes como: PNPM, YARN, BUN
Página aonde mostra todos os detalhes fornecidos no formulário de cadastro de lives (pedidos na documentação do teste) (ver formulário na captura de tela #..)
Para total acesso do que o website é capaz é necessário realizar login e se cadastrar no sistema, isso inclui:
Durante o login o usuário pode escolher 3 formas diferentes de fazer log-in, caso ele opte por fazer pelo github o usuário vai pular a captura de tela 4.2 e vai diretamente para a captura de tela #4.3.
Este processo só acontece uma vez por conta.
A maior diferença visual inicial é uma sidebar que possui propriedade de colapsar quando arrastada da direita para a esquerda e podendo ser expandida de novo arrastando-a da esquerda para a direita
Abaixo da imagem de perfil possui seletor de abas podendo ser alternadas entre Lives agendadas e Produtos cadastrados
❗Na coluna de 'Ações' da tabela podemos ver 4 opções sendo:
- Link rapido para a página de detalhes da live,
- Opção de visualizar os detalhes da lives através de um Dialog Modal
- Link para editar a live
- Link para deletar a live aonde irá abrir um Alert Modal para re-confirmar se o usuário deseja prosseguir em sua ação.
❗Na coluna de 'Ações' da tabela podemos ver 3 opções sendo:
- Opção de visualizar as imagens dos produto através de um Dialog Modal
- Link para editar a produto
- Link para deletar produto aonde irá abrir um Alert Modal para re-confirmar se o usuário deseja prosseguir em sua ação.
❗Quando o upload terminar as URL das imagens vão preencher até no máximo 5 campos de texto.
❗Para cadastrar um produto você também pode inserir imagens do servidor do imgur, basta copiar a url em um campo de input, mas o uploadthing tem a permissão de sobrescrever os campos de input caso já tenha 5 Urls adicionadas, começando a sobrescrever de baixo pra cima.
ao terminar o cadastro o usuário é retornado a página do seu canal.
Botão de deletar produto agora aparece e todos os dados do produto são preenchidos automaticamente em seus respectivos campos de texto para o usuário editar apenas o que precisa.
❗Assim como no formulário de produtos a live é possível também colocar um link de imagem do imgur
Eu ainda preciso melhorar nas escritas de testes, escrevi alguns em jest mas nao fiquei satisfeito com a qualidade dos mesmos, então para não entregar algo que seja sem excelência eu optei por não continuar fazendo.
Samuel Colares - samuelcolaresdequino@gmail.com
-->