Site autoral para escritório de arquitetura, construído com React, TypeScript, Vite, GSAP + ScrollTrigger, Lenis e Lucide React. Sem backend — pronto para GitHub e Vercel.
- Extraia o arquivo
.ziprecebido em uma pasta, por exemploatelier-lume. - Abra essa pasta no terminal (ou no VS Code → "Abrir pasta").
- Certifique-se de ter o Node.js instalado (versão 18 ou superior). Para conferir:
node -v
Dentro da pasta do projeto:
npm installnpm run devO terminal mostrará um endereço, geralmente http://localhost:5173. Abra-o no navegador. O site recarrega automaticamente a cada alteração salva.
WhatsApp, e-mail, Instagram e localização: edite um único arquivo:
src/data/siteConfig.ts
Imagens e textos dos projetos (Casa Horizonte, Apartamento Nômade, Casa Maré, Galeria Orbe): edite
src/data/projects.ts — todas as URLs de imagem (temporárias, do Unsplash) estão centralizadas ali. Para usar fotos reais, troque a URL por um caminho local, por exemplo:
- Coloque as imagens em
public/images/casa-horizonte/hero.jpg - No
projects.ts, useheroImage: '/images/casa-horizonte/hero.jpg'
Textos da página inicial (manifesto, chamada final, introdução "sobre"): também em siteConfig.ts e em src/pages/Home/Home.tsx.
Página Sobre: o arquivo src/pages/About/About.tsx contém um aviso claro [Espaço reservado...] onde deve entrar a história real do escritório — nenhum currículo, prêmio ou nome de arquiteto foi inventado, propositalmente.
Favicon: substitua public/favicon.svg por um logotipo próprio (mantendo o mesmo nome de arquivo).
Número do WhatsApp: em siteConfig.ts, altere whatsapp (formato internacional, apenas dígitos, ex: 5511987654321) e whatsappDisplay (formato visual).
- Crie uma conta em github.com, se ainda não tiver.
- No GitHub, clique em New repository, dê um nome (ex:
atelier-lume) e não marque nenhuma opção de inicialização (sem README, sem .gitignore). - Copie a URL do repositório, algo como
https://github.com/seu-usuario/atelier-lume.git.
Dentro da pasta do projeto:
git init
git add .
git commit -m "Primeira versão do site Atelier Lume"
git branch -M main
git remote add origin https://github.com/seu-usuario/atelier-lume.git
git push -u origin main- Crie uma conta em vercel.com usando seu login do GitHub.
- Clique em Add New → Project.
- Selecione o repositório
atelier-lumeque você acabou de enviar. - A Vercel detecta automaticamente que é um projeto Vite — não é necessário alterar nenhuma configuração.
- Clique em Deploy. Em poucos minutos, você recebe um endereço público (
.vercel.app), que pode depois ser trocado por um domínio próprio nas configurações do projeto.
Este é um site de página única (SPA) com rotas administradas pelo React Router. Se, ao atualizar (F5) uma página interna como /projetos/casa-mare, aparecer um erro 404 do servidor, o motivo é que o servidor não sabe redirecionar essa URL de volta para o index.html.
- Na Vercel: o arquivo
vercel.json, já incluído neste projeto, resolve isso automaticamente — ele redireciona todas as rotas paraindex.html, deixando o React Router assumir a navegação. - Em outro provedor: procure a opção de "SPA fallback" ou "rewrite all routes to index.html" nas configurações de hospedagem.
npm run buildIsso cria a pasta dist/, com os arquivos otimizados prontos para hospedagem. Para conferir localmente antes de publicar:
npm run previewsrc/
assets/
components/
Header/ Footer/ Preloader/ ProjectCard/
BeforeAfter/ ContactForm/ SmoothScroll/ PageTransition/
data/
projects.ts → conteúdo e imagens dos projetos
siteConfig.ts → WhatsApp, e-mail, Instagram, textos-chave
pages/
Home/ Projects/ ProjectDetail/ About/ Contact/ NotFound/
styles/
variables.css → paleta, tipografia, espaçamentos
globals.css
animations.css
App.tsx
main.tsx
public/
favicon.svg
robots.txt
sitemap.xml
- O formulário de contato não possui backend: ao ser enviado, monta uma mensagem estruturada e abre o WhatsApp automaticamente.
- Todas as animações (GSAP/ScrollTrigger e o preloader) respeitam
prefers-reduced-motion. - O comparador de antes/depois funciona com mouse, toque e teclado (setas ← →, Home, End).
- O conteúdo permanece visível mesmo que o JavaScript falhe — nenhuma animação oculta texto ou imagens por padrão.