From f1f8c2417a7d79b31d8a88326aeff8ea655d3391 Mon Sep 17 00:00:00 2001 From: Wayne Sutton Date: Sat, 20 Dec 2025 20:56:07 -0800 Subject: [PATCH] fix: logo path url location for homepage --- public/images/logo.svg | 10 ++ public/raw/about-this-blog.md | 10 +- public/raw/about.md | 3 +- public/raw/changelog.md | 25 +++- public/raw/docs.md | 50 ++++++-- public/raw/how-to-publish.md | 2 +- .../raw/new-features-search-featured-logos.md | 2 +- public/raw/projects.md | 2 +- public/raw/setup-guide.md | 119 +++++++++++------- public/raw/using-images-in-posts.md | 2 +- src/config/siteConfig.ts | 14 +-- 11 files changed, 167 insertions(+), 72 deletions(-) create mode 100644 public/images/logo.svg diff --git a/public/images/logo.svg b/public/images/logo.svg new file mode 100644 index 0000000..a6ce309 --- /dev/null +++ b/public/images/logo.svg @@ -0,0 +1,10 @@ + + + m + diff --git a/public/raw/about-this-blog.md b/public/raw/about-this-blog.md index abfcad9..a7a1a52 100644 --- a/public/raw/about-this-blog.md +++ b/public/raw/about-this-blog.md @@ -1,17 +1,17 @@ -# About This Markdown Site +# About This Markdown Framework -> How this open source site works with Convex for real-time sync and Netlify for deployment. +> How this open source framework works with Convex for real-time sync and Netlify for deployment. --- Type: post Date: 2025-01-16 Reading time: 4 min read -Tags: convex, netlify, open-source, markdown +Tags: convex, netlify, open-source, markdown, ai, llm --- -# About This Markdown Site +# About This Markdown Framework -An open-source markdown sync site for developers and AI agents. Publish from the terminal with `npm run sync`. Write locally, sync instantly with real-time updates. Powered by Convex and Netlify. +An open-source publishing framework for AI agents and developers. Write markdown, sync from the terminal. Your content is instantly available to browsers, LLMs, and AI agents. Built on Convex and Netlify. ## How It Works diff --git a/public/raw/about.md b/public/raw/about.md index 30be2c3..15360dd 100644 --- a/public/raw/about.md +++ b/public/raw/about.md @@ -5,7 +5,7 @@ Type: page Date: 2025-12-21 --- -An open-source markdown sync site for developers and AI agents. Publish from the terminal with `npm run sync`. Write locally, sync instantly with real-time updates. Powered by Convex and Netlify. +An open-source publishing framework for AI agents and developers. Write markdown, sync from the terminal. Your content is instantly available to browsers, LLMs, and AI agents. Built on Convex and Netlify. ## What makes it a dev sync system @@ -54,6 +54,7 @@ It's a hybrid: developer workflow for publishing + real-time delivery like a dyn - Full text search with Command+K shortcut - Featured section with list/card view toggle and excerpts - Logo gallery with clickable links and marquee scroll +- GitHub contributions graph with year navigation - Dedicated blog page with configurable navigation order - Real-time analytics at `/stats` - RSS feeds and sitemap for SEO diff --git a/public/raw/changelog.md b/public/raw/changelog.md index 02cb8ba..521222e 100644 --- a/public/raw/changelog.md +++ b/public/raw/changelog.md @@ -7,6 +7,29 @@ Date: 2025-12-21 All notable changes to this project. +## v1.17.0 + +Released December 20, 2025 + +**GitHub contributions graph** + +- GitHub activity graph on homepage with theme-aware colors +- Year navigation with Phosphor CaretLeft/CaretRight icons +- Click graph to visit GitHub profile +- Configurable via `siteConfig.gitHubContributions` +- Uses public API (no GitHub token required) + +Theme-specific contribution colors: + +- Dark theme: GitHub green on dark background +- Light theme: Standard GitHub green +- Tan theme: Warm brown tones +- Cloud theme: Gray-blue tones + +New component: `src/components/GitHubContributions.tsx` + +Set `enabled: false` in siteConfig to disable. + ## v1.15.2 Released December 20, 2025 @@ -356,7 +379,7 @@ Released December 14, 2025 **Initial release** -- Markdown blog posts with frontmatter parsing +- Markdown posts with frontmatter parsing - Static pages support (About, Projects, Contact) - Four theme options: Dark, Light, Tan (default), Cloud - Syntax highlighting for code blocks diff --git a/public/raw/docs.md b/public/raw/docs.md index a13fe06..10f8908 100644 --- a/public/raw/docs.md +++ b/public/raw/docs.md @@ -5,7 +5,7 @@ Type: page Date: 2025-12-21 --- -Reference documentation for setting up, customizing, and deploying this markdown site. +Reference documentation for setting up, customizing, and deploying this markdown framework. **How publishing works:** Write posts in markdown, run `npm run sync` for development or `npm run sync:prod` for production, and they appear on your live site immediately. No rebuild or redeploy needed. Convex handles real-time data sync, so connected browsers update automatically. @@ -155,14 +155,15 @@ When you fork this project, update these files with your site information: | File | What to update | |------|----------------| -| `src/config/siteConfig.ts` | Site name, title, intro, bio, blog page, logo gallery | -| `convex/http.ts` | `SITE_URL`, `SITE_NAME` (API responses, sitemap) | +| `src/config/siteConfig.ts` | Site name, title, intro, bio, blog page, logo gallery, GitHub contributions | +| `src/pages/Home.tsx` | Intro paragraph text (hardcoded JSX) | +| `convex/http.ts` | `SITE_URL`, `SITE_NAME`, description strings (3 locations) | | `convex/rss.ts` | `SITE_URL`, `SITE_TITLE`, `SITE_DESCRIPTION` (RSS feeds) | | `src/pages/Post.tsx` | `SITE_URL`, `SITE_NAME`, `DEFAULT_OG_IMAGE` (OG tags) | | `index.html` | Title, meta description, OG tags, JSON-LD | -| `public/llms.txt` | Site name, URL, description | -| `public/robots.txt` | Sitemap URL | -| `public/openapi.yaml` | Server URL, site name in examples | +| `public/llms.txt` | Site name, URL, description, topics | +| `public/robots.txt` | Sitemap URL and header comment | +| `public/openapi.yaml` | API title, server URL, site name in examples | | `public/.well-known/ai-plugin.json` | Site name, descriptions | ### Site title and description metadata @@ -173,13 +174,16 @@ These files contain the main site description text. Update them with your own ta |------|----------------| | `index.html` | meta description, og:description, twitter:description, JSON-LD | | `README.md` | Main description at top of file | -| `src/pages/Home.tsx` | intro and bio text in siteConfig | -| `convex/http.ts` | description field in API responses (2 locations) | -| `convex/rss.ts` | SITE_DESCRIPTION constant | -| `public/llms.txt` | Header quote and Description field | +| `src/config/siteConfig.ts` | name, title, and bio fields | +| `src/pages/Home.tsx` | Intro paragraph (hardcoded JSX with links) | +| `convex/http.ts` | SITE_NAME constant and description strings (3 locations) | +| `convex/rss.ts` | SITE_TITLE and SITE_DESCRIPTION constants | +| `public/llms.txt` | Header quote, Name, and Description fields | +| `public/openapi.yaml` | API title and example site name | | `AGENTS.md` | Project overview section | -| `content/blog/about-this-blog.md` | Opening paragraph | +| `content/blog/about-this-blog.md` | Title, description, excerpt, and opening paragraph | | `content/pages/about.md` | excerpt field and opening paragraph | +| `content/pages/docs.md` | Opening description paragraph | **Backend constants** (`convex/http.ts` and `convex/rss.ts`): @@ -286,6 +290,30 @@ const siteConfig = { }; ``` +### GitHub contributions graph + +Display your GitHub contribution activity on the homepage. Configure in `siteConfig`: + +```typescript +gitHubContributions: { + enabled: true, // Set to false to hide + username: "yourusername", // Your GitHub username + showYearNavigation: true, // Show arrows to navigate between years + linkToProfile: true, // Click graph to open GitHub profile + title: "GitHub Activity", // Optional title above the graph +}, +``` + +| Option | Description | +| ------ | ----------- | +| `enabled` | `true` to show, `false` to hide | +| `username` | Your GitHub username | +| `showYearNavigation` | Show prev/next year navigation | +| `linkToProfile` | Click graph to visit GitHub profile | +| `title` | Text above graph (`undefined` to hide) | + +Theme-aware colors match each site theme. Uses public API (no GitHub token required). + ### Logo gallery The homepage includes a logo gallery that can scroll infinitely or display as a static grid. Each logo can link to a URL. diff --git a/public/raw/how-to-publish.md b/public/raw/how-to-publish.md index 30299ad..ec9074f 100644 --- a/public/raw/how-to-publish.md +++ b/public/raw/how-to-publish.md @@ -1,6 +1,6 @@ # How to Publish a Blog Post -> A quick guide to writing and publishing markdown blog posts using Cursor after your blog is set up. +> A quick guide to writing and publishing markdown posts using Cursor after your framework is set up. --- Type: post diff --git a/public/raw/new-features-search-featured-logos.md b/public/raw/new-features-search-featured-logos.md index 828b0ff..1a47f02 100644 --- a/public/raw/new-features-search-featured-logos.md +++ b/public/raw/new-features-search-featured-logos.md @@ -1,6 +1,6 @@ # New features: search, featured section, and logo gallery -> Three updates that make your markdown site more useful: Command+K search, frontmatter-controlled featured items, and a scrolling logo gallery. +> Three updates that make your markdown framework more useful: Command+K search, frontmatter-controlled featured items, and a scrolling logo gallery. --- Type: post diff --git a/public/raw/projects.md b/public/raw/projects.md index 825c2be..d5a6c65 100644 --- a/public/raw/projects.md +++ b/public/raw/projects.md @@ -5,7 +5,7 @@ Type: page Date: 2025-12-21 --- -This markdown site is open source and built to be extended. Here is what ships out of the box. +This markdown framework is open source and built to be extended. Here is what ships out of the box. ## Core Features diff --git a/public/raw/setup-guide.md b/public/raw/setup-guide.md index d59e1f5..652175e 100644 --- a/public/raw/setup-guide.md +++ b/public/raw/setup-guide.md @@ -1,6 +1,6 @@ -# Setup Guide - Fork and Deploy Your Own Markdown Site +# Setup Guide - Fork and Deploy Your Own Markdown Framework -> Step-by-step guide to fork this markdown sync site, set up Convex backend, and deploy to Netlify in under 10 minutes. +> Step-by-step guide to fork this markdown sync framework, set up Convex backend, and deploy to Netlify in under 10 minutes. --- Type: post @@ -9,15 +9,15 @@ Reading time: 8 min read Tags: convex, netlify, tutorial, deployment --- -# Fork and Deploy Your Own Markdown Blog +# Fork and Deploy Your Own Markdown Framework -This guide walks you through forking [this markdown site](https://github.com/waynesutton/markdown-site), setting up your Convex backend, and deploying to Netlify. The entire process takes about 10 minutes. +This guide walks you through forking [this markdown framework](https://github.com/waynesutton/markdown-site), setting up your Convex backend, and deploying to Netlify. The entire process takes about 10 minutes. **How publishing works:** Once deployed, you write posts in markdown, run `npm run sync` for development or `npm run sync:prod` for production, and they appear on your live site immediately. No rebuild or redeploy needed. Convex handles real-time data sync, so all connected browsers update automatically. ## Table of Contents -- [Fork and Deploy Your Own Markdown Blog](#fork-and-deploy-your-own-markdown-blog) +- [Fork and Deploy Your Own Markdown Framework](#fork-and-deploy-your-own-markdown-framework) - [Table of Contents](#table-of-contents) - [Prerequisites](#prerequisites) - [Step 1: Fork the Repository](#step-1-fork-the-repository) @@ -39,18 +39,22 @@ This guide walks you through forking [this markdown site](https://github.com/way - [Sync After Adding Posts](#sync-after-adding-posts) - [Environment Files](#environment-files) - [When to Sync vs Deploy](#when-to-sync-vs-deploy) - - [Customizing Your Blog](#customizing-your-blog) + - [Customizing Your Framework](#customizing-your-framework) - [Files to Update When Forking](#files-to-update-when-forking) + - [Site title and description metadata](#site-title-and-description-metadata) - [Update Backend Configuration](#update-backend-configuration) - [Change the Favicon](#change-the-favicon) - [Change the Site Logo](#change-the-site-logo) - [Change the Default Open Graph Image](#change-the-default-open-graph-image) - [Update Site Configuration](#update-site-configuration) - [Featured Section](#featured-section) + - [GitHub Contributions Graph](#github-contributions-graph) - [Logo Gallery](#logo-gallery) + - [Blog page](#blog-page) - [Scroll-to-top button](#scroll-to-top-button) - [Change the Default Theme](#change-the-default-theme) - [Change the Font](#change-the-font) + - [Change Font Sizes](#change-font-sizes) - [Add Static Pages (Optional)](#add-static-pages-optional) - [Update SEO Meta Tags](#update-seo-meta-tags) - [Update llms.txt and robots.txt](#update-llmstxt-and-robotstxt) @@ -67,6 +71,7 @@ This guide walks you through forking [this markdown site](https://github.com/way - [RSS/Sitemap not working](#rsssitemap-not-working) - [Build failures on Netlify](#build-failures-on-netlify) - [Project Structure](#project-structure) + - [Write Page](#write-page) - [Next Steps](#next-steps) ## Prerequisites @@ -398,23 +403,24 @@ Both files are gitignored. Each developer creates their own local environment fi **Featured items** can now be controlled via markdown frontmatter. Add `featured: true` and `featuredOrder: 1` to any post or page, then run `npm run sync`. -## Customizing Your Blog +## Customizing Your Framework ### Files to Update When Forking When you fork this project, update these files with your site information: -| File | What to update | -| ----------------------------------- | ----------------------------------------------------------- | -| `src/config/siteConfig.ts` | Site name, title, intro, bio, blog page, logo gallery | -| `convex/http.ts` | `SITE_URL`, `SITE_NAME` (API responses, sitemap) | -| `convex/rss.ts` | `SITE_URL`, `SITE_TITLE`, `SITE_DESCRIPTION` (RSS feeds) | -| `src/pages/Post.tsx` | `SITE_URL`, `SITE_NAME`, `DEFAULT_OG_IMAGE` (OG tags) | -| `index.html` | Title, meta description, OG tags, JSON-LD | -| `public/llms.txt` | Site name, URL, description | -| `public/robots.txt` | Sitemap URL | -| `public/openapi.yaml` | Server URL, site name in examples | -| `public/.well-known/ai-plugin.json` | Site name, descriptions | +| File | What to update | +| ----------------------------------- | --------------------------------------------------------------------------- | +| `src/config/siteConfig.ts` | Site name, title, intro, bio, blog page, logo gallery, GitHub contributions | +| `src/pages/Home.tsx` | Intro paragraph text (hardcoded JSX) | +| `convex/http.ts` | `SITE_URL`, `SITE_NAME`, description strings (3 locations) | +| `convex/rss.ts` | `SITE_URL`, `SITE_TITLE`, `SITE_DESCRIPTION` (RSS feeds) | +| `src/pages/Post.tsx` | `SITE_URL`, `SITE_NAME`, `DEFAULT_OG_IMAGE` (OG tags) | +| `index.html` | Title, meta description, OG tags, JSON-LD | +| `public/llms.txt` | Site name, URL, description, topics | +| `public/robots.txt` | Sitemap URL and header comment | +| `public/openapi.yaml` | API title, server URL, site name in examples | +| `public/.well-known/ai-plugin.json` | Site name, descriptions | ### Site title and description metadata @@ -424,13 +430,16 @@ These files contain the main site description text. Update them with your own ta | --------------------------------- | -------------------------------------------------------------- | | `index.html` | meta description, og:description, twitter:description, JSON-LD | | `README.md` | Main description at top of file | -| `src/pages/Home.tsx` | intro and bio text in siteConfig | -| `convex/http.ts` | description field in API responses (2 locations) | -| `convex/rss.ts` | SITE_DESCRIPTION constant | -| `public/llms.txt` | Header quote and Description field | +| `src/config/siteConfig.ts` | name, title, and bio fields | +| `src/pages/Home.tsx` | Intro paragraph (hardcoded JSX with links) | +| `convex/http.ts` | SITE_NAME constant and description strings (3 locations) | +| `convex/rss.ts` | SITE_TITLE and SITE_DESCRIPTION constants | +| `public/llms.txt` | Header quote, Name, and Description fields | +| `public/openapi.yaml` | API title and example site name | | `AGENTS.md` | Project overview section | -| `content/blog/about-this-blog.md` | Opening paragraph | +| `content/blog/about-this-blog.md` | Title, description, excerpt, and opening paragraph | | `content/pages/about.md` | excerpt field and opening paragraph | +| `content/pages/docs.md` | Opening description paragraph | ### Update Backend Configuration @@ -510,10 +519,10 @@ export default { // Blog page configuration blogPage: { - enabled: true, // Enable /blog route - showInNav: true, // Show in navigation - title: "Blog", // Nav link and page title - order: 0, // Nav order (lower = first) + enabled: true, // Enable /blog route + showInNav: true, // Show in navigation + title: "Blog", // Nav link and page title + order: 0, // Nav order (lower = first) }, displayOnHomepage: true, // Show posts on homepage @@ -581,6 +590,30 @@ Use `featuredOrder` to control display order. Lower numbers appear first. Posts Users can toggle between list and card views using the icon button next to "Get started:". To change the default view, set `featuredViewMode: "cards"` in siteConfig. +### GitHub Contributions Graph + +Display your GitHub contribution activity on the homepage. Configure in `siteConfig`: + +```typescript +gitHubContributions: { + enabled: true, // Set to false to hide + username: "yourusername", // Your GitHub username + showYearNavigation: true, // Show arrows to navigate between years + linkToProfile: true, // Click graph to open GitHub profile + title: "GitHub Activity", // Optional title above the graph +}, +``` + +| Option | Description | +| -------------------- | --------------------------------------------- | +| `enabled` | `true` to show, `false` to hide | +| `username` | Your GitHub username | +| `showYearNavigation` | Show prev/next year buttons | +| `linkToProfile` | Click graph to visit GitHub profile | +| `title` | Text above graph (set to `undefined` to hide) | + +The graph displays with theme-aware colors that match each site theme (dark, light, tan, cloud). Uses the public `github-contributions-api.jogruber.de` API (no GitHub token required). + ### Logo Gallery The homepage includes a logo gallery that can scroll infinitely or display as a static grid. Customize or disable it in siteConfig: @@ -625,14 +658,14 @@ Delete the sample files from `public/images/logos/` and clear the images array, **Configuration options:** -| Option | Description | -| ----------- | ---------------------------------------------------- | -| `enabled` | `true` to show, `false` to hide | -| `images` | Array of logo objects with `src` and optional `href` | -| `position` | `'above-footer'` or `'below-featured'` | -| `speed` | Seconds for one scroll cycle (lower = faster) | -| `title` | Text above gallery (set to `undefined` to hide) | -| `scrolling` | `true` for infinite scroll, `false` for static grid | +| Option | Description | +| ----------- | ---------------------------------------------------------- | +| `enabled` | `true` to show, `false` to hide | +| `images` | Array of logo objects with `src` and optional `href` | +| `position` | `'above-footer'` or `'below-featured'` | +| `speed` | Seconds for one scroll cycle (lower = faster) | +| `title` | Text above gallery (set to `undefined` to hide) | +| `scrolling` | `true` for infinite scroll, `false` for static grid | | `maxItems` | Max logos to show when `scrolling` is `false` (default: 4) | **Display modes:** @@ -656,13 +689,13 @@ blogPage: { displayOnHomepage: true, // Show posts on homepage ``` -| Option | Description | -| ------ | ----------- | -| `enabled` | Enable the `/blog` route | -| `showInNav` | Show Blog link in navigation | -| `title` | Text for nav link and page heading | -| `order` | Position in navigation (lower = first) | -| `displayOnHomepage` | Show post list on homepage | +| Option | Description | +| ------------------- | -------------------------------------- | +| `enabled` | Enable the `/blog` route | +| `showInNav` | Show Blog link in navigation | +| `title` | Text for nav link and page heading | +| `order` | Position in navigation (lower = first) | +| `displayOnHomepage` | Show post list on homepage | **Display options:** @@ -954,7 +987,7 @@ See [netlify-deploy-fix.md](https://github.com/waynesutton/markdown-site/blob/ma ``` markdown-site/ ├── content/ -│ ├── blog/ # Markdown blog posts +│ ├── blog/ # Markdown posts │ └── pages/ # Static pages (About, Docs, etc.) ├── convex/ # Convex backend functions │ ├── http.ts # HTTP endpoints diff --git a/public/raw/using-images-in-posts.md b/public/raw/using-images-in-posts.md index 9b82c03..a7bf1ab 100644 --- a/public/raw/using-images-in-posts.md +++ b/public/raw/using-images-in-posts.md @@ -1,6 +1,6 @@ # Using Images in Blog Posts -> Learn how to add header images, inline images, and Open Graph images to your markdown blog posts. +> Learn how to add header images, inline images, and Open Graph images to your markdown posts. --- Type: post diff --git a/src/config/siteConfig.ts b/src/config/siteConfig.ts index 2001134..3478849 100644 --- a/src/config/siteConfig.ts +++ b/src/config/siteConfig.ts @@ -89,23 +89,23 @@ export const siteConfig: SiteConfig = { images: [ { src: "/images/logos/convex-wordmark-black.svg", - href: "https://markdowncms.netlify.app/", - }, - { - src: "/images/logos/netlify.svg", href: "/about#the-real-time-twist", }, + { + src: "/images/logos/netlify.svg", + href: "https://www.netlify.com/", + }, { src: "/images/logos/markdown.svg", - href: "https://markdowncms.netlify.app/", + href: "https://markdowncms.netlify.app/docs", }, { src: "/images/logos/react.svg", - href: "https://markdowncms.netlify.app/", + href: "https://markdowncms.netlify.app/setup-guide", }, { src: "/images/logos/sample-logo-5.svg", - href: "https://markdowncms.netlify.app/", + href: "https://markdowncms.netlify.app/setup-guide", }, ], position: "above-footer",