A personal memex — a networked knowledge garden, portfolio, and research archive for Gökhan Turhan. The site captures essays, interviews, dashboards, and exploratory projects orbiting stablecoins, tokenization, AGI timelines, conceptual art, prediction markets, and adjacent frontier technologies. Designed as a fast, privacy-aware, offline-ready reference that scales from personal notebook to public publication hub.
- Modern Astro Stack — Astro 5 with content collections, MDX support, TypeScript, and Tailwind CSS. shadcn/ui-inspired components ported to Astro for consistent primitives.
- Digital Garden Architecture — Journal, archive, lists, links, and portfolio sections with shared taxonomy, rich metadata, and SEO-friendly permalinks.
- Offline-First PWA — Custom service worker, offline status banner, and
/offlinemanagement UI for cached content. - Search & Discovery — Client-side command palette (Cmd/Ctrl‑K) powered by RSS feed for instant search.
- SEO & GEO Ready — Structured data (JSON-LD), canonical URLs, Open Graph/Twitter cards, RSS, sitemap,
llms.txtfor AI crawlers, androbots.txtdirectives. - Security Headers — Configured via
_headersfor X-Content-Type-Options, X-Frame-Options, X-XSS-Protection, HSTS, Referrer-Policy, and Permissions-Policy.
| Layer | Technology |
|---|---|
| Framework | Astro 5 (static output) |
| Language | TypeScript |
| Styling | Tailwind CSS 3, @tailwindcss/typography |
| Content | MDX via astro:content, JSON data feeds |
| Icons | Lucide via lucide-astro |
| Syntax Highlighting | Shiki (github-dark-dimmed theme) |
| Deployment | Cloudflare Pages |
| Package | Version | Description |
|---|---|---|
| astro | ^5.13.2 | The web framework for content-driven websites |
| @astrojs/mdx | ^4.3.4 | MDX integration for Astro |
| @astrojs/rss | ^4.0.7 | RSS feed generation |
| @astrojs/sitemap | ^3.2.0 | Sitemap generation |
| @astrojs/tailwind | ^5.1.1 | Tailwind CSS integration |
| @astrojs/check | ^0.9.4 | Type checking for Astro |
| Package | Version | Description |
|---|---|---|
| tailwindcss | ^3.4.13 | Utility-first CSS framework |
| @tailwindcss/typography | ^0.5.15 | Beautiful typographic defaults for prose |
| class-variance-authority | ^0.7.0 | Component variant management |
| clsx | ^2.1.1 | Utility for constructing className strings |
| tailwind-merge | ^2.5.4 | Merge Tailwind classes without conflicts |
| lucide-astro | ^0.456.0 | Beautiful & consistent icons |
| Package | Version | Description |
|---|---|---|
| rehype-slug | ^6.0.0 | Add id attributes to headings |
| rehype-autolink-headings | ^7.1.0 | Automatically add links to headings |
| Package | Version | Description |
|---|---|---|
| typescript | ^5.9.2 | TypeScript language |
| @types/node | ^22.8.6 | Node.js type definitions |
- shadcn/ui — Component patterns and design tokens ported to Astro
- Source Sans Pro — Headings and UI
- Crimson Text — Body text and prose
- JetBrains Mono — Code blocks
gokhan-memex/
├── public/ # Static assets (images, favicon, manifest, robots.txt, llms.txt)
│ ├── .well-known/ # security.txt
│ └── blog/images/ # Blog post images
├── src/
│ ├── components/ # Astro components (Navigation, UI primitives, embeds)
│ │ ├── embeds/ # YouTube, Vimeo, Bandcamp, Spotify, etc.
│ │ └── ui/ # shadcn-style UI components
│ ├── content/ # MDX collections
│ │ ├── blog/ # Journal posts
│ │ └── projects/ # Project documentation
│ ├── data/ # JSON data (links, lists)
│ ├── layouts/ # BaseLayout with meta, structured data, theme
│ ├── lib/ # Utilities (analytics, service-worker, utils)
│ ├── pages/ # Astro pages (routes)
│ └── styles/ # critical.css, globals.css
├── dist/ # Build output (generated)
├── _headers # Cloudflare/Netlify security headers
├── _redirects # Redirect rules
├── astro.config.mjs # Astro configuration
├── tailwind.config.mjs # Tailwind configuration
├── tsconfig.json # TypeScript configuration
└── package.json # Dependencies and scripts
Prerequisites:
- Node.js >= 18.20.8
- npm 10.x+
# Install dependencies
npm install
# Start dev server (http://localhost:4321)
npm run dev
# Build for production
npm run build
# Preview production build
npm run previewCreate MDX files in src/content/blog/ with frontmatter:
---
title: "Post Title"
description: "Brief description for SEO and previews"
publishDate: 2026-01-05
author: "Gökhan Turhan"
category: "Finance & Markets"
tags: ["crypto", "stablecoins", "defi"]
featured: false
draft: false
heroImage: "/blog/images/my-image.webp"
heroImageAlt: "Image description"
readingTime: 5
---
Content goes here...- Finance & Markets
- Knowledge Patterns
- Builder Log
- Conceptual Art
- Interviews
- Productivity
Use rich media embeds in MDX:
<YouTubeEmbed id="video-id" />
<VimeoEmbed id="video-id" />
<SpotifyEmbed uri="spotify:track:xxx" />
<BandcampEmbed albumId="123" />
<TwitterEmbed id="tweet-id" />The site includes:
- Sitemap — Auto-generated at
/sitemap-index.xml - RSS Feed — Available at
/rss.xml - robots.txt — Crawler directives with sitemap reference
- llms.txt — AI crawler manifest for GEO (Generative Engine Optimization)
- humans.txt — Site credits and team info
- security.txt — Vulnerability disclosure contact
- JSON-LD — Structured data for Person, Article, and WebSite schemas
- Open Graph & Twitter Cards — Social sharing metadata
The site builds to static HTML/CSS/JS in dist/. Currently deployed on Cloudflare Pages.
npm run buildEnsure your host serves:
_headersfor security headers and caching rules_redirectsfor any redirect rules
Configured headers via _headers:
X-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINX-XSS-Protection: 1; mode=blockStrict-Transport-Security(HSTS with preload)Referrer-Policy: strict-origin-when-cross-originPermissions-Policy(camera, microphone, geolocation disabled)
- Service worker caches key pages for offline access
- Visit
/offlineto manage cached content - PWA manifest enables "Add to Home Screen"
All site content © 2026 Gökhan Turhan. Source code shared for reference; contact the author for reuse permissions or collaboration inquiries.
Built with Astro • Styled with Tailwind CSS • Deployed on Cloudflare Pages