Let's chat

Brand System

The fullpicture brand system

Every element on this site — every color, shape, typeface, and animation — exists for a reason. This page documents those reasons.

fullpicture is a freelance engineering consultancy. The brand communicates three things: technical rigor, creative craft, and the ability to see the whole picture. We don't do corporate polish. We don't do startup chaos. We build systems that work, and the brand reflects that.

Color

Warm teal, burnt orange, and a lot of cream

The palette is intentionally constrained. Cream dominates (90%+ of surface area). Teal provides structure and trust. Orange creates moments of energy — CTAs, highlights, the things that matter. Salmon and mint exist as softer variants for supporting roles.

The rule: if everything is colored, nothing stands out. Color is reserved for elements that earn it.

Backgrounds

Cream
--cream
#FAF9F6
Primary background. 90%+ of all surface area.
Cream Dark
--cream-dark
#F0EEE9
Subtle dividers, card borders, secondary surfaces.

Teal family (structural)

Teal 800
--teal-800
#115750
Dark sections (track record banner, footer). Gravitas.
Teal 700
--teal-700
#1A7A6E
Primary brand teal. Links, headings with accent, checkmarks.
Teal 600
--teal-600
#239E8F
Mid-range teal. Hover states, secondary accents.
Teal 500
--teal-500
#2DBDAB
Teal 400
--teal-400
#5CD4C5
Shape color. Brighter, used in geometric blocks.
Teal 300 (Mint)
--teal-300
#8FE4D9
Shape color, light accents, success indicators.
Teal 200
--teal-200
#C2F0EA
Very light teal. Tinted backgrounds, subtle highlights.
Teal 100
--teal-100
#E6FAF7
Near-white teal. Section tint at 30% opacity.

Accent family (energy)

Accent (Orange)
--accent
#E85D2D
Primary accent. CTAs, highlights, "the thing that matters."
Accent 80
--accent-80
#EC7D55
Softer orange. Hover states.
Accent 60 (Salmon)
--accent-60
#F19D7D
Supporting warm tone. Shape color, soft highlights.
Accent Light
--accent-light
#FFF0EB
Warm tint for backgrounds.

Neutrals

Black
--black
#0A0A0A
Primary text. Headlines, body copy.
Grey Dark
--grey-dark
#3A3A3A
Strong secondary text.
Grey Mid
--grey-mid
#6B6B6B
Body secondary. Descriptions, metadata.
Grey Light
--grey-light
#B5B5B5
Muted text. Breadcrumbs, placeholders.

Surface area budget — color earns its place.

Cream 75%
White 12%
Teal dark 5%
Teal tint 4%
Orange 2%
Mint 2%

Typography

Space Grotesk does all the work

One typeface, no exceptions. Space Grotesk is geometric enough to feel technical, warm enough to feel human, and bold enough at heavy weights to carry a page without images. The brand relies on typographic scale for hierarchy — not color, not decoration.

Systems that work.
Display — clamp(2.8rem, 8vw, 5rem) · 800 · 0.95 · -0.04em · Hero headlines. One per page, max.
Systems that work.
Headline — clamp(1.6rem, 3.5vw, 2.5rem) · 700 · 1.1 · -0.03em · Section headlines.
Systems that work.
Subheadline — 1.25rem · 600 · 1.3 · -0.02em · Card titles, subsection headers.
Tech that works for you, built by someone who gives a damn.
Body — 1rem–1.1rem · 400–500 · 1.6–1.7 · normal · Running text. The workhorse.
Section Label
Small / Label — 0.75rem · 600 · 1.4 · 0.15em (uppercase) · Section labels, metadata, tags.
Breadcrumbs, footnotes, captions.
Tiny — 0.82rem · 400 · 1.4 · normal · Breadcrumbs, footnotes, captions.

Bold type carries the message. Color supports. Decoration is optional.

Headlines are weight 700–800, near-black, tight letter-spacing. Body is 400–500, comfortable reading. The gap between them is the hierarchy.

Shapes

16 shapes, 4 colors, infinite configurations

The geometric shape system is fullpicture's most distinctive brand element. Playful blocks with mixed radii — domes, drops, circles, squircles, leaves, flowers — that combine into larger compositions. They're not icons. They don't represent specific things. They're building blocks — atoms that gain meaning through assembly.

The system was designed to feel hand-crafted but systematic. Every border-radius is intentional. Every combination is considered. The shapes live at the intersection of engineering precision and creative play — which is exactly where fullpicture operates.

Foundational (4) — the favicon quad

.sh-circle
.sh-squircle
.sh-leaf
.sh-dome-top

Directional (8)

.sh-asym-tl
.sh-asym-tr
.sh-asym-bl
.sh-asym-br
.sh-drop-point-bl
.sh-drop-point-br
.sh-drop-point-tl
.sh-drop-point-tr

Organic (2)

.sh-flower
.sh-flower-alt

Directional Domes (3)

.sh-dome-bottom
.sh-dome-left
.sh-dome-right

Shape × Color matrix (favicon quad × 4 brand colors)

Orange
Teal 700
Mint
Salmon
Drop-point-bl
Squircle
Leaf
Dome-top

Semantics

Shapes are atoms. The grid is the molecule.

Individual shapes don't carry fixed meaning — they're interchangeable building blocks. What carries meaning is how they're assembled. The core brand metaphor is the transition from scattered to organized: chaos becomes system, potential becomes delivery, fragments become fullpicture.

The Four Primaries

The favicon establishes the canonical quartet. These four shapes appear in the logo mark and carry the most brand weight. When you need a representative set of four, you use these.

Position Shape Color Metaphor
Top-left Drop-point-bl Orange (#E85D2D) Direction, initiative — the pointed shape suggests movement and starting
Top-right Squircle Teal 700 (#1A7A6E) Structure, engineering — the most "built" shape, stable, architectural
Bottom-left Leaf Mint (#8FE4D9) Growth, adaptation — organic, evolving, the living system
Bottom-right Dome-top Salmon (#F19D7D) Protection, delivery — the capstone, what ships to the user

Note: These metaphors are suggestive, not prescriptive. The drop-point doesn't "mean" initiative the way a logo means a company. The association works because of the shape's visual weight and directionality, not because of a legend you need to memorize. If you're building with these shapes and the metaphor helps — use it. If it doesn't — the shapes still work as pure visual elements.

Assembly Patterns

1. Scattered (chaos state)

Unstructured potential. The problem before fullpicture. Used in: hero animation “without fullpicture” state, philosophy “day-rate” lane.

2. 2×2 Grid (the fullpicture)

Delivered system. Coherence. The brand mark. Used in: favicon, hero “with fullpicture” state, offering animation endpoints, pricing page.

3. Single Shape as Bullet

A principle, a phase, an impact point. The shape identifies without elaborating.

Used in: principles section, case study phase indicators, impact metrics.

4. Paired Shapes (identifier)

A lightweight identifier for a content unit. Used in: FAQ tiles, case study cards on pricing page.

5. Floating / Decorative

Brand atmosphere. Background texture. No semantic meaning — pure warmth. Used in: CTA sections, case study header areas.

The Core Metaphor

The transition from scattered to assembled is the brand's visual thesis.

Four shapes scattered = "the problem." Potential energy. Things that could work but don't yet.
Four shapes in a 2×2 grid = "fullpicture." Kinetic energy converted to structure. Things that work.

This transition plays out in the hero animation (chaos → organized), in the philosophy section (day-rate fragments → outcome-based system), and implicitly every time the favicon loads. The 2×2 grid IS the brand mark.

BEFORE — Scattered

AFTER — Assembled

Scattered (chaos) vs assembled (2×2 grid). The visual thesis of the brand.

Scroll-triggered transition (animates when in view)

IntersectionObserver adds .assembled at 30% visibility. Shapes snap to grid via CSS transitions.

Why Not Fixed Meanings?

A system with 16 shapes and 4 colors creates 64 shape-color combinations. Assigning fixed, memorable meanings to 64 elements is impossible — nobody remembers that "teal-700 drop-point-br means API integration."

Instead, meaning emerges from context: In the hero, shapes near the BUILD label represent build capabilities. In a case study, shapes next to phase titles mark progression. In the principles section, shapes are just distinguished bullets.

The same squircle can be "backend engineering" in one context and "Phase 2 indicator" in another. This isn't a bug — it's how real visual systems work. A red circle means "stop" on a road sign and "record" on a microphone. Context determines meaning.

Components

The recurring pieces

These components appear across pages. Their styling is fixed — don't reinvent them.

6a. CTA Button (Primary) — Background: var(--accent). Color: white. Border-radius: 50px. Padding: 14px 32px. Hover: slight darken. Weight 600.
6b. Text Link CTA — Color: var(--teal-700). Weight 600. Arrow suffix. Hover: var(--accent). No background, no underline.

HOW I WORK

6c. Section Label — 0.75rem. Weight 600. Uppercase. Letter-spacing 0.15em. Color: var(--grey-mid). Margin-bottom 12px.

Card title

Card content goes here. Used for sidebar cards, testimonial cards, FAQ tiles.

6d. Card — Background: white. Border: 1px solid var(--cream-dark). Border-radius: 16px. Padding: 28–32px. Shadow: 0 1px 3px rgba(0,0,0,0.04).

Dark section headline

White body text on the dark teal background. Used for high-impact areas like the track record banner, impact metrics, and the footer.

6e. Dark Section — Background: var(--teal-800). Color: white. Padding: 64–80px vertical.

Tinted body text on the light teal background. Used for the principles section to create subtle differentiation from cream.

6f. Tinted Section — Background: var(--teal-100) (#E6FAF7). Used for: principles section. Subtle differentiation from cream.
High StickersPlanctonKoudetatGuest SuiteAsmodee
6g. Logo Strip — Client names as text. Weight 500. Color: var(--grey-light). Separated by generous horizontal spacing. Scrollable on mobile.
"

Nicolas delivered exactly what we needed. He understood the problem before we did. The system he built is now core to our operations.

Jane Doe

CEO, Example Co

6h. Testimonial Card — Large decorative ". Quote italic, 1.1rem. Bold pull quotes within at weight 700. Author: name + role.

Shape bullet title

A short description that accompanies the shape bullet. Used to introduce a key point or list item with visual emphasis.

6i. Shape Bullet — Shape: 20–24px, any primary shape, in a brand color. Gap: 16px. Text: weight 600 for title, weight 400 for description.

Site Components

The structural pieces

These partials form the site skeleton. They appear on every page via @@include and should never be rebuilt inline. The header and footer are visible at the top and bottom of this very page.

CTA Section

Let's talk about what you're building.

30-minute call. No pitch deck. Just tell me what you're trying to build — I'll tell you how I'd approach it.

High StickersPAJ by ImparatoIris GaleriePlancton by PimpantKoudetatCHU NantesGuest SuiteAsmodeeRobin des Fermes #1Meme pas CapDrakkarHigh StickersPAJ by ImparatoIris GaleriePlancton by PimpantKoudetatCHU NantesGuest SuiteAsmodeeRobin des Fermes #1Meme pas CapDrakkar
Full-width conversion block with Cal.eu booking button, optional secondary link, decorative shapes, and scrolling logo ticker.

AI Toolbar

Auto-injected into every content page. “Copy as Markdown” button, “Open in” dropdown (Claude, ChatGPT, Perplexity), and toast notification.

Content Components

Patterns for content pages

These components are used across guides, comparisons, and resource pages. They follow the same shape-and-color language but are tailored for long-form reading.

6j. Breadcrumb — Right-aligned, 0.82rem, weight 500. Left-pointing ‹ arrows. Links: grey-light → grey-mid on hover. Current: grey-dark, weight 600.
6k. Meta Pills — Pill shape: border-radius 20px, 0.82rem. Each variant has its own tint.

Three variants:
  • Author — avatar + name
  • Reading time — clock icon + duration
  • Date — calendar icon + month/year

This guide covers tools like CursorCursor and BBolt for rapid prototyping.

6l. Tool Pills + Popovers — Inline pill with circle icon (image or letter fallback). Border: cream-dark. Hover: popover with name, description, URL. Font-size: inherit.
Builder's note

This is an opinionated take from the author. Use sparingly for first-hand experience.

Warning

Highlights a common pitfall or risk the reader should be aware of before proceeding.

6m. Callouts — White card, border-radius 16px, 24px padding. Label: 0.75rem uppercase.

Two variants:
  • Opinion (teal) — “Builder’s note” for first-hand experience
  • Warning (accent) — Pitfalls and risks

TL;DR

The key takeaway lives here. Bold text uses the accent color to draw attention to the most important point on the page.

6n. TL;DR Block — Background: teal-900. Title: 0.72rem uppercase, muted teal. Body: white at 88% opacity. Strong text: accent salmon (#E8967D). Padding: 40px 44px.

Custom Build

"I need full control over every pixel."

Best when you have specific UX requirements and a technical team.

SaaS Platform

"I want it working by Friday."

Best when speed matters more than customization.

Hybrid Approach

"Start simple, customize later."

Best when you want quick wins with room to grow.

No-Code

"The team should own it."

Best when non-technical stakeholders need direct control.

6o. Decision Cards — 2×2 grid on white cards. Each has a shape bullet (12px), bold title, teal quote bubble (border-radius: 12px 12px 12px 2px), and description text.
Under the hood: How this actually works

This expandable block is a native <details> element. The chevron rotates 90° on open via CSS transition. Teal color family: light teal BG, dark teal icon squircle, teal border.

Use for technical implementation details that only some readers want.

The fine print: What the numbers don’t tell you

These cost estimates assume stable API pricing, which changes quarterly. Factor in a 15–20% buffer for price fluctuations and usage spikes.

Use for caveats, limitations, and edge cases the reader should know about. Amber color family signals caution.

How it works: The data pipeline

Data flows from the source API through a normalisation layer, into a queue, then into the destination system. Each step logs independently so failures are isolated and retryable.

Use for architecture overviews and system-level explanations. Teal color family (informational).

The trade-off: Speed vs. accuracy

A lightweight model handles 95% of cases in under 200ms but misclassifies edge cases. A premium model gets 99.5% accuracy but costs 10× more and adds 2 seconds of latency. Most teams should start light and escalate selectively.

Use for pros/cons analysis and decision trade-offs. Amber color family signals caution.

Deep dive: Why spreadsheets fail at scale

The fundamental issue is that spreadsheets are flat. A customer with 15 orders becomes 15 rows of duplicated data, or a fragile manual reference to another tab. Relational databases solved this in 1970. The fact that most businesses still run on spreadsheets is not a technology problem — it is an awareness problem.

Use for extended background, research deep-dives, or historical context. Accent (orange) color family signals exploration.

6p. Expandable Detail Block — Native <details> with chevron rotation. Icon in a 26px squircle box (border-radius: 6px). Wrapper border-radius: 10px. Trigger padding: 10px 14px.

Three color families:
  • Teal (informational) — Under the hood, How it works
  • Amber (cautionary) — The fine print, The trade-off
  • Accent (exploratory) — Deep dive
Approach Speed Flexibility
Custom build Slow (weeks) Total control
SaaS platform Fast (days) Limited
Hybrid Medium Balanced

Custom build

Speed Slow (weeks)
Flexibility Total control

SaaS platform

Speed Fast (days)
Flexibility Limited

Hybrid

Speed Medium
Flexibility Balanced
6q. Comparison Table — Desktop: 0.88rem striped table with hover tint. Mobile: stacked cards with label-value rows. Toggle above to preview both layouts.

Have a process like this?

I built both of these for the same client. If your team has manual work that should not require a human, let’s talk.

6r. Inline CTA — Read-interrupt card placed ~60–70% through content pages.

White card, 1px border, 16px radius. Headline: 1.25rem/800. Body: 0.92rem grey-mid. Accent pill button.

Brand shapes float with icta-float keyframes (6s/5s/7s/5.5s staggered). Shapes hidden on mobile. One per page, copy contextualised to the surrounding content.
6s. Filter Pills — Toggle above to switch between layouts.

Two responsive modes:
  • Desktop — chip row with dropdown popovers, x-icon reset
  • Mobile — bottom sheet with collapsible sections, option chips, count + apply footer

The floating TOC island is visible on this page and on all content pages. It collapses to a pill showing the current section, and expands to reveal all sections with a progress bar. See toc.css for the full implementation.

6t. TOC Island — Floating pill with blur backdrop. Collapsed: section name + chevron. Expanded: full list with progress bar. Spring easing. See toc.css.
Choose this when software is the business and you can invest months in hiring and onboarding.
6u. Verdict Strip — Static sibling of the Expandable Detail Block. Same container treatment (teal-tinted BG, 1px teal-200 border, 10px radius) but no chevron and no collapsible content.

Icon squircle + label row. Icon: Lucide compass. Text: 0.88rem/600 in teal-700.
One per model subsection as a “when to choose this” anchor.
19% slower
METR trial
Experienced devs took longer with AI tools on complex codebases
41% higher churn
GitClear analysis
AI-generated code discarded within two weeks vs human-written
33% trust
Stack Overflow 2025
Developers who trust AI output accuracy
45% say harder
Stack Overflow 2025
Debugging AI code takes more time, not less
6v. Stat Banner — Dark teal (--color-teal-900) container with 4-column grid (single-column on mobile).

Each stat column has a colored 2px top-border accent (coral, teal-500, salmon, teal-300).
Number: clamp(1.6rem, 3vw, 2.2rem)/800 white. Label: 0.72rem/700 uppercase. Desc: 0.78rem muted teal.
Mirrors the casestudy-metrics pattern from case study pages.
Proposal review checklist
  • Named team and actual day-to-day operators
  • Explicit assumptions, exclusions, and dependencies
  • Milestones with clear definition of done
  • Testing, QA, release plan, and post-launch support
6w. Checklist Card — White card (16px radius, 28px/32px padding) with uppercase label (0.72rem/700, grey-mid).

List items use empty checkbox squares (16×16px, 2px teal-700 border, 3px radius) via ::before instead of bullet dots.
Designed for screenshot-able, printable checklists. Pair with an expandable below for detailed explanations.
Altitude 3 vs. 4 boundary
OneSignal vs Knock
Which notification infrastructure for your mobile app?
Coming soon
Altitude 2 → 3 transition
Expo Push vs OneSignal
When to graduate from built-in push to a platform.
Coming soon
6x. Deeper / Resource Link Cards — Used for “go deeper” child pages and cross-page bridging sections.

White card (12px radius, 1px #e5e7eb border). Hover: teal-400 border, 2px lift, soft shadow. Title: 1.05rem/700. Desc: 0.88rem grey-mid. Optional badge: 0.68rem/600 uppercase teal on teal-100 BG.
Linked cards (a.deeper-card) show a right-aligned → arrow vertically centered. Single card spans full width via :only-child. Grid: 2-col, 1-col on mobile.

Partials: deeper-cards-open/close, deeper-card (linked), deeper-card-soon (coming soon). Badge param accepts raw HTML (<span class=deeper-card-badge>...</span>) or omit for no badge.
Auto-injected by <!-- inject:resource-links --> or <!-- inject:go-deeper --> from resources.js data.

Judgment and honesty

1
Tell me about a project that went wrong.

This reveals honesty, pattern recognition, and whether they take responsibility. The best partners have war stories — and have learned from them.

2
What would you challenge or cut before building?

The best partners push back. If they agree with everything, they’re either not listening or not experienced enough to spot risks.

How the work actually happens

3
Who exactly will do the work day to day?

Sales teams pitch senior people. You want names, roles, and a commitment that the people you meet are the people who build.

4
How do you handle scope changes after work starts?

Scope always changes. What matters is whether the process handles it gracefully or pretends it won’t happen.

Ownership and continuity

5
What happens after launch?

A good partner has a clear handoff plan. A great one builds the system so your team can own it without them.

6
Can I see the code and own the repo from day one?

If the answer is no, walk away. You should own every line of code from the start, not at the end of a contract.

6x. Question Groups — Numbered expandable questions grouped by theme. Each group has a colored label and matching expandable blocks.

Three color families:
  • Teal (default) — Judgment, assessment
  • Amber — Process, logistics
  • Accent — Ownership, continuity

Spacing

Three breathing zones

Not everything gets the same spacing. The page uses three rhythm zones:

Tight (hero, headers): 20–32px between elements. Dense, energetic, confident.
Medium (story, body sections): 48px between blocks. Comfortable reading rhythm.
Generous (evidence, transitions): 64–80px between sections. Room to absorb before moving on.

The transition between zones is the page's heartbeat. A section that's all tight reads as frantic. All generous reads as empty. The mix creates breathing.

Block 1 — Tight (20–32px)
Block 2
Block 3
Block 1 — Medium (48px)
Block 2
Block 3
Block 1 — Generous (64–80px)
Block 2
Block 3
Token Value Usage
Section gap80–120pxBetween major page sections
Block gap (generous)64pxBetween evidence blocks, before/after dark sections
Block gap (medium)48pxBetween body content blocks within a section
Element gap (tight)20–32pxHero elements, card internals, header stacks
Component padding (card)28–32pxInternal card padding
Component padding (section)64–80px verticalPadded sections (dark, tinted)

Motion

Smooth over flashy

Animation serves comprehension, not decoration. Things move to show relationships — chaos becoming order, a tab revealing content, a card lifting on hover. If an animation doesn't help someone understand something, it shouldn't exist.

  • Spring physics over linear easing. Elements should feel like they have mass.
  • GPU-accelerated transforms only. Animate transform and opacity. Never animate width, height, top, left, or margin.
  • Meaningful transitions. The hero animation tells a story (chaos → system). Tab switches show content replacing content. Hover states confirm interactivity.
  • Duration: 200–400ms for micro-interactions (hover, click). 600–1000ms for narrative transitions (hero toggle, tab switch). Nothing over 1.2s.
  • No autoplay loops. Animations trigger on interaction or scroll-into-view, then settle. The page at rest is the page at its most confident.

Offering animation specimens

Build: Shapes fly in from outside the frame and snap into the 2×2 grid. Assembly.

Lead: Shapes are already placed. Connection lines trace between them. Coordination.

Lead + Build: Assembly first, then connection lines appear. The full service.

Solve: A path reveals shapes at waypoints, then snaps them into the grid. Discovery → system.

These animations use the same four shapes and same endpoint (2×2 grid). The animation is the differentiator, not the shapes. The destination is always "fullpicture" — how you get there is the service model.

Build — shapes fly in and snap to grid
Lead — shapes placed, connection lines trace
Lead + Build — assembly then connection
Solve — path reveals shapes at waypoints

Case Cards

The modular case study card

The .case-card is a single component with a fixed base (header) and optional supplement slots that snap together in different combinations depending on context. The same component serves the index page, the full case study page, and the pricing page — only the slot configuration changes.

Anatomy — the base + 7 slots

Every card starts with a Header (logo + name, always present). On top of that, optional slots are stacked vertically in a fixed order:

Slot Class Purpose
V — Visual.case-card-visualScreenshot or decorative shapes. Sits above the header.
H — Header.case-card-headerLogo + name + optional link/status. Always present.
M — Mission.case-card-missionOne-line project description.
Q — Quote.case-card-quoteClient testimonial with attribution.
O — Offering.case-card-offeringService type icon (Build / Lead / Lead+Build / Solve).
C — Client.case-card-clientAvatar + name + role attribution row.
F — Footer.case-card-footerIndustry tag + optional ongoing dot indicator.
K — KPIs.case-card-kpisDark strip with 2–4 metric columns. Always last.

Slot progression — from minimal to maximal

The card grows as you add slots. Each row below adds one more supplement to demonstrate how the component scales.

H

High Stickers
Read more →

H + M

High Stickers
Read more →

Rebuilding a 10-year legacy e-commerce app with a deep customization engine

H + M + Q(c)

High Stickers

Rebuilding a 10-year legacy e-commerce app with a deep customization engine

He ended up costing me the least overall, due to his speed and effectiveness.
Emmanuel
Emmanuel, CEO @ High Stickers

H + M + C + F

High Stickers
Read more →

Rebuilding a 10-year legacy e-commerce app with a deep customization engine

Emmanuel
Emmanuel CEO @ High Stickers

H + M + O + K

High Stickers

Rebuilding a 10-year legacy e-commerce app with a deep customization engine

Build
~3 yrsengagement
10K+customers

H + M + Q(c) + O + K

High Stickers
Read more →

Rebuilding a 10-year legacy e-commerce app with a deep customization engine

He ended up costing me the least overall, due to his speed and effectiveness.
Emmanuel
Emmanuel, CEO @ High Stickers
Build
~3 yrsengagement
10K+customers
30K+orders migrated
Progressive slot stacking — from minimal (H only) to maximal (H + M + Q(c) + O + K). Each row adds one more supplement.

Selected integration: Index page — V + H + M + C + F

Used on /case-studies/. Visual showcase with mission, client attribution, and industry footer. Quote variant C for the tinted inset style. The visual slot accepts either a screenshot (img) or decorative shapes (.case-card-visual--shapes) for placeholder cards.

High Stickers website
High Stickers
Read more →

Rebuilding a 10-year legacy e-commerce app with a deep customization engine, pair-programming directly with the founder

Emmanuel
Emmanuel CEO @ High Stickers
Index page card with visual showcase, client attribution, and industry footer.

Selected integration: Full card — H + M + Q(c) + O + K

Used in the "Explore more" sections at the bottom of individual case study pages. Quote variant C (tinted background). Offering shapes match the final animation state for each service type. KPIs anchor the bottom in a dark strip.

High Stickers
Read more →

Rebuilding a 10-year legacy e-commerce app with a deep customization engine, pair-programming directly with the founder

While he may have had the highest hourly rate I've ever paid, he ended up costing me the least overall, due to his speed and effectiveness.
Emmanuel
Emmanuel, CEO @ High Stickers
Build
~3 yrsengagement
10K+customers
30K+orders migrated
Full card with all slots active — quote variant C (tinted), offering shapes, and KPI strip.

Offering cards

Each offering type is represented by a card with its animated shape group. These cards link to the corresponding section on the pricing page.

Four offering types as interactive cards linking to the pricing page. Each card features its animated shape group at 42px scale.

Ongoing indicator

Active collaborations show a pulsing green dot in the card footer. Hover reveals a tooltip. Uses @keyframes pulse-ongoing with a 2s ease-in-out loop.

High Stickers
Read more →

Rebuilding a 10-year legacy e-commerce app with a deep customization engine

Ongoing indicator — pulsing green dot in the card footer. Hover reveals tooltip. Uses @keyframes pulse-ongoing with a 2s ease-in-out loop.

Agency badge — logo swap

When work was delivered through an agency, the logo slot becomes an interactive .agency-badge. Two same-size logo pills are stacked: the client logo on top, the agency logo tucked behind offset 6px down-left — just enough of its edge peeking out as a curiosity hook. Clicking swaps the deck (300ms ease-out) and reveals a popover with agency details. Dismisses on outside click or Escape.

H + M + F (via Drakkar)

Robin des Fermes

Led 2 junior devs to ship a Swiss farm marketplace v1, then returned to build cross-platform data sync with their backoffice

H + M (direct — for comparison)

Plancton by Pimpant

Shipping 1,000+ personalized kids' science magazines for Christmas, then maintaining and evolving the platform

Agency badge with popover (left) vs direct client card (right). Click the stacked logos to swap and reveal agency details.

Resource Cards

The content index card

The .ri-card is used on the resources index page to link to guides and comparisons. It follows the same white-card-on-cream pattern as case cards but is simpler: title, description, optional tool icons, and metadata pills.

Anatomy — guide card vs comparison card

Guide cards show author + reading time + date. Comparison cards add a row of tool icons before the metadata. Both hover to teal border with a slight lift.

Guide

How to choose a technical partner for your startup

A framework for evaluating freelancers, agencies, and CTOs-for-hire when you need to build but can't recruit yet.

Nicolas Nicolas Filzi 11 min Mar 2026

Comparison (with tool icons)

Cursor vs Bolt vs Lovable — which AI builder fits your project?

A side-by-side breakdown of three AI-first coding tools, tested on real client projects.

Cursor
B
L
Nicolas Nicolas Filzi 14 min
Resource cards — Guide (left) and Comparison with tool icons (right). Toggle above to see mobile stacked layout.

Card styling rules

Container: White background, 1px border (#e5e7eb), border-radius 12px, subtle shadow (0 1px 3px rgba(0,0,0,0.04)).

Hover: Border transitions to teal-400, translateY(-2px) lift, enhanced shadow.

Title: 1.05rem, weight 700, letter-spacing -0.02em. Padded 16px 20px from top/sides.

Description: 0.88rem, weight 400, grey-mid. flex:1 so it pushes metadata to the bottom.

Tool icons: 32×32px squares, border-radius 8px, with centered logo images (14px height) or bold letter fallback.

Metadata: Uses the shared .meta-pills component. Separated from body by a 1px #f0f0f0 top border.

Data-Driven Components

Inject-rendered patterns

These components are rendered at build time by site-plugin.js from data in src/data/cards.js and src/data/interactive-diagrams.js via <!-- inject:KEY --> markers.

Budget Cards

2h lag → 2 min
Lead response

CRM entry, auto-reply, team notification. When a lead comes in, the clock starts.

€12.90 → €2–3 per invoice
Invoicing

Generation and follow-up reminders. At 200 invoices per month, the savings add up fast.

Same checklist, every time
Client onboarding

Folder creation, welcome emails, access provisioning. Make the computer do the checklist.

5+ hrs/week on a 15-person team
Meeting follow-ups

Action item extraction and assignment. 20 minutes per meeting adds up across a team.

Same structure, different numbers
Weekly reporting

Data aggregation and formatting. If only the numbers change, this is automation at its most straightforward.

Pill labels, bold title, description. <!-- inject:cards KEY --> with type budget-card.

PF Cards

Frequency

How often does this task happen? Daily tasks compound savings fastest.

Time

How long does it take each time? People underestimate — go time it.

Error Cost

What happens when someone does it wrong? Billing errors cost more than typos.

Lucide icon, title, description. <!-- inject:cards KEY --> with type pf-card.

Proof Cards

Guest Suite

A CEO’s fast-moving ideas shipped as production tools every 2 weeks — no overhead, just results.

Mini case-card with logo, name, industry tag. <!-- inject:cards KEY --> with type proof-case.

Interactive Diagram

What is your biggest risk right now?
Decision-tree navigator — clickable options reveal next question. <!-- inject:interactive-diagram KEY -->.