Instituto +Brasal redesign — stacks D, E and F (with a reference) · v3
Three redesign stacks with a design reference, redone once DESIGN.md and the motion guide existed: what each got right, what broke and the prompt at each step.
- process
- skills
- part 2/2

Contents
- 1. What changed and why
- 2. Assumptions and project materials
- 3. Conformity map — the guide's motion → the home page section
- 4. The experiment now
- 5. STACK D — "GSAP execution" (GSAP Skills + Impeccable)
- 6. STACK E — "Craft & Feel" (Emil Kowalski + Motion.dev Animations + Taste)
- 7. STACK F — "Principles & Choreography" (Design Motion Principles + Motion Design Skill)
- 8. Comparison protocol (D vs E vs F)
- 9. Practical notes
- 10. Next steps
1. What changed and why
| Before (v2) | Now (v3) | Reason |
|---|---|---|
| Dembrandt extracted tokens from the reference (D) | Removed | The DESIGN.md defines the identity already; nothing remains to extract |
| UI UX Pro Max generated a design system (F) + Prompt F-0 | Removed | The same |
| Taste image-to-code derived components from the screenshots (E) | Demoted to an anti-slop layer | The structure now comes from the motion guide rather than from the images |
| React Bits supplied ready-made components (F) | Removed | The guide prescribes an implementation of your own per prompt; library components would break the conformity |
| The "one engine per stack" rule | Revoked → "one engine per domain" | The guide prescribes GSAP (scroll/reveals/timelines) + Framer Motion (micro-UI: overlay, cookies, form, hover) + Lenis + Embla, with separate roles. That division is correct and holds for the 3 stacks |
| Each stack studied the videos to map the motion grammar | The guide is the source of the grammar | The 17 motions are cataloged already with an implementation prompt; the videos and screenshots become checking material |
| The experiment's variable: the method of reading the reference | The variable: the layer of execution and QA skills | Identical inputs (DESIGN.md + guide + content); what changes is the skill support of each stack |
Analysis of the guide (a summary)
- 17 motions with a visual and technical description and a ready-made prompt; a Prompt 0 for infrastructure (GSAP 3.13+ + @gsap/react + ScrollTrigger + SplitText + a synced Lenis + Framer Motion + Embla); a suggested implementation order; a list of GSAP + Next.js traps.
- Production quality: the 3-step Lenis cleanup, SplitText's
autoSplit/onSplitafter the fonts,gsap.matchMedia,ScrollTrigger.refresh()after load, FOUC prevention throughautoAlpha, a focus trap on the overlay, and the explicit care of the hero title animating a single time (Motion 4 replaces the Motion 3 tween). - Agnostic about content: every text and value is a placeholder. The parameterization with the Instituto's content comes from the map in section 3 of this document.
2. Assumptions and project materials
The structure expected in each stack folder before starting:
stack-{d|e|f}-.../
├── DESIGN.md # the Instituto's visual identity (IT EXISTS ALREADY — copy it into each stack)
├── referencia/
│ ├── motions-guia.md # the guide of 17 motions (copy the file supplied)
│ ├── images/ # screenshots of the reference (visual checking)
│ └── videos/ # navigation recordings (feel checking)
└── images/ # the Instituto's assets (filled in at Step 0 of the prompt)The hierarchy of sources of truth (it holds for the 3 stacks):
- DESIGN.md → the identity: colors, fonts, spacing, elements. Non-negotiable.
- referencia/motions-guia.md → the motion implementation: technique, parameters, prompts. Non-negotiable.
- The current site (https://www.brasal.com.br/instituto/) → the content: texts, menu, sections. Non-negotiable.
- referencia/images + videos → checking feel and rhythm. Advisory.
A conflict between sources means asking before deciding. An example: if a motion parameter from the guide clashes with a motion token from the DESIGN.md, the dev decides rather than the agent.
A pending asset (applicable to the 3 stacks)
Motion 5 (a looping background video in the hero) demands an institutional video file (/hero.webm + /hero.mp4, with no audio, ~2–4 MB). The YouTube embed of section 3 of the home page serves in no way as a background (it is an iframe rather than a <video>). Until the client delivers the file: the prompts plan an image fallback with a slow zoom (Ken Burns) already, with the component ready to receive the video later.
3. Conformity map — the guide's motion → the home page section
This map is shared by the 3 stacks (it keeps the comparison fair) and it sits inside the prompts already.
| Home page section (content of the current site) | The guide's motion(s) | Note |
|---|---|---|
| Global header | 1 (fullscreen overlay menu) + 16 (CTA hover) | The menu with the current 16 items and dropdowns handled inside the overlay |
| Cookie banner | 2 | Conditional: implement it ready to go; the LGPD texts approved by the dev before activation |
| 1. Hero — Edital 2026 Vamos Juntos | 3 + 4 + 5 | A single timeline (4 replaces the tween of 3); a background video with a Ken Burns fallback |
| 2. "Prazer, nós somos o Instituto +Brasal" | 10 + 12 | A reveal of the text blocks + multi-layer parallax on the institutional photos |
| 3. Video (YouTube) | pattern 7/10 + a facade | A reveal of the frame; the vaxxETydDKQ embed with a facade (thumbnail + play), lazy |
| 4. Eixos de Atuação (3 cards) | 7 | Cascading cards + hover zoom |
| 5. Impact numbers | 9 | Counters: +181.100 itens · 434.100 pessoas · +480 projetos |
| 6. Transparência (5 reports) | 6 (preferred) or 11 | A horizontal timeline 2021→2025 with Embla; the stack records the choice |
| 7. The UN SDGs (4 SDGs) | 8 | A pinned section with step swapping: each SDG is a step |
| 8. Instituições Apoiadas (~27 logos) | 7 (a cascading grid) | A stagger on the grid entrance |
| 9. Parceiros que Somam | 14 | An infinite marquee pausable on hover |
| 10. Map (before the footer) | pattern 10 | A reveal of the google.com/maps?q=...&output=embed iframe, lazy |
| 11. Footer | 16 (+ 14 decorative, optional; 15 if a form exists) | The complete current content |
| Global | 17 adapted · 13 optional | 17: with no i18n (the site is pt-BR only), keep the route fade alone for the future internal pages. 13 (a frame sequence): an optional showpiece; if you use it (an emblem or seal in the impact section, for example), record the decision so it appears in the comparison |
Generic heading and paragraph reveals in the other sections: reuse the pattern of Motions 7/10 (y + autoAlpha, a once ScrollTrigger), as the guide itself advises.
4. The experiment now
Identical inputs across the 3 stacks (DESIGN.md + guide + content + the map above). The variable is the skill layer that supports execution and quality control:
| Stack | Skill layer | The hypothesis tested |
|---|---|---|
| D — GSAP execution | The official GSAP Skills + Impeccable | Technical depth in the guide's dominant engine produces the most precise scroll motions |
| E — Craft & Feel | Emil Kowalski + Motion.dev Animations + Taste | A feel audit (easing, duration, physics) produces the most refined result |
| F — Principles & Choreography | Design Motion Principles + Motion Design Skill (LottieFiles) | Planning and auditing by principles produce the most coherent whole |
A common base for the 3: npx skills add vercel-labs/agent-skills (Next.js quality + design guidelines).
5. STACK D — "GSAP execution" (GSAP Skills + Impeccable)
The guide is GSAP-first (motions 3, 4, 7, 8, 9, 10, 12, 13 and the infrastructure of Prompt 0). GreenSock's official skills raise the ceiling right where the guide demands most: ScrollTrigger, SplitText, timelines, a pin with Lenis, performance. Impeccable enters as the design critic at the refinement.
5.1 Installation
npx skills add vercel-labs/agent-skills
npx skills add greensock/gsap-skills
npx impeccable installRun /impeccable init in no case: the DESIGN.md exists already. Impeccable enters at the refinement alone (critique/polish/detect).
5.2 Sequence
| Order | Action |
|---|---|
| 1 | Check the structure from section 2 (DESIGN.md at the root, the guide in ./referencia/motions-guia.md) |
| 2 | claude in the stack folder |
| 3 | Paste the Master Prompt — Stack D (5.3) |
| 4 | Refinement (5.4) |
5.3 Master Prompt — Stack D (ready to use)
# REDESIGN WITH A REFERENCE — INSTITUTO +BRASAL (HOME) — STACK D: GSAP EXECUTION
## Sources of truth (in this order; a conflict between them means asking me first)
1. DESIGN.md (root): the Instituto's visual identity (colors, fonts, spacing, elements). Follow it to the letter, and invent no tokens.
2. ./referencia/motions-guia.md: the catalog of 17 motions from the reference with implementation prompts. It is this project's motion specification.
3. https://www.brasal.com.br/instituto/: the content (verbatim texts, menu, sections). Immutable.
4. ./referencia/images/ and ./referencia/videos/: visual checking of the reference's feel and rhythm.
## Context
A redesign of the home page in Next.js 15 (App Router) + TypeScript + Tailwind. The HOME PAGE ONLY in this phase.
Content 100% identical to the current site. Identity 100% from the DESIGN.md. Motion 100% per the guide.
## Engine (per the guide — one engine per domain)
- GSAP 3.13+ + @gsap/react + ScrollTrigger + SplitText: the backbone (reveals, timelines, split, pin/scrub).
- Framer Motion (the motion package): micro-UI ONLY (the overlay menu, the cookie banner, form states, CTA hover).
- Lenis: global smooth scroll, synced per Prompt 0 of the guide.
- Embla Carousel: the horizontal timeline and carousels.
Read the guide's "classic traps" section BEFORE writing any component and follow all of them: useGSAP with scope, the 3-step Lenis cleanup, gsap.matchMedia, ScrollTrigger.refresh() after load, autoSplit after the fonts, autoAlpha against FOUC, the hero title animated a single time.
## Step 0 — Infrastructure
Run PROMPT 0 of the guide (./referencia/motions-guia.md) exactly as specified: the SmoothScrollProvider with Lenis + the ScrollTrigger sync + the complete cleanup, lib/gsap.ts with the plugins registered, the usePrefersReducedMotion hook, the layout.tsx updated.
## Step 1 — Inventory and assets
1. Go to https://www.brasal.com.br/instituto/ and extract the REAL content of the home page (verbatim texts, section order, menu items with URLs).
2. Download into ./images/: the logo (https://www.brasal.com.br/instituto/wp-content/uploads/2025/05/cropped-cropped-Logo-Instituto-Brasal_Colorida.png), the institutional images and those of the 3 eixos, the SDGs (4-ods.jpg), the covers of the 5 reports, and ALL the institution and partner logos (brand-*.png, Logo-*.jpg). Generate the favicon from the logo.
3. Motion 5 (the hero background video): the institutional file has yet to be delivered. Implement the component ready for /hero.webm + /hero.mp4 per the guide, with an ACTIVE FALLBACK of an image with a slow zoom (Ken Burns, scale 1.0→1.06 in a smooth loop) using an institutional photo. Swapping to the video should demand adding the files to /public and nothing more.
## Step 2 — Build per section (the content of the current site + the motion from the guide)
Implement the home page in this section order, applying the indicated motion with the matching PROMPT from the guide, parameterized with the real content:
1. Header: logo + the current complete menu (Início · O Instituto [Quem Somos, História, Estrutura Organizacional] · Mantenedores [Brasal Refrigerantes, Incorporações, Veículos, Combustíveis, Energia, Corretora, SIA Park Hotel] · Transparência · Eixos de Atuação · Voluntariado Empresarial · Notícias · Contato) → MOTION 1 (a fullscreen overlay with stagger; the dropdowns become groups inside the overlay) + MOTION 16 on the CTAs.
2. The cookie banner → MOTION 2, a component ready to go but DEACTIVATED by a flag; present me the LGPD text for approval before activating it.
3. The Edital 2026 — Programa Vamos Juntos hero (the current text + the CTA "Confira o Edital 2026 / Clique aqui") → MOTIONS 3+4+5 in a single timeline (4 replaces the tween of 3; the title animates ONCE) + the background per Step 1.3.
4. "PRAZER, NÓS SOMOS O INSTITUTO +BRASAL" (the current paragraph + the CTAs "Mais sobre o Instituto" and "Conheça o Programa") → MOTION 10 on the text blocks + MOTION 12 (multi-layer parallax) on the institutional photos.
5. Video: https://www.youtube.com/embed/vaxxETydDKQ?si=2hoc1F6Fcgi7c5Np → a lazy facade (thumbnail + play, the iframe on the click alone) with the standard 7/10 reveal on the frame.
6. EIXOS DE ATUAÇÃO (3 cards, the current texts, "Saiba+") → MOTION 7 (a cascade + hover zoom).
7. Impact numbers ("Desde a sua criação, geramos uma rede de impacto de"): Doamos +181.100 itens · Beneficiamos 434.100 pessoas · Instituições apoiadas + de 480 projetos · Regiões administrativas no DF, GO e MG → MOTION 9 (the counters). ATTENTION: the current home page carries two divergent counter blocks (65.100/269.100 vs 181.100/434.100); use the desktop values and report the divergence to me at the end.
8. TRANSPARÊNCIA (5 reports with links to the current PDFs) → MOTION 6 (a horizontal timeline 2021→2025 with Embla). If you judge MOTION 11 a better fit for the content, justify it and record the choice.
9. THE UN SDGs (the current text + 4 SDGs with descriptions) → MOTION 8 (a pinned section; each SDG is a step). Test the pin with Lenis carefully, per the guide.
10. INSTITUIÇÕES APOIADAS (~27 logos) → MOTION 7 in a grid with stagger.
11. PARCEIROS QUE SOMAM → MOTION 14 (an infinite marquee pausable on hover).
12. The MAP before the footer: a Google Maps iframe (q="SIA Trecho 1 Lote 630 a 780, Bloco 5, Edifício Praça Capital, Sala 318, Brasília - DF, 71200-011", output=embed, lazy) → the standard 10 reveal.
13. Footer (the current content: Institucional Brasal, (61)3462-8077, the address, institutomaisbrasal@brasal.com.br, Seg–Sex 08:00–18:00, socials, menu, copyright) → MOTION 16 on the links; MOTION 14 decorative only if the DESIGN.md allows it.
14. Global: MOTION 17 ADAPTED (with no i18n, the site is pt-BR only; implement the route transition fade alone, prepared for the future internal pages). MOTION 13 (a frame sequence) is OPTIONAL: if you identify a high-value application (an emblem in the impact section, for example), propose it to me before implementing; otherwise record "not applied" and the reason.
## Cross-cutting rules
- prefers-reduced-motion on EVERY motion (through the Prompt 0 hook), with a dignified static version.
- Animate transform/opacity alone (autoAlpha); no layout thrashing; 60fps on mobile (gsap.matchMedia to simplify animations on small screens).
- No invented content; a doubt about a text means asking me.
- Identity: any color, font or radius outside the DESIGN.md is a bug.
## Delivery and validation
- `npm run dev` with the home page complete and responsive (mobile-first).
- ./images/ organized; the DESIGN.md untouched (if you think it needs to evolve, propose the change rather than applying it).
- A CONFORMITY TABLE at the end: the guide's motion → the section where you applied it → status (implemented / adapted / not applied + reason).
- A list of every ScrollTrigger created (section → effect → cleanup ok).
- A report of the counter divergence.5.4 Refinement — Stack D
1. /impeccable critique
(apply EVERY correction before moving on)
2. "Check the home page against the videos in ./referencia/videos/: for each motion
implemented, is the feel equivalent to the reference's (rhythm, easing,
timeline overlap)? List the differences by severity and fix them."
3. /impeccable polish
4. "GSAP performance pass: cleanup of every ScrollTrigger and of Lenis
(3 steps), gsap.matchMedia for mobile and reduced-motion,
ScrollTrigger.refresh() after images and fonts load, will-change where
needed alone, a test of the Motion 8 pin with Lenis. 60fps on mobile."In the terminal: npx impeccable detect
6. STACK E — "Craft & Feel" (Emil Kowalski + Motion.dev Animations + Taste)
The guide delivers the specification; this stack bets the difference lies in the finish: physics and timing audited (Emil), production patterns in the Framer Motion micro-interactions (motions 1, 2, 15, 16), and Taste as the anti-slop and anti-clone sweep. Taste defines neither the identity (the DESIGN.md rules) nor the structure (the guide rules).
6.1 Installation
npx skills add vercel-labs/agent-skills
npx skills@latest add emilkowalski/skills
npx skills add 199-biotechnologies/motion-dev-animations-skill
npx skills add Leonxlnx/taste-skillA note: no npx motion-ai in this version. The motion package (Framer Motion) gets installed by Prompt 0 of the guide; the motion.dev animations skill covers the patterns. Every skill activates on its own, with no slash commands.
6.2 Sequence
claude in the folder → paste the Master Prompt — Stack E → refinement (6.4).
6.3 Master Prompt — Stack E (ready to use)
The prompt is identical to the Master Prompt — Stack D (5.3), swapping the title and adding the block below right after the "## Engine" section:
# (title) REDESIGN WITH A REFERENCE — INSTITUTO +BRASAL (HOME) — STACK E: CRAFT & FEEL
## The specific directive of this stack (insert it after the "Engine" block)
- Taste Skill dials: DESIGN_VARIANCE per the DESIGN.md (invent no identity), MOTION high, DENSITY per the DESIGN.md.
- On the Framer Motion parts (motions 1, 2, 15, 16), apply the production patterns of the motion.dev animations skill: springs with coherent physics, AnimatePresence with a correct exit, variants with stagger, reduced-motion.
- On EACH GSAP motion implemented, do a feel pass before calling it done: easing and duration judged by the criteria of the animation review skill (no default ease with no justification; timeline overlaps with purpose).
- Anti-clone: the feel follows the reference, the identity follows the DESIGN.md. If any component comes out visually identical to the reference site (beyond the motion grammar), differentiate it while keeping the same school.Everything else (sources of truth, Step 0, Step 1, Step 2 with the 14 entries, cross-cutting rules, delivery with the conformity table) stays identical to 5.3.
6.4 Refinement — Stack E
1. "Review EVERY animation with the review skill: easing, duration, spring
physics (motions 1/2/15/16), the overlaps of the GSAP timelines, scroll
choreography. Compare it against the videos in ./referencia/videos/. List by
severity and fix."
2. "Apply the Taste Skill anti-slop checklist to the whole home page. What
looks generic, fix WITHIN the limits of the DESIGN.md (invent no
new tokens)."
3. "Anti-clone check: list the elements visually identical to the reference
site (beyond the motion grammar) and differentiate each one while keeping the
same school of design."
4. "A final pass on micro-interactions: hover on buttons, cards, overlay menu
items and footer links, all of it with spring physics, no linear CSS
transition."7. STACK F — "Principles & Choreography" (Design Motion Principles + Motion Design Skill)
The bet: with the specification and the identity fixed, the differentiator is the coherence of the whole. Create mode plans the choreography section by section BEFORE the code (using the map from section 3); the 12 LottieFiles principles guide the local decisions; Audit mode with 3 lenses closes the cycle with a report.
7.1 Installation
npx skills add vercel-labs/agent-skills
npx skills add kylezantos/design-motion-principles
npx skills add LottieFiles/motion-design-skillNo UI UX Pro Max (the DESIGN.md exists already) and no React Bits (conformity with the guide). Skills that activate on their own.
7.2 Sequence
| Order | Action |
|---|---|
| 1 | claude in the folder |
| 2 | Paste the Prompt F-1 — Choreography plan (7.3) and review the plan it generates |
| 3 | Paste the Master Prompt — Stack F (7.4) |
| 4 | Refinement (7.5) |
7.3 Prompt F-1 — Choreography plan (paste it first)
Before writing any code, use the motion principles skill in
Create mode to generate the CHOREOGRAPHY PLAN of the home page, in MOTION-PLAN.md:
Inputs (read all of them):
- DESIGN.md (root): the identity and tokens. Non-negotiable.
- ./referencia/motions-guia.md: the 17 motions of the reference with technique and
parameters. Non-negotiable.
- ./referencia/videos/: the reference's feel and rhythm.
- The motion → section map defined for this project:
Header→1+16 · Cookies→2 (conditional) · Hero→3+4+5 · "Prazer, nós somos"→10+12 ·
YouTube video→reveal 7/10 + a facade · Eixos→7 · Numbers→9 · Transparência→6 (or 11,
with a justification) · SDGs→8 (4 steps) · Instituições→7 grid · Parceiros→14 ·
Map→10 · Footer→16 (+14 optional) · Global→17 with no i18n; 13 optional.
The plan has to hold, per section: the narrative intent of the movement (what the
user should feel or understand), the guide's motion applied with the parameters
(duration, easing, stagger, trigger points), how the section connects to the
previous and the following one (transitions with no hard cut), and the behavior under
reduced-motion. Apply the 12 principles of the motion design skill when
justifying each decision. Finish with the global timeline of the scroll
(a map of pins, scrubs and reveals along the page).
Write no code yet.Review the MOTION-PLAN.md, adjust it if needed, and move on then and no sooner.
7.4 Master Prompt — Stack F
Identical to the Master Prompt — Stack D (5.3), with the title swapped and this block inserted after the "## Engine" section:
# (title) REDESIGN WITH A REFERENCE — INSTITUTO +BRASAL (HOME) — STACK F: PRINCIPLES & CHOREOGRAPHY
## The specific directive of this stack (insert it after the "Engine" block)
- The MOTION-PLAN.md (root) is the approved choreography script: implement
each section per the plan. A necessary divergence during the build means
updating the MOTION-PLAN.md with the justification rather than improvising in silence.
- Each local movement decision has to be defensible by one of the 12
principles of the motion design skill; movement with no narrative purpose
gets in in no case.
- The transitions between sections are a first-class requirement: the page
should read as a single piece rather than as 11 isolated animated blocks.Everything else stays the same as 5.3, with one addition to "Delivery and validation":
- The MOTION-PLAN.md updated to reflect what you actually implemented.7.5 Refinement — Stack F
1. "Run the audit of the motion principles skill (Audit mode) on the home page,
with the 3 lenses. Generate the report and fix the high and medium severity
problems."
2. "Coherence check: walk the home page from the top to the footer and evaluate the
SEAMS between sections (the hero→institutional transition, the way the SDG
pin enters and leaves with Lenis, the rhythm between the counters and transparency). The
page should look like a single choreography. Fix whatever clashes."
3. "Traceability: for each item in the MOTION-PLAN.md, point out where it sits
implemented. An item with no implementation means implementing it or removing it from the plan
with a justification. Update the conformity table."8. Comparison protocol (D vs E vs F)
- Isolation: each stack in a clean session, with its own skills alone; an identical DESIGN.md and guide in the 3 folders.
- Identical inputs: the same content, the same DESIGN.md, the same guide, the same motion→section map. The skill layer is the sole variable.
- Comparison artifacts per stack: the conformity table (motion → section → status) · the list of ScrollTriggers with cleanup · the refinement report of the stack itself · the recorded decision about motions 6/11, 13 and the decorative 14.
- A neutral judge:
impeccable critique(installed in D) run on the 3 outputs for a common score; a side-by-side check against./referencia/videos/. - Criteria: content fidelity · conformity with the guide (17 motions) · adherence to the DESIGN.md · feel quality (easing, physics, 60fps mobile) · choreography coherence · accessibility (reduced-motion, the overlay focus trap, keyboard) · performance (LCP with the video/facade, CLS) · code quality (cleanup, the guide's traps avoided).
9. Practical notes
- The hero background video (Motion 5): ask the client for the institutional file (webm + mp4, no audio, ~2–4 MB, 1080p). The Ken Burns fallback leaves the home page presentable without it already.
- The cookie banner (Motion 2): the component delivered ready and deactivated; activate it after approval of the LGPD text and no sooner.
- Motion 8 (the SDG pin) + Lenis: it is the most delicate point in the guide; test it on desktop and mobile before calling it done (the guide warns about it).
- Motion 13 (a frame sequence): an optional showpiece; it demands producing assets (a frame sequence). If no stack applies it, record that; if one does, define the frame count before producing the assets, as the guide advises.
- A YouTube embed ≠ a background video: the
vaxxETydDKQembed is section 3 of the home page (a facade + the iframe on the click); reuse it as a background in no case. - The map:
google.com/maps?q=...&output=embedworks with no API key; load it lazy. - Divergent counters on the current site (65.100/269.100 vs 181.100/434.100): use the desktop values and report them to the client.
10. Next steps
- Copy
DESIGN.mdandmotions-guia.mdinto the 3 folders per section 2; fill in./referencia/imagesand./referencia/videos. - Run D, E and F (D and F carry an extra step: D = no init, straight to the master; F = Prompt F-1 before the master).
- Collect the artifacts from section 8 and run the comparison.
- The winning home page approved → the internal pages with the chosen stack, reusing the Prompt 0 infrastructure and the motion map.
Read next
Motion •
Motion Design for the Web: The Complete Guide
Scroll, text, images and video: the complete catalog of motion techniques for the web, with implementation in Next.js and the cases where each one pays off.
- motion
- scroll
The definitive guide — a Next.js site built around motion and scroll
The scroll foundation that, when missing, keeps the animations from working at all: Lenis, GSAP and Next.js wired in the right order and the mistakes to avoid.
- next.js
- lenis
Infra •
Documentation: deploying a Next.js application with GitHub + Hostinger
Every push becomes a live site with no hosting panel involved: connecting GitHub to Hostinger, the build settings that break and the checks after each deploy.
- deploy
- github


