Framer Motion is the animation backbone of Digital Alchemy. It drives everything from the site-wide page transition blur-fade to the individual spring-bounce of bookshelf items and the infinite rotation of the crystal ball’s inner orb. All animations are declared directly in JSX using theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/digital-alchemy/llms.txt
Use this file to discover all available pages before exploring further.
motion.* component API — no CSS @keyframes required.
Page transition (Layout-level)
The most prominent animation is the blur+opacity fade that plays on every route change. It lives in theLayout component and wraps all page content:
Component entrance animations
Most sections and cards use a simple fade-up entrance — the content starts slightly below its final position and transparent, then slides up as it fades in:TarotCard flip
TheTarotCard component on the About page uses a 3D card flip powered by Framer Motion’s rotateY animation with a spring physics config:
stiffness: 60 and damping: 15 values produce a gentle, slightly bouncy flip that feels physical without being distracting.
Bookshelf spring bounce
On the Skills page, theBookshelf component renders skill books that spring into place with a bounce. Books are staggered so they pop in one after another:
bounce: 0.4 is the shorthand for a spring that overshoots its target slightly — perfect for books snapping upright onto a shelf.
CrystalBall ambient animation
TheCrystalBall component on the Projects page uses an infinite looping animation to create a breathing, rotating inner orb that gives the ball a sense of life:
SpellForm rune particles
TheSpellForm contact component releases rune particles when a spell (message) is cast. Each particle is animated along a random upward trajectory and loops infinitely while the form is active:
delay so they don’t all trigger simultaneously, creating a natural staggered stream effect.
Nav active indicator
The navigation active-state dot uses Framer Motion’s shared layout animation to slide smoothly between nav items without requiring any manual position calculation:layoutId="nav-indicator", Framer Motion automatically animates the dot from the previous active item to the new one whenever the route changes. The transition is handled entirely by Framer Motion’s layout engine.
Animation summary
| Component | Pattern | Key props |
|---|---|---|
| Page transition | Blur + opacity fade | duration: 0.6, ease [0.22, 1, 0.36, 1] |
| Section entrances | Fade-up | y: 20 → 0, staggered delays |
| TarotCard | 3D flip | rotateY, spring stiffness: 60, damping: 15 |
| Bookshelf | Spring bounce | type: spring, bounce: 0.4 |
| CrystalBall | Ambient scale + rotate | 20s, repeat: Infinity |
| SpellForm particles | Float-up loop | y: -100, 2s, repeat: Infinity, random delay |
| Nav indicator | Shared layout | layoutId="nav-indicator" |