Skip to content

Commit f7fdf6b

Browse files
authored
feat: consolidate docs and blogs into web monorepo (#2)
* HAL-87: scaffold Vectorless docs site (Fumadocs) Brand-matched Fumadocs (Next.js App Router) documentation site for docs.vectorless.store. - Dark theme primary; Geist Sans + Geist Mono + Instrument Serif display - Blue->pink brand gradient and subtle grid background texture - Branded landing page (hero, feature grid, quickstart strip) - Sections: Getting Started, Core Concepts (tree retrieval, no-chunking, treewalk, citations), API Reference (placeholder), SDKs (TS/Python/Go), Self-hosting (Neon + R2 + QStash + Docker, placeholder) - Orama search, OG images, llms.txt - Uses canonical 'treewalk' strategy name (retired 'pageindex') * Redesign docs site to the LIGHT Vectorless brand (HAL-190) The Fumadocs site was wrongly built dark-first with a full-page grid wash and aura/glow pseudo-elements. Restyle it to match the brand visual identity in vectorless-why/DESIGN.md, which is LIGHT. - Default theme -> light (RootProvider defaultTheme: 'light'). - Light is now the primary, clean canvas: #FCFCFD, ink #0A0A0A, secondary #3F3F46, muted #71717A, hairlines #E5E7EB. - Remove the heavy body::before grid wash and body::after aura glow. Content/docs pages are clean near-white with whitespace. - Reintroduce only a very faint brand grid rgba(20,86,240,0.06) on the landing hero, masked to fade out (.vl-hero-grid). - Keep the blue->pink signal gradient on exactly one hero line; drop the second serif/gradient register on the pull quote (now plain light sans with a mono eyebrow caption). - Mono eyebrows at 0.16em tracking; body weight ~300 per DESIGN.md. - Quickstart block is now a real dark inset terminal (#0A0A0A) — the one place dark is allowed. - Dark theme retained as an optional toggle, not the default. Restyle only: nav, sidebar, search, section structure and content unchanged. pnpm build passes. * Redesign docs site to the LIGHT Vectorless brand (HAL-190) (#1) The Fumadocs site was wrongly built dark-first with a full-page grid wash and aura/glow pseudo-elements. Restyle it to match the brand visual identity in vectorless-why/DESIGN.md, which is LIGHT. - Default theme -> light (RootProvider defaultTheme: 'light'). - Light is now the primary, clean canvas: #FCFCFD, ink #0A0A0A, secondary #3F3F46, muted #71717A, hairlines #E5E7EB. - Remove the heavy body::before grid wash and body::after aura glow. Content/docs pages are clean near-white with whitespace. - Reintroduce only a very faint brand grid rgba(20,86,240,0.06) on the landing hero, masked to fade out (.vl-hero-grid). - Keep the blue->pink signal gradient on exactly one hero line; drop the second serif/gradient register on the pull quote (now plain light sans with a mono eyebrow caption). - Mono eyebrows at 0.16em tracking; body weight ~300 per DESIGN.md. - Quickstart block is now a real dark inset terminal (#0A0A0A) — the one place dark is allowed. - Dark theme retained as an optional toggle, not the default. Restyle only: nav, sidebar, search, section structure and content unchanged. pnpm build passes. * docs: use the real Vectorless V logo in nav + favicon (HAL-191) Replace the invented node-graph mark with the canonical logo — blue tile + white V (M4 4 L12 20 L20 4) + pink focal dot — matching vectorless-dashboard's icon.tsx; add the matching app favicon. Wordmark in Geist medium. Closes HAL-191. * docs: use the real Vectorless V logo in nav + favicon (HAL-191) (#2) Replace the invented node-graph mark with the canonical logo — blue tile + white V (M4 4 L12 20 L20 4) + pink focal dot — matching vectorless-dashboard's icon.tsx; add the matching app favicon. Wordmark in Geist medium. Closes HAL-191. * Polish docs home page design Elevate the marketing/home surface within the Vectorless light brand: - Hero: real V mark, staggered precision reveal, refined terminal inset - New document -> tree -> cited answer SVG motif (hairline, blue path, single pink citation dot; edges draw + nodes snap) - Feature grid with mono index numbers and hover accent - Parse/Walk/Cite three-step band - Refined Instrument-Serif thesis closer with CTA No new gradients, no dark page bg, no new mark - honors DESIGN.md. * feat(docs): premium landing page redesign with GSAP and HeroShader * style(docs): mintlify-inspired redesign and hero button fix * chore(docs): redirect primary GitHub links to vectorless-engine * fix(docs): resolve hero stacking and button visibility issues * style(docs): fix code block contrast and remove card blue border * chore: remove deprecated packages ts-sdk, openapi, and mcp-tools * feat: migrate docs and blogs to monorepo and update branding * style: premium editorial layout redesign for vectorless blog * style: expand layout to full-width page * ci: update workflows to match monorepo package configuration * fix: resolve workspace react type conflicts by overriding react and react types * chore: add typecheck scripts for all monorepo apps to run under turborepo * fix: resolve lint errors and warnings across workspace packages
1 parent a13e1dc commit f7fdf6b

109 files changed

Lines changed: 6952 additions & 3631 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88

99
jobs:
1010
lint-and-typecheck:
11-
name: Lint & Typecheck (TypeScript)
11+
name: Lint & Typecheck
1212
runs-on: ubuntu-latest
1313
steps:
1414
- uses: actions/checkout@v4
@@ -18,25 +18,8 @@ jobs:
1818
node-version: 20
1919
cache: pnpm
2020
- run: pnpm install --frozen-lockfile
21-
- run: pnpm --filter=@vectorless/shared build
22-
- run: pnpm --filter=vectorless typecheck
23-
- run: pnpm --filter=@vectorless/web lint
24-
25-
test-ts-sdk:
26-
name: Test TypeScript SDK
27-
runs-on: ubuntu-latest
28-
steps:
29-
- uses: actions/checkout@v4
30-
- uses: pnpm/action-setup@v4
31-
- uses: actions/setup-node@v4
32-
with:
33-
node-version: 20
34-
cache: pnpm
35-
- run: pnpm install --frozen-lockfile
36-
- run: pnpm --filter=@vectorless/shared build
37-
- run: pnpm --filter=vectorless build
38-
- name: Run unit tests (skip integration)
39-
run: cd packages/ts-sdk && npx vitest run __tests__/client.test.ts
21+
- run: pnpm typecheck
22+
- run: pnpm lint
4023

4124
test-python-sdk:
4225
name: Test Python SDK
@@ -69,5 +52,4 @@ jobs:
6952
node-version: 20
7053
cache: pnpm
7154
- run: pnpm install --frozen-lockfile
72-
- run: pnpm --filter=@vectorless/shared build
73-
- run: pnpm --filter=vectorless build
55+
- run: pnpm build

.github/workflows/publish-ts-sdk.yml

Lines changed: 0 additions & 40 deletions
This file was deleted.

apps/blogs/.env.example

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# GEMINI_API_KEY: Required for Gemini AI API calls.
2+
# AI Studio automatically injects this at runtime from user secrets.
3+
# Users configure this via the Secrets panel in the AI Studio UI.
4+
GEMINI_API_KEY="MY_GEMINI_API_KEY"
5+
6+
# APP_URL: The URL where this applet is hosted.
7+
# AI Studio automatically injects this at runtime with the Cloud Run service URL.
8+
# Used for self-referential links, OAuth callbacks, and API endpoints.
9+
APP_URL="MY_APP_URL"

apps/blogs/.eslintrc.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"extends": "next"
3+
}

apps/blogs/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.vercel

apps/blogs/README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<div align="center">
2+
<img width="1200" height="475" alt="GHBanner" src="https://ai.google.dev/static/site-assets/images/share-ais-513315318.png" />
3+
</div>
4+
5+
# Run and deploy your AI Studio app
6+
7+
This contains everything you need to run your app locally.
8+
9+
View your app in AI Studio: https://ai.studio/apps/3b8c6a97-eb59-4fb0-aade-3976e82644b1
10+
11+
## Run Locally
12+
13+
**Prerequisites:** Node.js
14+
15+
16+
1. Install dependencies:
17+
`npm install`
18+
2. Set the `GEMINI_API_KEY` in [.env.local](.env.local) to your Gemini API key
19+
3. Run the app:
20+
`npm run dev`

apps/blogs/app/globals.css

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
@import "tailwindcss";
2+
@import "tw-animate-css";
3+
4+
@theme {
5+
--font-sans: var(--font-geist), ui-sans-serif, system-ui, sans-serif;
6+
--font-display: var(--font-geist), ui-sans-serif, system-ui, sans-serif;
7+
--font-mono: var(--font-geist-mono), ui-monospace, SFMono-Regular, monospace;
8+
--font-serif: var(--font-instrument-serif), ui-serif, Georgia, serif;
9+
10+
--color-bg-base: #fcfcfd;
11+
--color-text-base: #0a0a0a;
12+
--color-text-secondary: #3f3f46;
13+
--color-text-muted: #71717a;
14+
--color-brand-blue: #1456f0;
15+
--color-brand-pink: #ea5ec1;
16+
--color-border-light: #f2f3f5;
17+
--color-border-gray: #e5e7eb;
18+
}
19+
20+
@layer base {
21+
html, body {
22+
background-color: #fcfcfd !important;
23+
color: #0a0a0a;
24+
margin: 0;
25+
padding: 0;
26+
width: 100%;
27+
height: 100%;
28+
}
29+
}
30+
31+
@layer utilities {
32+
.grid-paper {
33+
background-image:
34+
linear-gradient(to right, rgba(20, 86, 240, 0.04) 1px, transparent 1px),
35+
linear-gradient(to bottom, rgba(20, 86, 240, 0.04) 1px, transparent 1px);
36+
background-size: 56px 56px;
37+
}
38+
}

apps/blogs/app/layout.tsx

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import type { Metadata } from "next";
2+
import { Geist, Geist_Mono, Instrument_Serif } from "next/font/google";
3+
import "./globals.css";
4+
5+
const geist = Geist({ subsets: ["latin"], variable: "--font-geist" });
6+
const geistMono = Geist_Mono({ subsets: ["latin"], variable: "--font-geist-mono" });
7+
const instrumentSerif = Instrument_Serif({
8+
weight: "400",
9+
subsets: ["latin"],
10+
variable: "--font-instrument-serif",
11+
});
12+
13+
export const metadata: Metadata = {
14+
title: "Vectorless Blog | Document Retrieval for the Reasoning Era",
15+
description: "Insights, deep dives, and technical guides on structure-preserving retrieval, RAG, and AI agent memory.",
16+
};
17+
18+
export default function RootLayout({
19+
children,
20+
}: {
21+
children: React.ReactNode;
22+
}) {
23+
return (
24+
<html
25+
lang="en"
26+
className={`${geist.variable} ${geistMono.variable} ${instrumentSerif.variable}`}
27+
>
28+
<body
29+
className="bg-[#FCFCFD] text-[#0A0A0A] font-sans antialiased selection:bg-[#bfdbfe] selection:text-[#1d4ed8]"
30+
suppressHydrationWarning
31+
>
32+
{children}
33+
</body>
34+
</html>
35+
);
36+
}

0 commit comments

Comments
 (0)