Loading repository data…
Loading repository data…
Projeto-Site-do-Museu / repository
Este projeto é uma landing page responsiva para o Museu Histórico de São José, desenvolvida com Next.js e Tailwind CSS. O objetivo é proporcionar uma experiência imersiva para os visitantes, incluindo um tour 3D interativo.
Este projeto é uma landing page responsiva para o Museu Histórico de São José, desenvolvida com Next.js e Tailwind CSS. O objetivo é proporcionar uma experiência imersiva para os visitantes, incluindo um tour 3D interativo.
git clone https://github.com/Projeto-Site-do-Museu/ProjetoMuseu
cd nome-do-projeto
npm install
# ou
yarn install
npm run dev
# ou
yarn dev
Acesse http://localhost:3000 no navegador para ver a aplicação em funcionamento.
Para rodar o projeto em ambiente de desenvolvimento com Docker (com hot reload):
docker-compose -f docker-compose.dev.yml up --build
Este comando irá:
next devAcesse http://localhost:3000 no navegador para ver a aplicação em funcionamento.
Para rodar o projeto em ambiente de produção com Docker:
docker-compose up --build
Este comando irá:
next startAcesse http://localhost:3000 no navegador para ver a aplicação em funcionamento.
Inicialmente, execute:
npm run build
Este comando irá gerar uma versão otimizada do site, porém qualquer erro no código pode impossibilitar o build e deve ser corrigido
após o build
npm run start
Acesse http://localhost:3000 no navegador para ver a aplicação em funcionamento.
prisma e @prisma/client)Instale as dependências do Prisma no projeto:
npm install prisma @prisma/client bcryptjs
npx prisma init
Instale o MySQL (caso não tenha):
sudo apt update
sudo apt install mysql-server
Crie um usuário e banco de dados:
sudo mysql
No prompt do MySQL:
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE database_museu;
GRANT ALL PRIVILEGES ON database_museu.* TO 'admin'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Configure a string de conexão no arquivo .env:
DATABASE_URL="mysql://admin:password@localhost:3306/database_museu"
Gerar as tabelas no banco:
npx prisma migrate dev --name init
Visualizar e editar dados via interface web:
npx prisma studio
Gerar o client do Prisma (após alterar o schema):
npx prisma generate
bcryptjs).Acesso via terminal:
mysql -u admin -p -h localhost -P 3306 database_museu
Acesso via Prisma Studio:
npx prisma studio
Para criar um usuário admin manualmente no banco, você precisa gerar o hash da senha.
No terminal, execute:
node
E então, dentro do prompt do Node.js, digite:
const bcrypt = require('bcryptjs');
bcrypt.hashSync('ifsc.br.museu!##&', 10);
O resultado será o hash da senha. Use esse valor no campo senhaHash ao criar o usuário admin no banco de dados.
Observação:
Sempre que alterar o arquivo prisma/schema.prisma, rode npx prisma migrate dev para atualizar o banco de dados.
Em resumo, caso altere a estrutura do código, tome MUITO cuidado para não alterar as boas práticas. Toda a responsividade do site gira em torno do MobileFirst. Os estilos em comum permanecem inalterados, mas os estilos que são diferentes para mobile e web devem ser feitos da seguinte forma:
ClassName=" estilo-para-mobile md:estilo-para-web"
mantendo esta estrutura a responsividade do site deve ser facilmente ajustada.
#Utilize apenas as novas versões do Next!
todas as maiores funcionalidades do site estão feitas conforme as boas práticas das versões mais recentes do next, então, em caso de novas alterações, olhe para o restante do código e não adicione nenhuma sintaxe nova, pois provavelmente estará errada.
O site foi desenhado para que todos as imagens e textos sejam dinamicos a partir de uma API. Esta API deve ser criada, juntamente ao banco de dados e uma interface gráfica para o gestor administrar o site de forma simples e segura apenas realizando requisições para a API. Após a conclusão da mesma, os Mocks de imagens e texto do site devem ser substituidos pelo retorno da requisição para a API, tornando o site dinâmico às alterações.
/
├── components/ # Componentes reutilizáveis
├── public/ # Arquivos estáticos (imagens, fontes)
├── src/ # Diretório fonte do projeto
| ├── app/ # Páginas da aplicação
│ ├── globals.css # arquivo css geral (utilizar apenas para configurações globais, para estilizações de pagina utilizar as classes tailwind.)
│ ├── page.tsx # Página principal (Home)
│ ├── about # pagina sobre
│ ├── acervo # pagina acervo
│ ├── tour # pagina tour3D
│ ├── ... # dentre outros
| ├── components/ # Diretório dos componentes
│ ├── footer.tsx # Footer do site
│ ├── header.tsx # header do site
│ ├── tour3D.tsc # componente do tour 3D
│ ├── ... # dentre outros
├── package.json # Configuração de dependências
├── tsconfig.json # Configuração do TypeScript
├── next.config.js # Configuração do Next.js
├── Dockerfile # Configuração Docker para produção
├── Dockerfile.dev # Configuração Docker para desenvolvimento
├── docker-compose.yml # Configuração docker-compose para produção
└── docker-compose.dev.yml # Configuração docker-compose para desenvolvimento
erDiagram
Usuario {
Int id PK "autoincrement()"
String nome
String email "unique"
String senhaHash
String role
Boolean ativo
DateTime createdAt
DateTime updatedAt
}
Artigo {
Int id PK "autoincrement()"
String titulo
String resumo "optional"
String conteudo "longtext"
String imagem "optional"
String video "optional"
DateTime dataPublicacao "optional"
Boolean ativo
DateTime createdAt
DateTime updatedAt
Int usuarioId FK
}
Acervo {
Int id PK "autoincrement()"
String titulo
String descricao "optional"
String imagem "optional"
String video "optional"
Int ordem "optional"
Boolean ativo
DateTime createdAt
DateTime updatedAt
Int usuarioId FK
}
VideoEspecial {
Int id PK "autoincrement()"
String titulo
String descricao "optional"
String tipo
String video
String thumbnail "optional"
Int ordem "optional"
Boolean ativo
DateTime createdAt
DateTime updatedAt
Int usuarioId FK
}
ContadorVisitante {
Int id PK "autoincrement()"
Int contador
DateTime dataRegistro
String ipOrigem "optional"
String userAgent "optional"
DateTime createdAt
}
Configuracao {
Int id PK "autoincrement()"
String chave "unique"
String valor
String descricao "optional"
DateTime createdAt
DateTime updatedAt
}
Usuario ||--o{ Artigo : "escreve"
Usuario ||--o{ Acervo : "gerencia"
Usuario ||--o{ VideoEspecial : "administra"
Caso precise adicionar novas funcionalidades ou realizar manutenção, siga os padrões estabelecidos e consulte a documentação do Next.js e Tailwind CSS.