Este é um projeto de um sistema de cinema desenvolvido com Next.js e React. O objetivo do projeto é simular a escolha de assentos em uma sala de cinema, com alternância entre temas claro e escuro, cálculo dinâmico do valor total e exibição de informações sobre o filme.
- Next.js (React): Framework para renderização de páginas e gerenciamento de estado.
- CSS Modules: Para estilização modular de componentes.
- React Icons: Biblioteca de ícones para a interface.
- HTML5 e Flexbox: Para estruturação e posicionamento de elementos.
- Media Queries: Para responsividade e alternância de temas.
-
Seleção de Assentos:
- Assentos podem ser selecionados, desmarcados ou exibidos como "indisponíveis".
- Os estados dos assentos são dinâmicos e refletidos visualmente.
-
Cálculo do Valor Total:
- O preço total da compra é atualizado dinamicamente conforme os assentos são selecionados.
-
Renderização Condicional:
- O componente de informações é exibido em diferentes posições com base no tamanho da tela (desktop ou mobile).
-
Modo Claro/Escuro:
- O tema inicial é baseado na preferência do navegador.
- O usuário pode alternar manualmente entre os temas.
-
Loading:
- Uma animação simples é exibida enquanto os dados são carregados.
public/
│ └── dados.json
src/
├── app/
│ ├── Assento/
│ │ ├── Assento.js
│ │ └── Assento.module.css
│ ├── Infos/
│ │ ├── Infos.js
│ │ └── Infos.module.css
│ ├── Loading/
│ │ ├── Loading.js
│ │ └── Loading.module.css
│ ├── Sala/
│ │ ├── Sala.js
│ │ └── Sala.module.css
│ ├── fonts/
│ │ ├── GeistMonoVF.woff
│ │ └── GeistVF.woff
│ ├── globals.css
│ ├── layout.js
│ ├── page.js
│ └── page.module.css
├── hooks/
│ ├── useCalculateTotal.js
│ ├── useFetchFilmes.js
│ ├── useLightMode.js
│ └── useResize.js
├── .eslintrc.json
├── .gitignore
├── jsconfig.json
└── next.config.mjs
- Node.js (>=16.0.0)
- npm ou yarn
-
Clone o repositório:
git clone https://github.com/Lpins01/POC-6
-
Instale as dependências:
npm install
yarn
-
Inicie o servidor de desenvolvimento:
npm run dev
-
Acesse no navegador:
http://localhost:3000
- Utilização de estrutura semântica e posicionamento com
display: flexem diversos componentes, como a sala de cinema.
- Modo claro/escuro e responsividade para dispositivos móveis.
- Os componentes principais, como
Sala,Assento, eInfos, estão modularizados.
- A posição do componente
Infosmuda dinamicamente com base no estadoisMobile.
- O hook
useCalculateTotalcalcula dinamicamente o valor total com base nos assentos selecionados.
- Lucas Rocha - 10391076
- Luiz Saraiva - 10374379
- Leonardo Pinheiro - 10388961
- Fábio Sabino - 10277530

