← all posts

Markdown Style Reference

A complete reference for every markdown component available on this site. Use this as a cheat sheet when writing new posts.

This post documents every markdown element available on badry.dev. Keep it around as a reference — it shows exactly how each element renders so you know what you have to work with.


Headings

H1 — Page-level title

H2 — Major section (gets a bottom border)

H3 — Subsection

H4 — Minor label (uppercase, muted)


Paragraphs and inline text

Regular paragraph text sits at 92% font size with generous line height for long-form reading. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.

Bold text stands out with a brighter color. Italic text leans and softens. You can combine them: bold italic for maximum emphasis. Use inline code for technical terms, commands, or variable names — it renders in neon green on a dark surface.

You can ==highlight text== using double equals. And reference keyboard shortcuts like Ctrl + K for the command palette.


External link to GitHub — renders in neon green with a subtle underline that brightens on hover.


Code blocks

Inline code: run astro dev to start the local server.

Fenced code block with syntax highlighting:

// Fetching posts in Astro
const posts = await Astro.glob('../posts/*.md');
const sorted = posts.sort(
  (a, b) => new Date(b.frontmatter.date) - new Date(a.frontmatter.date)
);
# Oracle SQL query via cx_Oracle
import cx_Oracle

conn = cx_Oracle.connect(user="badry", password="...", dsn="localhost/XEPDB1")
cursor = conn.cursor()
cursor.execute("SELECT * FROM projects WHERE status = 'active'")
for row in cursor:
    print(row)
-- Oracle SQL: projects with row count
SELECT
  p.project_id,
  p.name,
  COUNT(t.task_id) AS task_count
FROM projects p
LEFT JOIN tasks t ON t.project_id = p.project_id
WHERE p.status = 'active'
GROUP BY p.project_id, p.name
ORDER BY task_count DESC
FETCH FIRST 10 ROWS ONLY;
# Deploy to Vercel
npm run build
vercel --prod

Blockquotes

“The best tool is the one that disappears while you’re using it.”

Longer blockquotes work too. Use them for notable quotes, callouts, or anything worth setting apart from the main flow. The neon green left border draws the eye without shouting.


Lists

Unordered list

  • Items render with a arrow marker in neon green
  • Clean, terminal-native feel
  • Nesting works too:
    • Sub-item one
    • Sub-item two
  • Back to top level

Ordered list

  1. Step one — install dependencies
  2. Step two — configure environment variables
  3. Step three — run the dev server
  4. Step four — ship it

Tables

ToolCategoryUse case
Next.jsFrontendApp routing, SSR, static generation
FlaskBackendREST APIs, internal tooling
Sanity CMSContentStructured content, headless CMS
Oracle SQLDatabaseComplex queries, enterprise data
AstroStaticMarkdown-first sites (this one)
VercelDeployFrontend hosting, edge functions

Horizontal rules

Use --- to insert a full-width divider. Good for separating major sections within a long post.


Images

Images render with a dark border and rounded corners. Add a caption by placing an italic line immediately after:

Alt text describing the image Caption goes here — rendered in small muted text below the image.


Frontmatter reference

Every post needs frontmatter at the top:

---
layout: ../../layouts/Post.astro
title: "Your Post Title"
date: 2026-02-17
excerpt: "One sentence summary shown in listings and meta description."
tags: ["tag-one", "tag-two"]
---
FieldRequiredNotes
layoutAlways ../../layouts/Post.astro
titleShown in hero and <title> tag
dateISO format YYYY-MM-DD, used for sorting
excerptOptionalShown in post listings and meta
tagsOptionalRendered as green badges in the post hero

File naming convention

Posts live in src/pages/posts/. The filename becomes the URL:

src/pages/posts/my-first-post.md  →  badry.dev/posts/my-first-post
src/pages/posts/oracle-tips.md    →  badry.dev/posts/oracle-tips
src/pages/posts/ai-workflow.md    →  badry.dev/posts/ai-workflow

Use lowercase kebab-case. Keep it short and descriptive.


Quick start

To add a new post:

  1. Duplicate this file or any existing post
  2. Update the frontmatter (title, date, excerpt, tags)
  3. Write your content below the second ---
  4. Save — Astro picks it up automatically, no config needed
  5. It will appear in the homepage listing and /posts page sorted by date