Skip to content

Rebuild the site: positioning first, internals in docs - #76

Closed
martian56 wants to merge 3 commits into
mainfrom
site-design
Closed

Rebuild the site: positioning first, internals in docs#76
martian56 wants to merge 3 commits into
mainfrom
site-design

Conversation

@martian56

@martian56 martian56 commented Jul 25, 2026

Copy link
Copy Markdown
Owner

The old page led with implementation: five file magics, a byte for byte page dump, a tour of six crates. It read as documentation with a nav bar, and it asked a visitor to care about the internals before telling them what QuantaDB is.

I looked at how Turso and Neon actually structure their homepages. Both open with one positioning sentence, then proof, then how to start, and keep the internals in docs where someone goes deliberately. This follows the same shape:

  • what it is, in one line
  • why these benchmarks are worth trusting, which is the honest differentiator here
  • the numbers against PostgreSQL, MySQL and MariaDB, including the write column we lose
  • a minute to first query
  • status, said plainly, including no auth and no replication

Design follows the Kraken system: white canvas, purple brand, near black type, 12px button radius, whisper level shadows. The logo is repainted purple to match, and the icon set regenerated from it.

The version badge is gone. Verified in a browser at 1280px rather than assumed; two layout bugs showed up that way and are fixed, an orphaned metric card and a hero column that was centring against the rest of the page.

Summary by CodeRabbit

  • New Features

    • Introduced a redesigned landing page with updated branding, messaging, metrics, benchmarks, getting-started instructions, and project status.
    • Added prominent navigation, calls to action, benchmark tables, SQL examples, and milestone indicators.
    • Added responsive layouts for navigation, metrics, content cards, tables, and footer sections.
  • Style

    • Replaced the previous visual design with a clean purple, white, and pastel theme.
    • Updated typography, buttons, cards, code blocks, spacing, and responsive behavior.

Takes the transferable parts of the reference system: one accent
keyword highlighted inside the headline, uppercase button labels with a
tracking lift, and a drawn divider above the footer instead of a rule.

The accent is the cyan already in the palette rather than a new colour,
and one chip per viewport keeps it doing work.
@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@martian56, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 41 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9d8f636a-8519-4a6a-aefd-68e67114cfdb

📥 Commits

Reviewing files that changed from the base of the PR and between af7bc5c and 3e5e856.

📒 Files selected for processing (2)
  • web/index.html
  • web/style.css
📝 Walkthrough

Walkthrough

The landing page is substantially rewritten with new metadata, navigation, hero content, benchmark and quickstart sections, status milestones, calls to action, footer links, and a white-and-purple responsive styling system.

Changes

Landing page redesign

Layer / File(s) Summary
Page foundation and hero
web/index.html, web/style.css
Updates page metadata, navigation, hero copy, metrics, design tokens, typography, and button styling.
Content bands and status UI
web/index.html, web/style.css
Adds consolidated explanatory, benchmark, quickstart, and status sections with card, table, code-block, and step-list styling.
Closing sections and responsive layout
web/index.html, web/style.css
Replaces the closing and footer structure, removes the animated end-of-page script, and updates responsive navigation, metrics, and table rules.

Estimated code review effort: 3 (Moderate) | ~30 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning It covers the motivation and high-level changes, but it misses the required 'How it was checked' checklist and a clear reviewer-notes section. Add the template sections, especially a concrete 'How it was checked' checklist and any reviewer focus notes, or explain why they are not applicable.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title matches the main change: the homepage was rebuilt around product positioning instead of implementation details.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch site-design

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Bench report

✅ All profiles within the ±10% noise band of main.

Baseline: main @ same runn. Cells read baseline → this PR. Verdicts need more than ±15% to leave the noise band.

linux-arm64-full

workload ops/s Δ ops/s read p99 ms write p99 ms write p99.9 ms
reads 31402 → 30867 ⚪ -1.7% 0.22 → 0.23 - -
mixed 14634 → 13141 ⚪ -10.2% 0.45 → 0.48 11.73 → 20.47 29.31 → 30.93
writes 6455 → 5723 ⚪ -11.3% - 4.42 → 8.48 26.47 → 28.60

linux-x64-1cpu-1gb

workload ops/s Δ ops/s read p99 ms write p99 ms write p99.9 ms
reads 13004 new 0.44 - -
mixed 7623 new 0.67 23.07 28.88
writes 4179 new - 10.89 25.03

linux-x64-2cpu-2gb

workload ops/s Δ ops/s read p99 ms write p99 ms write p99.9 ms
reads 14702 new 0.43 - -
mixed 10090 new 0.56 5.10 19.45
writes 5098 new - 2.50 14.48

linux-x64-full

workload ops/s Δ ops/s read p99 ms write p99 ms write p99.9 ms
reads 24799 → 24748 ⚪ -0.2% 0.27 → 0.28 - -
mixed 14187 → 14214 ⚪ +0.2% 0.44 → 0.43 4.02 → 4.03 18.40 → 18.13
writes 6090 → 6088 ⚪ -0.0% - 2.18 → 2.28 12.73 → 12.61

windows-x64-full

workload ops/s Δ ops/s read p99 ms write p99 ms write p99.9 ms
reads 35296 → 35854 ⚪ +1.6% 0.25 → 0.25 - -
mixed 6329 → 6010 ⚪ -5.0% 0.25 → 0.25 30.22 → 29.25 94.47 → 132.11
writes 551 → 579 ⚪ +5.1% - 30.19 → 24.22 47.79 → 51.82

Field reference

All engines in identical containers, same driver, measured 2026-07-24 @ ba0ec39. A different harness than the tables above, so read this as standing, not as this PR's delta.

linux-arm64-full

engine reads mixed writes
quantadb 17978 12420 (27ms wp99) 6449 (19ms wp99)
postgres18 15227 14723 (2ms wp99) 9923 (1ms wp99)
mariadb114 4221 4437 (8ms wp99) 6666 (3ms wp99)
mysql84 4258 4394 (9ms wp99) 4274 (4ms wp99)

linux-x64-1cpu-1gb

engine reads mixed writes
quantadb 19419 10854 (29ms wp99) 5170 (39ms wp99)
postgres18 10196 8580 (43ms wp99) 5912 (46ms wp99)
mariadb114 3455 3732 (4ms wp99) 5626 (8ms wp99)
mysql84 3497 3628 (4ms wp99) 3259 (36ms wp99)

linux-x64-2cpu-2gb

engine reads mixed writes
quantadb 22528 16774 (5ms wp99) 8374 (4ms wp99)
postgres18 17060 17006 (2ms wp99) 11404 (1ms wp99)
mariadb114 3735 4006 (3ms wp99) 6741 (3ms wp99)
mysql84 3804 3845 (4ms wp99) 4847 (3ms wp99)

linux-x64-full

engine reads mixed writes
quantadb 18144 15075 (6ms wp99) 8025 (5ms wp99)
postgres18 15402 15154 (2ms wp99) 10872 (1ms wp99)
mariadb114 3437 3699 (4ms wp99) 6138 (3ms wp99)
mysql84 3490 3615 (4ms wp99) 3996 (5ms wp99)

Shared CI runners: treat single-profile swings as suggestive, agreement across profiles as real.

The page opened with five file magics, a byte-for-byte page dump and a
tour of six crates. That is a documentation structure wearing a
homepage, and it asked a visitor to care about the internals before
knowing what the thing is.

Turso and Neon both open with a positioning line, then proof, then how
to start, and keep the internals in docs. This follows that: what it is,
why the benchmarks are worth trusting, the numbers against three other
engines, a minute to first query, and an honest status.

White canvas with purple, near-black type and 12px buttons, replacing
the dark documentary palette. The logo is repainted to match.
@martian56 martian56 changed the title Site: keyword chip, button caps, drawn divider Rebuild the site: positioning first, internals in docs Jul 25, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web/style.css`:
- Around line 9-18: Update the --silver design token used by .metric span, thead
th, .note, and .foot to a color that achieves at least 4.5:1 contrast against
--surface (`#ffffff`) for normal-sized text. Keep the existing secondary-text
usage and token structure unchanged.
- Around line 20-22: Update the font-family values in the --display, --ui, and
--mono custom properties to use lowercase casing for the flagged font keywords,
including helvetica, arial, menlo, and consolas, while preserving the existing
font order and fallback structure.
- Around line 68-75: Update the .nav style rule to include the
-webkit-backdrop-filter fallback alongside the existing backdrop-filter
declaration, preserving the same blur value for Safari compatibility.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 4ee8b080-99e4-4758-abe1-8e5f5f594b8c

📥 Commits

Reviewing files that changed from the base of the PR and between b70d500 and af7bc5c.

⛔ Files ignored due to path filters (7)
  • web/apple-touch-icon.png is excluded by !**/*.png
  • web/favicon-16.png is excluded by !**/*.png
  • web/favicon-32.png is excluded by !**/*.png
  • web/favicon.ico is excluded by !**/*.ico
  • web/icon-512.png is excluded by !**/*.png
  • web/logo-mark.png is excluded by !**/*.png
  • web/logo.svg is excluded by !**/*.svg
📒 Files selected for processing (2)
  • web/index.html
  • web/style.css

Comment thread web/style.css Outdated
Comment thread web/style.css
Comment on lines +20 to +22
--display: "IBM Plex Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
--ui: "Helvetica Neue", Helvetica, Arial, sans-serif;
--mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Font-family keyword casing flagged by Stylelint.

value-keyword-case expects lowercase generic/keyword values (helvetica, arial, menlo, consolas).

Fix
-  --display: "IBM Plex Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
-  --ui: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  --mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;
+  --display: "IBM Plex Sans", "Helvetica Neue", helvetica, arial, sans-serif;
+  --ui: "Helvetica Neue", helvetica, arial, sans-serif;
+  --mono: ui-monospace, "SF Mono", "Cascadia Mono", menlo, consolas, monospace;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
--display: "IBM Plex Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
--ui: "Helvetica Neue", Helvetica, Arial, sans-serif;
--mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;
--display: "IBM Plex Sans", "Helvetica Neue", helvetica, arial, sans-serif;
--ui: "Helvetica Neue", helvetica, arial, sans-serif;
--mono: ui-monospace, "SF Mono", "Cascadia Mono", menlo, consolas, monospace;
🧰 Tools
🪛 Stylelint (17.14.0)

[error] 20-20: Expected "Helvetica" to be "helvetica" (value-keyword-case)

(value-keyword-case)


[error] 20-20: Expected "Arial" to be "arial" (value-keyword-case)

(value-keyword-case)


[error] 21-21: Expected "Helvetica" to be "helvetica" (value-keyword-case)

(value-keyword-case)


[error] 21-21: Expected "Arial" to be "arial" (value-keyword-case)

(value-keyword-case)


[error] 22-22: Expected "Menlo" to be "menlo" (value-keyword-case)

(value-keyword-case)


[error] 22-22: Expected "Consolas" to be "consolas" (value-keyword-case)

(value-keyword-case)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/style.css` around lines 20 - 22, Update the font-family values in the
--display, --ui, and --mono custom properties to use lowercase casing for the
flagged font keywords, including helvetica, arial, menlo, and consolas, while
preserving the existing font order and fallback structure.

Source: Linters/SAST tools

Comment thread web/style.css
Comment on lines +68 to 75
.nav {
position: sticky;
top: 0;
z-index: 20;
background: rgba(255, 255, 255, 0.9);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--border);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== file snippet =="
if [ -f web/style.css ]; then
  nl -ba web/style.css | sed -n '60,80p'
else
  echo "web/style.css not found"
fi

echo
echo "== all backdrop-filter occurrences =="
rg -n "backdrop-filter:|webkit-backdrop-filter" -S . --glob '!node_modules' --glob '!dist' --glob '!build' || true

Repository: martian56/quantadb

Length of output: 215


🌐 Web query:

Safari CSS backdrop-filter -webkit-backdrop-filter support

💡 Result:

Safari provides support for the backdrop-filter CSS property, but developers must continue to use the -webkit- prefix to ensure compatibility [1][2]. While Safari 18 and newer versions include support for the unprefixed backdrop-filter property in some contexts, real-world implementation often necessitates the use of -webkit-backdrop-filter [2]. Reports indicate that even in recent versions of Safari, relying solely on the unprefixed property may lead to inconsistent behavior [2]. Furthermore, some developers have noted limitations when using CSS variables with the prefixed property, recommending the use of fixed values for optimal cross-version reliability [2]. For production environments, the recommended best practice is to include both the prefixed and unprefixed versions to ensure consistent rendering across all supported Safari versions [1][2]:.element { -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } To see the effects of backdrop-filter, ensure that the element itself or its background has some degree of transparency [3].

Citations:


🌐 Web query:

Can I use CSS backdrop-filter Safari support

💡 Result:

Yes, you can use the CSS backdrop-filter property in Safari [1][2]. As of July 2026, Safari provides support for backdrop-filter [1]. Historically, Safari required the -webkit- prefix (-webkit-backdrop-filter) [3][4], and while the property is now available unprefixed in modern versions of Safari (introduced in version 18) [3][4], it is still common practice in web development to include both the prefixed and unprefixed versions to ensure compatibility across a wider range of browser versions [5]. When implementing this, keep the following in mind: 1. Compatibility: The unprefixed backdrop-filter property is supported in Safari 18.0 and later [1]. For older versions of Safari, the -webkit-backdrop-filter prefix remains necessary [3]. 2. Best Practice: To ensure the broadest support, many developers use the following pattern:.element { -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } 3. Requirements: For the effect to be visible, the element itself must have a transparent or semi-transparent background (e.g., background: rgba(255, 255, 255, 0.5)) [2][6]. The property applies filter effects to the area behind the element [2][6]. 4. Performance: Using backdrop-filter can create a new stacking context [6] and may impact performance if overused or applied to deeply nested elements, as it requires the browser to render the content behind the element before applying the filter [7][6].

Citations:


Add the -webkit- backdrop-filter fallback for Safari.

 .nav {
   position: sticky;
   top: 0;
   z-index: 20;
   background: rgba(255, 255, 255, 0.9);
+  -webkit-backdrop-filter: blur(12px);
   backdrop-filter: blur(12px);
   border-bottom: 1px solid var(--border);
 }

This keeps the blur effect available for Safari versions that still require the prefixed property.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.nav {
position: sticky;
top: 0;
z-index: 20;
background: rgba(255, 255, 255, 0.9);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--border);
}
.nav {
position: sticky;
top: 0;
z-index: 20;
background: rgba(255, 255, 255, 0.9);
-webkit-backdrop-filter: blur(12px);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--border);
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/style.css` around lines 68 - 75, Update the .nav style rule to include
the -webkit-backdrop-filter fallback alongside the existing backdrop-filter
declaration, preserving the same blur value for Safari compatibility.

Kraken's system is built for a consumer exchange on white. The colour
roles, purple brand, twelve pixel buttons, quiet shadows and type scale
carry over, but developer infrastructure is read on dark and that is
where this project started.
@martian56

Copy link
Copy Markdown
Owner Author

Superseded by #78, which rebuilds the site on top of quanta-port so it can describe the native protocol on 6626 instead of the PostgreSQL wire protocol that branch removes.

@martian56 martian56 closed this Jul 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant