Home
Softono
devtools.fm

devtools.fm

Open source MDX
31
Stars
2
Forks
5
Issues
0
Watchers
1 week
Last Commit

About devtools.fm

A podcast about developer tools

Platforms

Web Self-hosted

Languages

MDX

DevTools.fm

A podcast about developer tools and the people who make them.

Getting Started

Prerequisites

  • mise - for managing Node.js and pnpm versions

Installation

# Install mise (if not already installed)
curl https://mise.run | sh

# Install project dependencies and tools
mise install          # Installs Node.js 22.17.0 and pnpm 10.14.0
mise run install      # Installs npm dependencies

# Start development server
mise run dev

Open http://localhost:3000 to view the site.

Development Commands

All commands can be run through mise for consistent environment management:

mise run dev                # Start Next.js dev server
mise run build              # Build for production (includes RSS generation)
mise run build-rss          # Generate RSS feed only
mise run create-new-episode # Create a new episode template
mise run publish-episode    # Publish an episode (see PRODUCTION_PROCESS.md)

Alternatively, you can use pnpm directly after running mise install:

pnpm dev                    # Start Next.js dev server
pnpm build                  # Build for production
pnpm build-rss              # Generate RSS feed only
pnpm create-new-episode     # Create a new episode template
pnpm publish-episode        # Publish an episode

Standard.site

This repo now includes a Sequoia-based standard.site publishing workflow for episodes, following the same pattern as hipstersmoothie.com-2: a checked-in sequoia.json, site-wide publication discovery in the root layout, and document verification tags rendered by Next.

Setup

  1. Install dependencies: pnpm install
  2. Initialize Sequoia in this repo:
    • pnpm exec sequoia login
    • pnpm exec sequoia init

This creates sequoia.json, which the app reads at runtime to emit the site.standard.publication link tag.

Commands

pnpm standard-site:prepare-content   # Generate Sequoia-ready episode markdown
pnpm publish:dry                     # Preview what Sequoia will publish
pnpm publish                         # Publish to standard.site

Notes

  • The source of truth remains pages/episode/*.mdx.
  • A generated mirror is written to .generated/sequoia-content/ for Sequoia to scan.
  • Published atUri values stay in the generated Sequoia content, not the source MDX.
  • This app uses manual verification tags on episode pages instead of sequoia inject, which is a better fit for the Next.js deployment model used here.

Project Structure

devtools.fm/
├── app/                    # Next.js App Router pages and API routes
│   ├── episode/[id]/       # Individual episode pages
│   ├── episodes/           # Episode listing
│   ├── guests/             # Guest information
│   ├── sponsors/           # Sponsor pages
│   └── api/                # API endpoints for forms
├── pages/episode/          # Episode content (MDX files)
│   ├── 1.mdx              # Episode 1
│   ├── 2.mdx              # Episode 2
│   └── ...                # Episodes 3-148+
├── components/             # React components
├── utils/                  # Utility functions
│   ├── processMdx.ts      # MDX parsing and processing
│   └── generate-rss.ts    # RSS feed generation
├── scripts/                # Build and content scripts
└── public/                 # Static assets

Episode Format

Episodes are written in MDX format with structured content:

---
title: "Episode Title"
youtube: https://youtube.com/watch?v=VIDEO_ID
spotify: https://open.spotify.com/episode/EPISODE_ID
tags: tag1, tag2, tag3
---

{/* TAB: SHOW NOTES */}
Episode description and links...

{/* TAB: SECTIONS */}
00:00 - Introduction
05:30 - Main topic
...

{/* TAB: TRANSCRIPT */}
**Speaker Name:** Transcript content...

Contributing

For information on the production process and how to create new episodes, see PRODUCTION_PROCESS.md.

License

This project is open source and available under the MIT License.

Acknowledgments

Thanks to Vercel for hosting and to all our supporters and sponsors who make this podcast possible.