DEV Community

William Wang
William Wang

Posted on

Building an AI-Powered Investment Knowledge Base with Nuxt 3 and Go-Zero

The Problem

Investment wisdom is scattered across 100+ books, thousands of interviews, and decades of annual letters. Warren Buffett alone has written 50+ shareholder letters. Charlie Munger gave dozens of speeches. Howard Marks published 100+ memos.

I wanted to make all this wisdom searchable, comparable, and interactive. The result is KeepRule — a free database of 1,377 investment principles from 26 legendary investors.

Tech Stack

Frontend: Nuxt 3 SSR

For a content-heavy site targeting SEO, Server-Side Rendering is non-negotiable. Nuxt 3 gives us:

  • Full SSR for every page (critical for Google indexing)
  • useAsyncData for server-side API calls
  • Built-in i18n for 5 languages (en, zh, es, fr, ar)
  • Auto-generated sitemaps with @nuxtjs/sitemap
// Example: fetching investor data server-side
const { data: master } = await useAsyncData(
  `master-${slug}`,
  () => getMasterDetail(slug)
)
Enter fullscreen mode Exit fullscreen mode

Backend: Go-Zero

Why Go-Zero over Express/NestJS?

  1. Performance: Go handles 10x more concurrent requests
  2. Code generation: goctl generates API handlers from .api files
  3. Built-in middleware: Rate limiting, auth, logging out of the box
// .api file defines endpoints declaratively
type MasterDetailReq {
    Slug string `path:"slug"`
    Lang string `form:"lang,optional"`
}

@handler GetMasterDetail
get /masters/:slug (MasterDetailReq) returns (MasterDetailResp)
Enter fullscreen mode Exit fullscreen mode

Performance: Nginx Proxy Cache

The single biggest performance win was adding Nginx proxy cache:

proxy_cache keeprule_cache;
proxy_cache_valid 200 30m;
proxy_ignore_headers Set-Cookie;
Enter fullscreen mode Exit fullscreen mode

Result: 650ms → 19ms response time (30x improvement). Googlebot crawls faster, users get instant pages.

SEO Architecture

Internal Linking Strategy

Every blog post is linked from 3 entry points:

  1. Homepage (explore section)
  2. Master detail page (deep dive link)
  3. Quotes page (related articles)

This creates a strong internal link graph that passes PageRank to blog content.

Structured Data

Every page includes JSON-LD:

  • Article schema for blog posts
  • BreadcrumbList for navigation
  • FAQPage for FAQ sections

Multi-language Hreflang

All 5 languages are properly connected via hreflang tags, preventing duplicate content issues.

Results

  • 4,673 pages indexed by Google
  • 10 deep-dive blog articles (26,000+ words total)
  • 26 investor profiles with AI chat
  • 1,377 searchable principles
  • Daily visitors growing from 900 to 2,200+

Try It

Explore all 1,377 investment principles at keeprule.com. The investment psychology test at keeprule.com/en/test/psychology is a good starting point.

The blog articles cover each investor in depth: keeprule.com/en/blog


Built by William Wang. Open to feedback and feature requests!

Top comments (0)