<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Robert Saylor</title>
    <description>The latest articles on DEV Community by Robert Saylor (@robert_saylor_c9db74549e2).</description>
    <link>https://dev.to/robert_saylor_c9db74549e2</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2171165%2F45f5db5d-578c-4e01-9bc7-0408c1b11dc1.jpg</url>
      <title>DEV Community: Robert Saylor</title>
      <link>https://dev.to/robert_saylor_c9db74549e2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/robert_saylor_c9db74549e2"/>
    <language>en</language>
    <item>
      <title>Recovering a Hacked WordPress Site and Rebuilding It with Laravel</title>
      <dc:creator>Robert Saylor</dc:creator>
      <pubDate>Wed, 03 Jun 2026 10:16:15 +0000</pubDate>
      <link>https://dev.to/robert_saylor_c9db74549e2/recovering-a-hacked-wordpress-site-and-rebuilding-it-with-laravel-2fbn</link>
      <guid>https://dev.to/robert_saylor_c9db74549e2/recovering-a-hacked-wordpress-site-and-rebuilding-it-with-laravel-2fbn</guid>
      <description>&lt;p&gt;Recently I was brought into a project involving a legacy WordPress website that had suffered a security incident. By the time I got access, parts of the site were no longer functioning correctly, content was missing, and the overall platform had become difficult to maintain.&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://customphpdesign.com" rel="noopener noreferrer"&gt;Custom PHP Design&lt;/a&gt;, we frequently help businesses modernize aging websites and web applications, but this project presented a unique challenge: recovering years of content while rebuilding the platform from the ground up.&lt;/p&gt;

&lt;p&gt;The client wanted to preserve as much content as possible while moving to a more maintainable and secure platform.&lt;/p&gt;

&lt;p&gt;Rather than attempting another WordPress recovery, we decided to rebuild the site entirely using Laravel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Assessing the Damage
&lt;/h2&gt;

&lt;p&gt;The first step was determining what could be recovered.&lt;/p&gt;

&lt;p&gt;While portions of the site's database were available, the content was incomplete. Some pages existed only in archived versions of the website, while others had been modified or removed over time.&lt;/p&gt;

&lt;p&gt;The challenge wasn't just rebuilding the application—it was reconstructing years of content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Leveraging the Wayback Machine
&lt;/h2&gt;

&lt;p&gt;One of the most valuable tools during the recovery process was the Wayback Machine.&lt;/p&gt;

&lt;p&gt;Archived snapshots allowed us to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recover missing pages&lt;/li&gt;
&lt;li&gt;Verify historical content&lt;/li&gt;
&lt;li&gt;Rebuild navigation structures&lt;/li&gt;
&lt;li&gt;Restore articles that were no longer present in backups&lt;/li&gt;
&lt;li&gt;Cross-reference content against available database records&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many developers think of the Wayback Machine as a research tool, but in this case it became an essential part of the disaster recovery process.&lt;/p&gt;

&lt;p&gt;Without those archived snapshots, a significant amount of content would have been permanently lost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We Chose Laravel
&lt;/h2&gt;

&lt;p&gt;Once we had a recovery strategy, the next decision was selecting a platform.&lt;/p&gt;

&lt;p&gt;We chose Laravel because it provided:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A modern application architecture&lt;/li&gt;
&lt;li&gt;Strong security defaults&lt;/li&gt;
&lt;li&gt;Flexible routing&lt;/li&gt;
&lt;li&gt;Better long-term maintainability&lt;/li&gt;
&lt;li&gt;Full control over the data model&lt;/li&gt;
&lt;li&gt;Simplified deployment workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of fitting the project back into WordPress, Laravel allowed us to build exactly what the client needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Migration Process
&lt;/h2&gt;

&lt;p&gt;The migration involved more than simply importing content.&lt;/p&gt;

&lt;p&gt;We had to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extract recovered content&lt;/li&gt;
&lt;li&gt;Clean legacy HTML&lt;/li&gt;
&lt;li&gt;Normalize URLs&lt;/li&gt;
&lt;li&gt;Rebuild internal links&lt;/li&gt;
&lt;li&gt;Restore media references&lt;/li&gt;
&lt;li&gt;Generate SEO-friendly slugs&lt;/li&gt;
&lt;li&gt;Validate imported records&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To speed up the process, we built custom import scripts that transformed recovered content into Laravel models.&lt;/p&gt;

&lt;p&gt;Automation handled the repetitive work while manual review ensured content quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preserving Search Visibility
&lt;/h2&gt;

&lt;p&gt;A major concern during any rebuild is SEO.&lt;/p&gt;

&lt;p&gt;To minimize disruption, we focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Preserving URL structures where possible&lt;/li&gt;
&lt;li&gt;Implementing redirects&lt;/li&gt;
&lt;li&gt;Generating XML sitemaps&lt;/li&gt;
&lt;li&gt;Adding canonical URLs&lt;/li&gt;
&lt;li&gt;Creating structured data&lt;/li&gt;
&lt;li&gt;Maintaining internal linking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By treating SEO as part of the migration rather than an afterthought, we were able to launch the new platform without sacrificing discoverability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;A few things stood out during this project:&lt;/p&gt;

&lt;h3&gt;
  
  
  Backups Aren't Always Enough
&lt;/h3&gt;

&lt;p&gt;Many organizations assume they can recover quickly from backups, but gaps often exist.&lt;/p&gt;

&lt;h3&gt;
  
  
  Archive Services Can Be Invaluable
&lt;/h3&gt;

&lt;p&gt;The Wayback Machine provided access to content that was unavailable elsewhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rebuilding Can Be More Efficient Than Repairing
&lt;/h3&gt;

&lt;p&gt;In some situations, continuing to patch a heavily customized legacy system costs more than rebuilding on a modern framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security and Maintainability Matter
&lt;/h3&gt;

&lt;p&gt;Moving to Laravel gave the client a platform that was easier to secure, update, and extend.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modern Frameworks Provide Long-Term Flexibility
&lt;/h3&gt;

&lt;p&gt;By rebuilding the application in Laravel, the client now has a platform that can continue to evolve as business requirements change without being constrained by legacy plugins or themes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This project started as a recovery effort but became an opportunity to modernize an aging platform.&lt;/p&gt;

&lt;p&gt;By combining archived content from the Wayback Machine with custom migration tooling and a Laravel rebuild, we were able to preserve years of valuable content while delivering a faster, more maintainable application.&lt;/p&gt;

&lt;p&gt;Sometimes the best recovery plan isn't restoring what existed before—it's building something better.&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://customphpdesign.com" rel="noopener noreferrer"&gt;Custom PHP Design&lt;/a&gt;, we specialize in Laravel development, legacy PHP modernization, AWS infrastructure, and custom web application development. Projects like this demonstrate how the right recovery strategy can turn a difficult situation into an opportunity to build a stronger, more secure platform for the future.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>wordpress</category>
      <category>webdev</category>
      <category>php</category>
    </item>
    <item>
      <title>Modernizing a 10+ Year Old PHP Application into Laravel 12 (Historical Text Archive Case Study)</title>
      <dc:creator>Robert Saylor</dc:creator>
      <pubDate>Sun, 29 Mar 2026 23:14:13 +0000</pubDate>
      <link>https://dev.to/robert_saylor_c9db74549e2/modernizing-a-10-year-old-php-application-into-laravel-12-historical-text-archive-case-study-9b2</link>
      <guid>https://dev.to/robert_saylor_c9db74549e2/modernizing-a-10-year-old-php-application-into-laravel-12-historical-text-archive-case-study-9b2</guid>
      <description>&lt;p&gt;When you inherit a PHP application that has been running for over a decade, stability and technical debt often grow together.&lt;/p&gt;

&lt;p&gt;That was the situation with the Historical Text Archive (HTA), a long-running content site containing hundreds of historical articles, primary sources, and educational material.&lt;/p&gt;

&lt;p&gt;Over time, the original codebase became harder to maintain, harder to extend, and increasingly difficult to integrate with modern tooling.&lt;/p&gt;

&lt;p&gt;Rather than continue patching the legacy system, we decided to modernize the platform using Laravel 12 while preserving the data structure and URLs that search engines already trust.&lt;/p&gt;

&lt;p&gt;HTA is publicly available here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://historicaltextarchive.org" rel="noopener noreferrer"&gt;https://historicaltextarchive.org&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Goals of the Migration
&lt;/h2&gt;

&lt;p&gt;We wanted to improve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;maintainability&lt;/li&gt;
&lt;li&gt;security&lt;/li&gt;
&lt;li&gt;search functionality&lt;/li&gt;
&lt;li&gt;extensibility&lt;/li&gt;
&lt;li&gt;performance&lt;/li&gt;
&lt;li&gt;developer experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;while keeping:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;existing URLs intact&lt;/li&gt;
&lt;li&gt;article IDs stable&lt;/li&gt;
&lt;li&gt;database structure understandable&lt;/li&gt;
&lt;li&gt;SEO authority preserved&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Challenges of Legacy PHP
&lt;/h2&gt;

&lt;p&gt;The original application was built more than 10 years ago using procedural PHP and a MySQL database.&lt;/p&gt;

&lt;p&gt;Common issues we encountered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mixed business logic and presentation&lt;/li&gt;
&lt;li&gt;limited separation of concerns&lt;/li&gt;
&lt;li&gt;manual SQL queries everywhere&lt;/li&gt;
&lt;li&gt;inconsistent naming conventions&lt;/li&gt;
&lt;li&gt;limited testability&lt;/li&gt;
&lt;li&gt;difficulty adding new features&lt;/li&gt;
&lt;li&gt;older authentication approach&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Despite these limitations, the schema itself was solid. The database structure had aged well, making it a good candidate for migration.&lt;/p&gt;




&lt;h2&gt;
  
  
  Migration Strategy
&lt;/h2&gt;

&lt;p&gt;Instead of rewriting everything at once, we focused on incremental modernization.&lt;/p&gt;

&lt;p&gt;High-level approach:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;export existing database schema&lt;/li&gt;
&lt;li&gt;generate Laravel migrations from schema&lt;/li&gt;
&lt;li&gt;generate Eloquent models&lt;/li&gt;
&lt;li&gt;replicate core functionality&lt;/li&gt;
&lt;li&gt;preserve routes and URLs&lt;/li&gt;
&lt;li&gt;add modern features&lt;/li&gt;
&lt;li&gt;improve search capabilities&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This approach reduced risk and allowed the application to remain functional during development.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Converting SQL Schema into Laravel Migrations
&lt;/h2&gt;

&lt;p&gt;We started with a schema.sql dump from the legacy application.&lt;/p&gt;

&lt;p&gt;From there we generated Laravel migration files that recreated the structure in a fresh database.&lt;/p&gt;

&lt;p&gt;Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;version controlled schema&lt;/li&gt;
&lt;li&gt;easier onboarding for future developers&lt;/li&gt;
&lt;li&gt;consistent database structure across environments&lt;/li&gt;
&lt;li&gt;rollback capability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example migration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Schema&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'articles'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Blueprint&lt;/span&gt; &lt;span class="nv"&gt;$table&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$table&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;increments&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'artid'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$table&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;integer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'secid'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;index&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$table&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'title'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$table&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'published'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;nullable&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$table&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'body'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 2: Generating Eloquent Models
&lt;/h2&gt;

&lt;p&gt;Once migrations were in place, we created Eloquent models for each major table.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Article&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Model&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="nv"&gt;$primaryKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'artid'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="nv"&gt;$fillable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'title'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'secid'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'published'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'body'&lt;/span&gt;
    &lt;span class="p"&gt;];&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;section&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;belongsTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Section&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;class&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'secid'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;structured ORM relationships&lt;/li&gt;
&lt;li&gt;simplified queries&lt;/li&gt;
&lt;li&gt;reusable logic&lt;/li&gt;
&lt;li&gt;easier refactoring&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 3: Preserving SEO-Friendly URLs
&lt;/h2&gt;

&lt;p&gt;One of the most important requirements was preserving search engine rankings.&lt;/p&gt;

&lt;p&gt;Many HTA articles have been indexed for years.&lt;/p&gt;

&lt;p&gt;Breaking URLs would:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reduce search visibility&lt;/li&gt;
&lt;li&gt;lose backlinks&lt;/li&gt;
&lt;li&gt;create poor user experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We maintained existing routes wherever possible:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Route&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/articles/{artid}/{slug?}'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;ArticleController&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;class&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'show'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allowed legacy URLs to continue working without redirects.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Improving Search
&lt;/h2&gt;

&lt;p&gt;Search is central to any archive.&lt;/p&gt;

&lt;p&gt;The legacy system used simple SQL queries which worked but were limited.&lt;/p&gt;

&lt;p&gt;Laravel makes it easier to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;expand search fields&lt;/li&gt;
&lt;li&gt;add filters&lt;/li&gt;
&lt;li&gt;build indexing logic&lt;/li&gt;
&lt;li&gt;support future AI categorization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example search query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Article&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;query&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'title'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'like'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"%&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$search&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;%"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;orWhere&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'body'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'like'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"%&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$search&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;%"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;paginate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Future improvements may include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;full text indexing&lt;/li&gt;
&lt;li&gt;semantic search&lt;/li&gt;
&lt;li&gt;tagging automation&lt;/li&gt;
&lt;li&gt;historical topic clustering&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 5: Modern Development Workflow
&lt;/h2&gt;

&lt;p&gt;Laravel provides a modern toolkit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;migrations&lt;/li&gt;
&lt;li&gt;artisan CLI&lt;/li&gt;
&lt;li&gt;blade templates&lt;/li&gt;
&lt;li&gt;validation rules&lt;/li&gt;
&lt;li&gt;routing system&lt;/li&gt;
&lt;li&gt;middleware&lt;/li&gt;
&lt;li&gt;queue support&lt;/li&gt;
&lt;li&gt;testing tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example artisan usage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan migrate
php artisan make:model Article
php artisan make:controller ArticleController
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Development is now faster and more consistent.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 6: Preparing for Future Features
&lt;/h2&gt;

&lt;p&gt;With Laravel in place, HTA can now expand into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;newsletter automation&lt;/li&gt;
&lt;li&gt;"On this day in history" article discovery&lt;/li&gt;
&lt;li&gt;improved article categorization&lt;/li&gt;
&lt;li&gt;editorial workflow improvements&lt;/li&gt;
&lt;li&gt;API endpoints&lt;/li&gt;
&lt;li&gt;AI assisted tagging&lt;/li&gt;
&lt;li&gt;advanced search capabilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because the foundation is now structured, new features are significantly easier to implement.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;p&gt;Migrating a legacy PHP application does not require abandoning everything.&lt;/p&gt;

&lt;p&gt;In many cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the database design is still valuable&lt;/li&gt;
&lt;li&gt;the content is still valuable&lt;/li&gt;
&lt;li&gt;the domain authority is still valuable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Laravel allows modernization without losing what already works.&lt;/p&gt;

&lt;p&gt;For HTA, the result is a platform that keeps its historical depth while gaining modern flexibility.&lt;/p&gt;




&lt;h2&gt;
  
  
  Live Site
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://historicaltextarchive.org" rel="noopener noreferrer"&gt;https://historicaltextarchive.org&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;If you are working with a legacy PHP application, start with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;database migration&lt;/li&gt;
&lt;li&gt;model structure&lt;/li&gt;
&lt;li&gt;route preservation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Modernization can happen incrementally without disrupting users.&lt;/p&gt;

&lt;p&gt;Sometimes the best upgrade is not replacing everything, but building a better foundation underneath what already exists.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>webdev</category>
      <category>history</category>
    </item>
    <item>
      <title>VidShare Just Got Approved for Facebook, Instagram, and TikTok 🎉</title>
      <dc:creator>Robert Saylor</dc:creator>
      <pubDate>Fri, 27 Mar 2026 16:10:28 +0000</pubDate>
      <link>https://dev.to/robert_saylor_c9db74549e2/vidshare-just-got-approved-for-facebook-instagram-and-tiktok-511k</link>
      <guid>https://dev.to/robert_saylor_c9db74549e2/vidshare-just-got-approved-for-facebook-instagram-and-tiktok-511k</guid>
      <description>&lt;p&gt;This week was a big milestone for &lt;strong&gt;VidShare&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After weeks of development, testing, and API reviews, &lt;strong&gt;&lt;a href="https://vidshare.us" rel="noopener noreferrer"&gt;VidShare&lt;/a&gt; is now approved to publish video content to Facebook, Instagram, and TikTok&lt;/strong&gt;, bringing us closer to the goal of making video distribution simple again.&lt;/p&gt;

&lt;p&gt;VidShare started with a simple idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Upload once, shape the post, and publish across your video stack.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Creators shouldn’t have to upload the same video 5+ times just to stay consistent online.&lt;/p&gt;

&lt;p&gt;And now, that workflow is finally becoming reality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Publishing video content across multiple platforms is still surprisingly manual.&lt;/p&gt;

&lt;p&gt;Even experienced creators often:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Export the same video multiple times&lt;/li&gt;
&lt;li&gt;Resize or tweak captions per platform&lt;/li&gt;
&lt;li&gt;Upload separately to each social network&lt;/li&gt;
&lt;li&gt;Try to keep everything scheduled consistently&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This repetitive work slows creators down and makes consistency harder than it should be.&lt;/p&gt;

&lt;p&gt;Social media scheduling tools have existed for years, helping marketers plan and publish content more efficiently across channels.&lt;/p&gt;

&lt;p&gt;VidShare focuses specifically on video-first creators, simplifying the process of distributing video content across multiple platforms from one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Newly Approved Platforms
&lt;/h2&gt;

&lt;p&gt;This week, VidShare received approval for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Facebook video publishing&lt;/li&gt;
&lt;li&gt;Instagram video publishing&lt;/li&gt;
&lt;li&gt;TikTok draft publishing&lt;/li&gt;
&lt;li&gt;LinkedIn video publishing (already available)&lt;/li&gt;
&lt;li&gt;YouTube publishing&lt;/li&gt;
&lt;li&gt;Pinterest video support&lt;/li&gt;
&lt;li&gt;Additional platforms including Bluesky and Mastodon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With these approvals, creators can now manage most of their core video distribution workflow from a single dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current Workflow Inside VidShare
&lt;/h2&gt;

&lt;p&gt;The workflow is intentionally simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upload your video once&lt;/li&gt;
&lt;li&gt;Customize captions for each platform if needed&lt;/li&gt;
&lt;li&gt;Choose publish time or schedule&lt;/li&gt;
&lt;li&gt;VidShare distributes the content automatically&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No more jumping between apps just to post the same content repeatedly.&lt;/p&gt;

&lt;h2&gt;
  
  
  TikTok Draft Support
&lt;/h2&gt;

&lt;p&gt;One of the most requested features has been TikTok support.&lt;/p&gt;

&lt;p&gt;TikTok’s API review process is known to be more restrictive than other platforms, particularly around content publishing permissions.&lt;/p&gt;

&lt;p&gt;Instead of immediately publishing videos publicly, VidShare currently supports sending videos directly to the user's TikTok drafts inbox, giving creators full control before posting.&lt;/p&gt;

&lt;p&gt;This provides a balance between automation and creative flexibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We Built VidShare
&lt;/h2&gt;

&lt;p&gt;VidShare was created after experiencing the same frustration many creators have:&lt;/p&gt;

&lt;p&gt;Uploading the same video repeatedly across platforms wastes time that could be spent creating better content.&lt;/p&gt;

&lt;p&gt;Many existing tools focus heavily on analytics or enterprise workflows.&lt;/p&gt;

&lt;p&gt;VidShare focuses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;simplicity&lt;/li&gt;
&lt;li&gt;speed&lt;/li&gt;
&lt;li&gt;creator-first workflow&lt;/li&gt;
&lt;li&gt;AI-assisted optimization&lt;/li&gt;
&lt;li&gt;reducing repetitive tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is not to replace creativity, but to remove friction.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next
&lt;/h2&gt;

&lt;p&gt;Now that major platform approvals are in place, the roadmap becomes clearer.&lt;/p&gt;

&lt;p&gt;Upcoming areas of exploration include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;improved scheduling workflows&lt;/li&gt;
&lt;li&gt;bulk upload capabilities&lt;/li&gt;
&lt;li&gt;expanded AI optimization tools&lt;/li&gt;
&lt;li&gt;deeper integrations with additional platforms&lt;/li&gt;
&lt;li&gt;improved creator discovery features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One step at a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build in Public
&lt;/h2&gt;

&lt;p&gt;VidShare is still early, but momentum is building quickly.&lt;/p&gt;

&lt;p&gt;Recent milestones include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-platform publishing support&lt;/li&gt;
&lt;li&gt;AI-assisted captions and descriptions&lt;/li&gt;
&lt;li&gt;unified video calendar&lt;/li&gt;
&lt;li&gt;OAuth integrations across major platforms&lt;/li&gt;
&lt;li&gt;creator-focused workflow design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And now:&lt;/p&gt;

&lt;p&gt;Facebook, Instagram, and TikTok approval.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try VidShare
&lt;/h2&gt;

&lt;p&gt;If you create video content and want to simplify distribution:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vidshare.us" rel="noopener noreferrer"&gt;VidShare&lt;/a&gt; is designed to help you stay consistent without increasing workload.&lt;/p&gt;

&lt;p&gt;Upload once. Publish everywhere.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>news</category>
      <category>automation</category>
      <category>startup</category>
    </item>
    <item>
      <title>Introducing Get Discovered: A New Way for Creators to Grow with VidShare</title>
      <dc:creator>Robert Saylor</dc:creator>
      <pubDate>Thu, 19 Mar 2026 12:15:49 +0000</pubDate>
      <link>https://dev.to/robert_saylor_c9db74549e2/introducing-get-discovered-a-new-way-for-creators-to-grow-with-vidshare-i58</link>
      <guid>https://dev.to/robert_saylor_c9db74549e2/introducing-get-discovered-a-new-way-for-creators-to-grow-with-vidshare-i58</guid>
      <description>&lt;p&gt;If you’ve ever uploaded content and felt like it just… disappeared into the void—you’re not alone.&lt;/p&gt;

&lt;p&gt;One of the hardest parts of being a creator today isn’t making content.&lt;/p&gt;

&lt;p&gt;It’s getting noticed.&lt;/p&gt;

&lt;p&gt;That’s exactly why we built something new inside VidShare:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👉 Get Discovered&lt;/strong&gt;*&lt;br&gt;
&lt;a href="https://vidshare.us/get-discovered" rel="noopener noreferrer"&gt;https://vidshare.us/get-discovered&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 The Problem
&lt;/h2&gt;

&lt;p&gt;Creators today are everywhere—YouTube, Instagram, TikTok, Pinterest… the list never ends.&lt;/p&gt;

&lt;p&gt;Tools like VidShare already help solve one big issue:&lt;br&gt;
upload once, distribute everywhere.&lt;/p&gt;

&lt;p&gt;But distribution alone doesn’t solve visibility.&lt;/p&gt;

&lt;p&gt;Because even if your content is everywhere…&lt;br&gt;
it still has to compete with everything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 The Idea Behind Get Discovered
&lt;/h2&gt;

&lt;p&gt;We wanted to flip the script.&lt;/p&gt;

&lt;p&gt;Instead of chasing algorithms, what if creators had a dedicated space to be seen?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get Discovered&lt;/strong&gt; is exactly that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A place where creators can feature themselves&lt;/li&gt;
&lt;li&gt;A system where visibility is earned through engagement&lt;/li&gt;
&lt;li&gt;A platform designed to help creators grow their audience organically&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔥 How It Works
&lt;/h2&gt;

&lt;p&gt;Here’s the core concept:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Creators Sign Up (Free)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anyone can create an account and join the discovery system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Get Featured&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Creators are scheduled into a featured window where they get visibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Community Voting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;During that time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users can upvote creators&lt;/li&gt;
&lt;li&gt;The most engaging creators rise to the top&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Follow &amp;amp; Grow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Visitors can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click into creator profiles&lt;/li&gt;
&lt;li&gt;Follow them on their platforms&lt;/li&gt;
&lt;li&gt;Discover new content worth watching&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧠 Why This Matters
&lt;/h2&gt;

&lt;p&gt;Most platforms are built around algorithms.&lt;/p&gt;

&lt;p&gt;Get Discovered is built around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People&lt;/li&gt;
&lt;li&gt;Community&lt;/li&gt;
&lt;li&gt;Fair exposure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It creates a level playing field where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New creators can compete&lt;/li&gt;
&lt;li&gt;Small creators can be seen&lt;/li&gt;
&lt;li&gt;Great content actually has a chance to win&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔗 Built to Work With Your Existing Content
&lt;/h2&gt;

&lt;p&gt;This isn’t another platform you have to “start over” on.&lt;/p&gt;

&lt;p&gt;It works alongside everything you’re already doing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upload once with VidShare&lt;/li&gt;
&lt;li&gt;Distribute everywhere&lt;/li&gt;
&lt;li&gt;Then use Get Discovered to drive attention back to you&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 What’s Next
&lt;/h2&gt;

&lt;p&gt;This is just the beginning.&lt;/p&gt;

&lt;p&gt;We’re exploring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Leaderboards&lt;/li&gt;
&lt;li&gt;Creator tiers&lt;/li&gt;
&lt;li&gt;Featured categories&lt;/li&gt;
&lt;li&gt;Deeper analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  👉 Try It Out
&lt;/h2&gt;

&lt;p&gt;If you’re a content creator looking to grow your audience:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check it out here:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://vidshare.us/get-discovered" rel="noopener noreferrer"&gt;https://vidshare.us/get-discovered&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Build a Tool to Stop Uploading the Same Video 5 Times</title>
      <dc:creator>Robert Saylor</dc:creator>
      <pubDate>Wed, 18 Mar 2026 11:01:24 +0000</pubDate>
      <link>https://dev.to/robert_saylor_c9db74549e2/i-build-a-tool-to-stop-uploading-the-same-video-5-times-1341</link>
      <guid>https://dev.to/robert_saylor_c9db74549e2/i-build-a-tool-to-stop-uploading-the-same-video-5-times-1341</guid>
      <description>&lt;p&gt;As a developer and a content creator, I ran into a problem that felt way more painful than it should be:&lt;/p&gt;

&lt;p&gt;Uploading the same video… over and over… to different platforms.&lt;/p&gt;

&lt;p&gt;My workflow looked like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upload to YouTube&lt;/li&gt;
&lt;li&gt;Upload again to Pinterest&lt;/li&gt;
&lt;li&gt;Upload again to Twitch&lt;/li&gt;
&lt;li&gt;Upload again to Mastodon&lt;/li&gt;
&lt;li&gt;Upload again to Bluesky&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every. Single. Time.&lt;/p&gt;

&lt;p&gt;It wasn’t just repetitive — it made it harder to stay consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Problem Isn’t Uploading — It’s Friction
&lt;/h2&gt;

&lt;p&gt;At first, I thought the issue was just “too many platforms.”&lt;/p&gt;

&lt;p&gt;But after doing this repeatedly, I realized something deeper:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The real problem is friction between platforms.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Each platform:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;has its own upload flow&lt;/li&gt;
&lt;li&gt;its own UI&lt;/li&gt;
&lt;li&gt;its own quirks&lt;/li&gt;
&lt;li&gt;its own timing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even small differences add up.&lt;/p&gt;

&lt;p&gt;And when posting becomes annoying, consistency drops.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built (For Myself First)
&lt;/h2&gt;

&lt;p&gt;So I built a tool called VidShare.&lt;/p&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Upload once → distribute everywhere.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of repeating the same process 5 times, I wanted a single workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upload video once&lt;/li&gt;
&lt;li&gt;Select platforms&lt;/li&gt;
&lt;li&gt;Let the system handle the rest&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What Works Today
&lt;/h2&gt;

&lt;p&gt;Right now, VidShare supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;YouTube&lt;/li&gt;
&lt;li&gt;Pinterest&lt;/li&gt;
&lt;li&gt;Twitch&lt;/li&gt;
&lt;li&gt;Mastodon&lt;/li&gt;
&lt;li&gt;Bluesky&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some platforms were easy.&lt;/p&gt;

&lt;p&gt;Others… not so much.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hardest Part Wasn’t the Code
&lt;/h2&gt;

&lt;p&gt;Surprisingly, building the system wasn’t the hardest part.&lt;/p&gt;

&lt;p&gt;Getting &lt;strong&gt;platform approvals&lt;/strong&gt; was.&lt;/p&gt;

&lt;p&gt;If you’ve ever worked with APIs like Meta or TikTok, you already know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;strict permission reviews&lt;/li&gt;
&lt;li&gt;unclear requirements&lt;/li&gt;
&lt;li&gt;multiple submission cycles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At one point, I had to build an entire UI just to prove I was using a permission correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned Building This
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Repetition is a product opportunity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If something feels annoying every time you do it, there’s probably a product hiding there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. APIs are the real bottleneck&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can build fast — but approvals slow everything down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Consistency beats perfection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Making it easier to post consistently is more valuable than optimizing each post individually.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where This Is Going
&lt;/h2&gt;

&lt;p&gt;I’m currently working through approvals for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Facebook&lt;/li&gt;
&lt;li&gt;Instagram&lt;/li&gt;
&lt;li&gt;TikTok&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once those are in, the workflow becomes much more powerful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Most creators don’t struggle with making content.&lt;/p&gt;

&lt;p&gt;They struggle with distributing it efficiently.&lt;/p&gt;

&lt;p&gt;That’s the problem I’m trying to solve.&lt;/p&gt;

&lt;p&gt;If you're dealing with the same issue, I’d love to hear how you're handling multi-platform posting.&lt;/p&gt;

&lt;p&gt;Are you doing it manually, or using tools to streamline it?&lt;/p&gt;

&lt;p&gt;If you're dealing with the same problem, you can check it out here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://vidshare.us" rel="noopener noreferrer"&gt;https://vidshare.us&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love to hear how you're handling multi-platform posting.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>productivity</category>
      <category>showdev</category>
      <category>socialmedia</category>
    </item>
    <item>
      <title>I got tired of uploading videos to multiple platforms, so I built this</title>
      <dc:creator>Robert Saylor</dc:creator>
      <pubDate>Tue, 17 Mar 2026 12:33:53 +0000</pubDate>
      <link>https://dev.to/robert_saylor_c9db74549e2/i-got-tired-of-uploading-videos-to-multiple-platforms-so-i-built-this-3a30</link>
      <guid>https://dev.to/robert_saylor_c9db74549e2/i-got-tired-of-uploading-videos-to-multiple-platforms-so-i-built-this-3a30</guid>
      <description>&lt;p&gt;If you create video content, you probably know this workflow:&lt;/p&gt;

&lt;p&gt;Record or edit a video&lt;br&gt;&lt;br&gt;
Upload to YouTube&lt;br&gt;&lt;br&gt;
Then upload the same video to TikTok&lt;br&gt;&lt;br&gt;
Then Instagram&lt;br&gt;&lt;br&gt;
Then maybe Pinterest or others  &lt;/p&gt;

&lt;p&gt;Each platform has its own process, formatting, scheduling, and quirks.&lt;/p&gt;

&lt;p&gt;What should be simple turns into a repetitive, time-consuming task.&lt;/p&gt;

&lt;p&gt;I ran into this myself after growing a small audience on TikTok. When I started posting to YouTube and other platforms, I realized I was spending more time uploading and managing posts than actually creating content.&lt;/p&gt;

&lt;p&gt;And it only gets worse as you scale.&lt;/p&gt;

&lt;p&gt;The problem isn’t creating content anymore — it’s distributing it.&lt;/p&gt;

&lt;p&gt;So I built a tool to solve that.&lt;/p&gt;

&lt;p&gt;VidShare is a platform that lets you upload your video once and distribute it across multiple platforms without repeating the same steps over and over.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
Upload → configure → post → repeat&lt;/p&gt;

&lt;p&gt;It becomes:&lt;br&gt;
Upload once → select platforms → schedule → done&lt;/p&gt;

&lt;p&gt;The goal isn’t to replace any platform, but to remove the friction between them.&lt;/p&gt;

&lt;p&gt;Right now, creators are stitching together workflows manually, even though the content is often the same across platforms.&lt;/p&gt;

&lt;p&gt;It feels like something that should have been solved already.&lt;/p&gt;

&lt;p&gt;I’m still early in building this, and currently looking for creators who want to test it and give feedback.&lt;/p&gt;

&lt;p&gt;If you’re dealing with the same problem, I’d genuinely like to hear how you’re handling it today.&lt;/p&gt;

&lt;p&gt;Also curious — do you think this is something platforms will eventually solve themselves, or will third-party tools always fill the gap?&lt;/p&gt;

&lt;p&gt;If you want to check it out or try it:&lt;br&gt;
&lt;a href="https://vidshare.us" rel="noopener noreferrer"&gt;https://vidshare.us&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
