lukasoppermann/notes

A micro page collecting some of my notes I want to have available from the web

โ˜… 2Forks 0TypeScriptGitHub โ†—Compare

Project website โ†—

README

Notes

A personal notes website built with Astro and automatically deployed to Vercel.

Features

  • ๐Ÿš€ Built with Astro for fast, modern static site generation
  • ๐Ÿ“ Markdown-based content
  • ๐Ÿ”— Obsidian transclusion syntax support for embedding content from other files
  • ๐ŸŽจ Responsive design with mobile-friendly navigation
  • ๐Ÿ”„ Automatic deployment to Vercel on every push to main
  • ๐Ÿ“ Organized content structure with categories

Development

Prerequisites

  • Node.js 20.x or higher
  • npm

Getting Started

  1. Clone the repository

  2. Install dependencies:

    npm install
  3. Start the development server:

    npm run dev
  4. Open http://localhost:4321 in your browser

Building for Production

npm run build

The built site will be in the dist/ directory.

Preview Production Build

npm run preview

Deployment

This site automatically deploys to Vercel when changes are pushed to the main branch.

Setting up Vercel Deployment

  1. Create a new project in Vercel and link it to your GitHub repository
  2. Install the Vercel CLI: npm install -g vercel
  3. Link your project: npx vercel link (follow the prompts)
  4. Add the following secret to your GitHub repository:

The .vercel/project.json file created by vercel link contains your project configuration and will be used during deployment.

Content Structure

Content is organized in markdown files within src/data/notes/. The navigation is automatically generated from the folder structure during the build process. Simply add new markdown files in the appropriate folders, and they will be included in the navigation automatically.

Obsidian Transclusion Syntax

This site supports two syntaxes for embedding content from other markdown files:

Obsidian-Style Syntax

Embed a specific section:

![[Filename#Section Heading]]

Embed an entire file:

![[Filename]]

Markdown Link-Style Syntax

Embed an entire file:

![Description](Filename.md)

This syntax also supports URL-encoded filenames:

![Cheese cake filling](Cheese%20cake%20filling%20(no-bake).md)

Note: Images are not affected. Only links to .md files are transcluded.

Example:

## Dark Chocolate Coating

Cover it with dark chocolate
![[Chocolate (tempered)#Dark chocolate]]

## Add Mascarpone Filling

![Cheese cake filling](Cheese%20cake%20filling%20(no-bake).md)

## Lemon Curd Topping

Add lemon curd topping (optional)
![[Curds#Lemon curd]]

The transclusion syntax will automatically:

  • Find the referenced file anywhere in the notes directory
  • Extract the specified section (case-insensitive heading match)
  • Include all content under that heading until the next heading of the same or higher level
  • Support URL-encoded filenames (spaces, parentheses, etc.)
  • Preserve image links (only .md files are transcluded)
  • Gracefully handle missing files or sections by leaving the original syntax in place

License

ISC

Contributors

lukasoppermanngithub-actions[bot]Copilotdependabot[bot]

Issues