> ## Documentation Index
> Fetch the complete documentation index at: https://developer.upsun.com/llms.txt
> Use this file to discover all available pages before exploring further.

# John Grubb

> Articles written by John Grubb.

<div className="blog-card-grid">
  {/* Auto-generated by blog:generate — DO NOT edit manually */}

  <a href="/posts/unknown/screencast-composer-and-continuous-integration" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/unknown/screencast-composer-and-continuous-integration/screencast-composer-and-continuous-integration.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/unknown/screencast-composer-and-continuous-integration/screencast-composer-and-continuous-integration.webp" alt="Screencast - Composer and Continuous Integration" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`platformsh-blog` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        platformsh-blog
                      </span>
                    )}

        <span className="text-xs text-subtle">Tuesday, May 9th 2017</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Screencast - Composer and Continuous Integration</h3>
      <p className="blog-card-desc">Discover how Platform.sh simplifies Composer usage and streamlines continuous integration. Learn about managing PHP applications effectively.</p>
    </div>
  </a>

  <a href="/posts/unknown/screencast-yaml" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/unknown/screencast-yaml/screencast-yaml.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/unknown/screencast-yaml/screencast-yaml.webp" alt="Screencast - Configuring your Platform.sh Project" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`platformsh-blog` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        platformsh-blog
                      </span>
                    )}

        <span className="text-xs text-subtle">Monday, December 19th 2016</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Screencast - Configuring your Platform.sh Project</h3>
      <p className="blog-card-desc">Learn to set up your project on Platform.sh, manage dependencies with infrastructure as code, and gain independence in this quick technical screencast.</p>
    </div>
  </a>

  <a href="/posts/unknown/screencast-basic-platformsh-workflow" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/unknown/screencast-basic-platformsh-workflow/screencast-basic-platformsh-workflow.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/unknown/screencast-basic-platformsh-workflow/screencast-basic-platformsh-workflow.webp" alt="Screencast - Basic Platform.sh Workflow" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`platformsh-blog` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        platformsh-blog
                      </span>
                    )}

        <span className="text-xs text-subtle">Monday, December 5th 2016</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Screencast - Basic Platform.sh Workflow</h3>
      <p className="blog-card-desc">Discover how Platform.sh makes Git branching and merging easier. Streamline your development process in this Platform.sh from Scratch series.</p>
    </div>
  </a>
</div>
