Skip to content

jonothanhunt/creative-tech-stack

Repository files navigation

Creative Tech Stack

A curated collection of posts and tools for creative coders and technologists.

License: MIT Next.js TypeScript React Tailwind CSS MDX

Creative Tech Stack tools page screenshot

Visit live site β€’ Browse tools


Contributing

Whether you're just starting out or you've been doing this for years, contributions are welcome. Add a tool, write a post, or improve the codebase.

Getting started

Prerequisites

  • Node.js 18+ or pnpm 10+
  • Git

Installation

# Clone the repository
git clone https://github.com/jonothanhunt/creative-tech-stack.git
cd creative-tech-stack

# Install dependencies
npm install
# or
pnpm install

# Start the development server
npm run dev
# or
pnpm dev

Open http://localhost:3000 and you're good to go.


Adding a tool

Tools live in a TypeScript file. No database needed.

  1. Open app/data/tools.ts

  2. Add your tool to the tools array:

{
    "name": "Your Amazing Tool",
    "description": "What it does and why it matters.",
    "image": "/images/tools/your-tool.png", // Add your image to public/images/tools/
    "type": "Tool", // Options: Tool, Library, Platform, Framework, Engine, API, etc.
    "categories": ["Creative Coding", "Real-time 3D"], // Pick from existing categories
    "stacks": ["WebGL", "JavaScript", "3D"], // Add relevant tech tags
    "featured": false, // Set to true if it's exceptional
    "links": [
        {
            "title": "Website",
            "url": "https://yourtool.com"
        },
        {
            "title": "Docs",
            "url": "https://docs.yourtool.com"
        }
    ]
}

Tip: Check existing tools in tools.ts for reference. Keep descriptions under 150 characters.

  1. Add an image (optional but recommended):

    • Place a screenshot or logo in public/images/tools/
    • Name it using kebab-case: your-tool-name.png
    • Recommended size: 1200x900px (4:3 aspect ratio)
  2. Submit a pull request:

# Fork the repository on GitHub, then clone your fork
git clone https://github.com/YOUR-USERNAME/creative-tech-stack.git
cd creative-tech-stack

# Create a new branch
git checkout -b add-your-tool-name

# Make your changes, then commit
git add .
git commit -m "Add Your Tool Name"

# Push to your fork
git push origin add-your-tool-name

Then open a pull request from your fork to the main repository.

Writing a blog post

Posts are written in MDX (Markdown + React components).

  1. Create a new file in posts/:
posts/my-awesome-article.mdx

Tip: Check out this example post to see how it works.

  1. Add frontmatter at the top:
---
title: "My Awesome Article Title"
date: "2026-01-12"
description: "A compelling summary that appears in previews and SEO."
image: "/images/posts/my-awesome-article/hero.png"
author: "Your Name"
---
  1. Write your content using Markdown:
## Introduction

Your content here...

### Subheading

More insights...
  1. Use custom components (optional):
<YouTubeEmbed url="https://youtube.com/watch?v=..." />

<VimeoEmbed url="https://vimeo.com/..." />

<LinkedInEmbed url="https://linkedin.com/embed/..." />

> πŸ’‘ **Pro Tip:** You can also use simple blockquote syntax for info blocks!
  1. Add images for your post:

    • Create a folder: public/images/posts/my-awesome-article/
    • Add your images there
    • Reference them: ![Alt text](/images/posts/my-awesome-article/image.png)
  2. Submit a pull request

Note: MDX lets you use React components directly in Markdown. See the MDX docs for more.

Advanced: adding new MDX components

Want to create a new reusable component for posts?

  1. Create the component in components/:
// components/MyCustomComponent.tsx
export default function MyCustomComponent({ children }: { children: React.ReactNode }) {
    return (
        <div className="my-custom-styling">
            {children}
        </div>
    );
}
  1. Export it from mdx-components.tsx:
import MyCustomComponent from '@/components/MyCustomComponent';

export function useMDXComponents(components: MDXComponents): MDXComponents {
    return {
        ...components,
        MyCustomComponent,
    };
}
  1. Use it in any MDX file:
<MyCustomComponent>
Your content here
</MyCustomComponent>

Project structure

creative-tech-stack/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ data/
β”‚   β”‚   └── tools.ts          # Tools database
β”‚   β”œβ”€β”€ tools/                # Tools page
β”‚   β”œβ”€β”€ newsletter/           # Blog/newsletter pages
β”‚   └── layout.tsx            # Root layout
β”œβ”€β”€ components/               # Reusable React components
β”‚   β”œβ”€β”€ YouTubeEmbed.tsx
β”‚   β”œβ”€β”€ VimeoEmbed.tsx
β”‚   β”œβ”€β”€ InfoBlock.tsx
β”‚   └── ...
β”œβ”€β”€ posts/                    # MDX blog posts
β”œβ”€β”€ public/
β”‚   └── images/
β”‚       β”œβ”€β”€ tools/            # Tool images
β”‚       └── posts/            # Blog post images
β”œβ”€β”€ lib/                      # Utility functions
└── mdx-components.tsx        # MDX component registry

Tech stack


Scripts

npm run dev          # Start dev server with Turbopack
npm run build        # Build for production
npm run start        # Start production server
npm run lint         # Run ESLint

License

MIT License - see the LICENSE file for details.


Get in touch

About

A curated collection of posts and tools for creative coders and technologists.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages