<?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>Forem: Nevo David</title>
    <description>The latest articles on Forem by Nevo David (@nevodavid).</description>
    <link>https://forem.com/nevodavid</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%2F820341%2F5d291561-0d60-40cf-a9d3-959dab08f1ac.png</url>
      <title>Forem: Nevo David</title>
      <link>https://forem.com/nevodavid</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nevodavid"/>
    <language>en</language>
    <item>
      <title>newtestest</title>
      <dc:creator>Nevo David</dc:creator>
      <pubDate>Wed, 07 Jan 2026 04:58:56 +0000</pubDate>
      <link>https://forem.com/nevodavid/newtestest-2h5</link>
      <guid>https://forem.com/nevodavid/newtestest-2h5</guid>
      <description>&lt;p&gt;test&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I did it! My open-source company now makes $14.2k monthly as a single developer</title>
      <dc:creator>Nevo David</dc:creator>
      <pubDate>Fri, 21 Nov 2025 11:43:03 +0000</pubDate>
      <link>https://forem.com/nevodavid/i-did-it-my-open-source-company-now-makes-142k-monthly-as-a-single-developer-1179</link>
      <guid>https://forem.com/nevodavid/i-did-it-my-open-source-company-now-makes-142k-monthly-as-a-single-developer-1179</guid>
      <description>&lt;p&gt;In September 2024, I started Postiz (star it if you can 🙏🏻):&lt;br&gt;
&lt;a href="https://github.com/gitroomhq/postiz-app" rel="noopener noreferrer"&gt;https://github.com/gitroomhq/postiz-app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A social media scheduling tool built in open-source.&lt;br&gt;
It's funny that a market that has existed for 20 years doesn't have a good open-source solution.&lt;/p&gt;

&lt;p&gt;I had a few principles in mind as a non-funded company that doesn't need money (or maximize revenue at all costs)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Everything (but I mean everything) must be open-sourced.&lt;/li&gt;
&lt;li&gt;Charge only for cloud costs, never force developers to pay.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Today, Postiz earns $14,000 per month from subscriptions, and I aim to reach $20,000 in two months.&lt;/p&gt;

&lt;p&gt;Here are the step-by-step instructions I took to get to where I am today.&lt;/p&gt;


&lt;h2&gt;
  
  
  1. List it everywhere
&lt;/h2&gt;

&lt;p&gt;Open source has special powers, there are tons of GitHub repositories and websites where you can list your solution (&lt;a href="https://github.com/RunaCapital/awesome-oss-alternatives" rel="noopener noreferrer"&gt;Awesome OSS alternatives&lt;/a&gt;, &lt;a href="https://github.com/awesome-selfhosted/awesome-selfhosted" rel="noopener noreferrer"&gt;Awesome Self-hosted&lt;/a&gt;, etc.) And also websites like &lt;a href="https://openalternative.co" rel="noopener noreferrer"&gt;Open Alternative&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is very powerful because people actually check those websites, and they also bring a powerful backlink. I will talk about it in the next part.&lt;/p&gt;


&lt;h2&gt;
  
  
  2. Launch it everywhere
&lt;/h2&gt;

&lt;p&gt;If you are active on DEV or Reddit /r/selfhosted you would see my posts. I didn't make "big versions" for Postiz. Every minor feature was a version. That allowed me to talk about Postiz more and mention it repeatedly.&lt;/p&gt;

&lt;p&gt;This is another great thing about open source: so many Reddit channels and DEV websites are for devs. And Postiz is not a dev tool, but I built it as open source, which makes it dev-related.&lt;/p&gt;


&lt;h2&gt;
  
  
  3. Listen to the DEV community
&lt;/h2&gt;

&lt;p&gt;My first post on Reddit, people asked to have a Docker (because it's a complicated mono-repo), and that's the first thing I did. I am proud to say that today, Postiz has reached 4.79M Docker downloads.&lt;/p&gt;


&lt;h2&gt;
  
  
  4. Market as much as coding or more
&lt;/h2&gt;

&lt;p&gt;There are so many good software pieces that nobody knows about because word of mouth takes time. When you first launch your product, it will be buggy, unfriendly, and hard to use.&lt;/p&gt;

&lt;p&gt;This is why you constantly need to work on it and market it. I have seen so many good products fail or not reach their goals because of their marketing.&lt;/p&gt;

&lt;p&gt;I don't have a strong social presence on traditional platforms, so I posted the product mostly on Reddit / DEV / LinkedIn and a little bit on X.&lt;/p&gt;

&lt;p&gt;But I knew that social media is a "push" marketing, which means that somebody sees something they didn't look for; the algorithm exposes it to them.&lt;/p&gt;

&lt;p&gt;The best way to find you is by researching what you need. This is why SEO and AISEO (ChatGPT) are more important, because people who buy from research stay with you for a longer time.&lt;/p&gt;


&lt;h2&gt;
  
  
  5. Find new audiences
&lt;/h2&gt;

&lt;p&gt;In July 2025, I was making $6,523 monthly, and in August 2024, I was already making $12,648 monthly, almost doubling the revenue in one month.&lt;/p&gt;

&lt;p&gt;I started seeing a lot of people using social media automation tools like n8n and tons of YouTube videos.&lt;/p&gt;

&lt;p&gt;It makes sense because n8n users are developers willing to pay, and they would choose an open-source solution. So I changed my focus. I published an official n8n node, improved the public API, and focused heavily on automation.&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/c50u3K3xsCI"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;I started to cold outreach Skool communities and have them promote Postiz.&lt;/p&gt;

&lt;p&gt;My &lt;a href="https://affiliate.postiz.com" rel="noopener noreferrer"&gt;affiliate marketing&lt;/a&gt; started to explode, and tons of people began publishing Postiz organically.&lt;/p&gt;

&lt;p&gt;The coolest part is that people who automate Postiz with n8n templates and use automated software don't need to manually add posts, which increases the number of months they pay for Postiz.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Focus on SEO
&lt;/h2&gt;

&lt;p&gt;Once you start to get more and more backlinks to your website, your authority increases, and more people find you on search engines.&lt;/p&gt;

&lt;p&gt;Also, more people send you cold emails to exchange links with them (you need to pick a good one), but you grow even more.&lt;/p&gt;

&lt;p&gt;This is super important because with SEO (like ads), there is an endless scale. It works for you even when you don't work.&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
 &lt;/p&gt;




&lt;h2&gt;
  
  
  Burnout
&lt;/h2&gt;

&lt;p&gt;Two months ago, my wife and I brought a beautiful baby daughter. After one full year of working 200%, I experienced massive burnout (until today). I don't yet know how to get out of it, and I am glad the community can help each other.&lt;/p&gt;

&lt;p&gt;But I am happy with everything that I have achieved, and everybody can do the same if they spend a little time.&lt;/p&gt;

&lt;p&gt;The most important thing is not to stop. Growth takes time. It took me a very long time to make a decent amount of revenue from the product.&lt;/p&gt;

&lt;p&gt;Good luck to all of you out there!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Nevo David</dc:creator>
      <pubDate>Wed, 16 Apr 2025 13:48:04 +0000</pubDate>
      <link>https://forem.com/nevodavid/-p4a</link>
      <guid>https://forem.com/nevodavid/-p4a</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/nevodavid/your-last-mcp-to-schedule-all-your-social-posts-al4" class="crayons-story__hidden-navigation-link"&gt;Your last MCP to schedule all your social posts! 🤯&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/nevodavid" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F820341%2F5d291561-0d60-40cf-a9d3-959dab08f1ac.png" alt="nevodavid profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/nevodavid" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Nevo David
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Nevo David
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-2406936" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/nevodavid" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F820341%2F5d291561-0d60-40cf-a9d3-959dab08f1ac.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Nevo David&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/nevodavid/your-last-mcp-to-schedule-all-your-social-posts-al4" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 15 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/nevodavid/your-last-mcp-to-schedule-all-your-social-posts-al4" id="article-link-2406936"&gt;
          Your last MCP to schedule all your social posts! 🤯
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/nevodavid/your-last-mcp-to-schedule-all-your-social-posts-al4" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;305&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/nevodavid/your-last-mcp-to-schedule-all-your-social-posts-al4#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              27&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>ai</category>
    </item>
    <item>
      <title>Your last MCP to schedule all your social posts! 🤯</title>
      <dc:creator>Nevo David</dc:creator>
      <pubDate>Tue, 15 Apr 2025 10:56:09 +0000</pubDate>
      <link>https://forem.com/nevodavid/your-last-mcp-to-schedule-all-your-social-posts-al4</link>
      <guid>https://forem.com/nevodavid/your-last-mcp-to-schedule-all-your-social-posts-al4</guid>
      <description>&lt;h2&gt;
  
  
  MCP is the future
&lt;/h2&gt;

&lt;p&gt;I'm pretty addicted to the Last Of Us series, Sorry about the cover 😉&lt;br&gt;
MCPs are everywhere and for a good reason.&lt;br&gt;
It's the next step in the evolution of apps.&lt;/p&gt;

&lt;p&gt;Being able to use everything from a single chat without accessing any app.&lt;br&gt;
It feels native for &lt;a href="https://postiz.com" rel="noopener noreferrer"&gt;Postiz&lt;/a&gt; to schedule all your social posts from the chat!&lt;br&gt;
So, I started to dig into the Postiz code and add it!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfp0ytrs66kj48txsoin.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfp0ytrs66kj48txsoin.gif" alt="MCPE" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  MCP repository is a bit weird 🧐
&lt;/h2&gt;

&lt;p&gt;Each MCP has a transport, which is the method the LLMs use to talk to our system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There are two primary methods at the moment&lt;/strong&gt;: Stdio, which is basically a command line, and SSE.&lt;/p&gt;

&lt;p&gt;I don't really understand why they chose SSE—it's basically a long request that never ends and streams events to the client.&lt;/p&gt;

&lt;p&gt;The problem with this method is that to send information back to the server, you must send another post request (as SSE is a one-way communication), which means you must hold the state.&lt;/p&gt;

&lt;p&gt;In their example, they hold the state in the app's memory, and guess what? Many complain about memory leaks because the state is not erased when the user disconnects.&lt;/p&gt;

&lt;p&gt;I would use WebSockets. They have a built-in sleep mode, and you don't have to maintain a state for it.&lt;/p&gt;


&lt;h2&gt;
  
  
  Digging in 🪠
&lt;/h2&gt;

&lt;p&gt;I dug into Anthropic typescript SDK and was not amazed.&lt;br&gt;
It feels clunky. Many things are not being used in production, like "Resources." The way they require you to keep everything globally in memory is a disaster waiting to come.&lt;/p&gt;

&lt;p&gt;Also, it is tough to implement authentication and get the user from the context so we can get their details.&lt;/p&gt;

&lt;p&gt;I implemented my own "Transport" using rxjs observables - it's fun. Postiz is built with NestJS, so when using an SSE route, it closes the observable once it disconnects, allowing you to remove everything from memory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;EventEmitter&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;events&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;finalize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;fromEvent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;startWith&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rxjs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Injectable&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;McpService&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EventEmitter&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="nx"&gt;_mainMcp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;MainMcp&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;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;runServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;McpSettings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_mainMcp&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;server&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;transport&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;McpTransport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;observer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;fromEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nx"&gt;McpService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="s2"&gt;`organization-&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;
    &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nf"&gt;startWith&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;endpoint&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_BACKEND_URL&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/mcp/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/messages&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;}),&lt;/span&gt;
      &lt;span class="nf"&gt;finalize&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;transport&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&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;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;MCP transport started&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;transport&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;observer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;processPostBody&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;McpSettings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_mainMcp&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;server&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSONRPCMessageSchema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;transport&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;McpTransport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;transport&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;transport&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;handlePostMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&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;h2&gt;
  
  
  Decorators FTW 🎖️
&lt;/h2&gt;

&lt;p&gt;This is for you if you are a big fan of OOP frameworks like NestJS / Laravel / Spring. I created a cool decorator to create tools like API "endpoints."&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;McpTool&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;toolName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POSTIZ_GET_CONFIG_ID&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;preRun&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="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`id: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nf"&gt;makeId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt; Today date is &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;dayjs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;utc&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="s2"&gt;`&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;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;McpTool&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;toolName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POSTIZ_PROVIDERS_LIST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;listOfProviders&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_integrationService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getIntegrationsList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;org&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;org&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;org&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;identifier&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;org&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;providerIdentifier&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;picture&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;org&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;picture&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;disabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;org&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;disabled&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;org&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;org&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;customer&lt;/span&gt;
        &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;org&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;org&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&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;span class="kc"&gt;undefined&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="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;list&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;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;McpTool&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;toolName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POSTIZ_SCHEDULE_POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;zod&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;eenum&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;draft&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;scheduled&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;
      &lt;span class="na"&gt;configId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
      &lt;span class="na"&gt;generatePictures&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
      &lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;UTC TIME&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="na"&gt;providerId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Use POSTIZ_PROVIDERS_LIST to get the id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="na"&gt;posts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;object&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="na"&gt;images&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;string&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;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;schedulePost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;draft&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;schedule&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;generatePictures&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;providerId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;posts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&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;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;create&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_postsService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createPost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
      &lt;span class="na"&gt;posts&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;span class="na"&gt;group&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;makeId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
          &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;posts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
              &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;makeId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
              &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;generatePictures&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;span class="p"&gt;[&lt;/span&gt;
                    &lt;span class="p"&gt;{&lt;/span&gt;
                      &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;makeId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                      &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_openAiService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generateImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                        &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="kc"&gt;true&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;span class="p"&gt;}))&lt;/span&gt;
          &lt;span class="p"&gt;),&lt;/span&gt;
          &lt;span class="c1"&gt;// @ts-ignore&lt;/span&gt;
          &lt;span class="na"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt;
          &lt;span class="na"&gt;integration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;providerId&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;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="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Post created successfully, check it here: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FRONTEND_URL&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/p/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;postId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&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;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All the code can be found in Postiz here:&lt;br&gt;
&lt;a href="https://github.com/gitroomhq/postiz-app/tree/main/libraries/nestjs-libraries/src/mcp" rel="noopener noreferrer"&gt;https://github.com/gitroomhq/postiz-app/tree/main/libraries/nestjs-libraries/src/mcp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And here:&lt;br&gt;
&lt;a href="https://github.com/gitroomhq/postiz-app/tree/main/apps/backend/src/mcp" rel="noopener noreferrer"&gt;https://github.com/gitroomhq/postiz-app/tree/main/apps/backend/src/mcp&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Force the LLM to do stuff 💪🏻
&lt;/h2&gt;

&lt;p&gt;It would be nice to have a built-in option to force the LLM to do different stuff before it accesses our stuff.&lt;/p&gt;

&lt;p&gt;I faced some interesting problems. Whenever I told Cursor to schedule a post for me, it tried to schedule it for 2024. This is the last time the model was trained.&lt;/p&gt;

&lt;p&gt;I needed to pass some config details, so I created the &lt;code&gt;POSTIZ_CONFIGURATION_PRERUN&lt;/code&gt; tool. Hopefully, the LLM will always call it before doing stuff.&lt;/p&gt;

&lt;p&gt;But it ignored it many times (typical), so I had to be creative.&lt;br&gt;
In my &lt;code&gt;POSTIZ_SCHEDULE_POST&lt;/code&gt;, I added a new property called &lt;code&gt;configId&lt;/code&gt; and changed the config tool name to &lt;code&gt;POSTIZ_GET_CONFIG_ID&lt;/code&gt;, the output of the config is:&lt;br&gt;
&lt;code&gt;id: ${makeId(10)} Today date is ${dayjs.utc().format()}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It forced the LLM always to call it before, and the date was fixed! :)&lt;/p&gt;

&lt;p&gt;It was even better for me because I knew it would send me UTC dates from now on.&lt;/p&gt;




&lt;h2&gt;
  
  
  Use-cases
&lt;/h2&gt;

&lt;p&gt;I think that it works best when it is combined with multiple sets of tools, for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Connect it to Cursor and ask it to schedule a post about your work today.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect it to Notion and ask to schedule all the team's latest work on social media - check out &lt;a href="https://mcp.composio.dev" rel="noopener noreferrer"&gt;Composio MCPs&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect it to any SaaS that has &lt;a href="https://github.com/CopilotKit/CopilotKit" rel="noopener noreferrer"&gt;CopilotKit&lt;/a&gt; and schedule posts based on the app. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Postiz MCP
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/gitroomhq/postiz-app/" rel="noopener noreferrer"&gt;Postiz&lt;/a&gt; is the most robust open-source social media scheduling tool - and now the only scheduler that offers MCP (natively, not with Zapier or something like that)&lt;/p&gt;

&lt;p&gt;With the new MCP, you can schedule all your posts from Cursor / Windsurf and Anthropic clients.&lt;/p&gt;

&lt;p&gt;Everything is 100% free, of course :)&lt;/p&gt;

&lt;p&gt;If you like it, please don't forget to star us ⭐️&lt;br&gt;
&lt;a href="https://github.com/gitroomhq/postiz-app" rel="noopener noreferrer"&gt;https://github.com/gitroomhq/postiz-app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gitroomhq/postiz-app" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwywynewxm1iomtoxlcbh.png" alt="OG" width="800" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>ai</category>
    </item>
    <item>
      <title>You don't know it, but your open-source might be worth millions of dollars 🤑</title>
      <dc:creator>Nevo David</dc:creator>
      <pubDate>Fri, 24 Jan 2025 11:13:25 +0000</pubDate>
      <link>https://forem.com/nevodavid/you-dont-know-it-but-your-open-source-might-be-worth-millions-of-dollars-47c</link>
      <guid>https://forem.com/nevodavid/you-dont-know-it-but-your-open-source-might-be-worth-millions-of-dollars-47c</guid>
      <description>&lt;p&gt;I have been working on &lt;a href="https://postiz.com" rel="noopener noreferrer"&gt;Postiz&lt;/a&gt; for a long time.&lt;br&gt;
Postiz is a self-hosted social media scheduling tool; it's the 1st solution ever in the world that is open-source (and robust.)&lt;/p&gt;

&lt;p&gt;98% of the stuff I program mainly goes to the open-source.&lt;br&gt;
Our docker downloads passed 1.5m downloads in 6 months.&lt;/p&gt;

&lt;p&gt;On paper, you might think this project is making millions, but the truth is far from that; it takes only a few thousand per month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fczp5on7o2txd4z2in296.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fczp5on7o2txd4z2in296.png" alt="Docker Downloads" width="598" height="1193"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Make it more challenging to deploy to make more money?
&lt;/h2&gt;

&lt;p&gt;It feels like adding more things to the open source decreases the number of users that pay for it.&lt;/p&gt;

&lt;p&gt;It feels like you need to "cheat" and make deployment harder for people so they pay money. That's not what open-source is about, and it's a weirder way to make money.&lt;/p&gt;

&lt;p&gt;So why does something that brings so much money get so little money, and who is actually making the money?&lt;/p&gt;




&lt;h2&gt;
  
  
  Who is making the money?
&lt;/h2&gt;

&lt;p&gt;The answer is evident to me: hosting solutions and 1-click deployment apps like Coolify, Portainer, Unraid, and Elestio. And guess what? When people need support, they come to you, so you must spend money on it.&lt;/p&gt;

&lt;p&gt;I think this 1-click deployment platform should primarily pay for the open-source solutions an affiliate. Maybe it will also incentivize the open-source solutions to send people back to them, but that's a different story; let's continue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, business model... what is out there?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloud solutions&lt;/strong&gt; - This is a classic solution you offer the same open-source, maybe with more cloud features. Companies that don't want to host the solution themselves or have problems hosting it purchase subscriptions. Sometimes, if your hosted solution is not a dev tool, some people who are not developers might use it.
 &lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Self-Hosting Support&lt;/strong&gt; - If you have a dev tool, many privacy-first companies might want to pay you for priority support, custom features, etc. That's the main leading model for serious OSS companies looking to make money.&lt;br&gt;
 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sponsorship&lt;/strong&gt; - Indie-dev especially might enjoy money from sponsorship. It's nice - but not something that will make you leave your job and focus all your time on open-source.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  My new discovery
&lt;/h2&gt;

&lt;p&gt;I ran my usual marketing a few days ago, making another feature and a video for it - the drill.&lt;/p&gt;

&lt;p&gt;Somebody jumped into my Discord with a surprise question:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0nvnherb8rjxrrrjtp4k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0nvnherb8rjxrrrjtp4k.png" alt="Discord" width="509" height="844"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I created a new coin. You can see it here:&lt;br&gt;
&lt;a href="https://dexscreener.com/solana/DMsTbeCfX1crgAse5tver98KAMarPWeP3d6U3Gmmpump" rel="noopener noreferrer"&gt;https://dexscreener.com/solana/DMsTbeCfX1crgAse5tver98KAMarPWeP3d6U3Gmmpump&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, on a $1.2m market cap as the primary holder 35%, I am sitting on around $500k, changing all the time.&lt;/p&gt;

&lt;p&gt;My coin has made a massive multiplier compared to my SaaS.&lt;br&gt;
I encourage you to open a new coin.&lt;br&gt;
You don't have to put much money into it.&lt;br&gt;
And if you do, please let me know I will put some money there might make some good $$ on it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Be careful from Crypto
&lt;/h2&gt;

&lt;p&gt;The Defi (that's probably where you are going to launch your coin) is a very dark place, full of scams.&lt;br&gt;
That's not open-source, so be aware of everything you do.&lt;br&gt;
People will try to cheat, take your money, and scam you.&lt;br&gt;
You need to know what you are stepping into.&lt;br&gt;
This is not something everybody needs to do. It's just another way to think about more places where you can get more money for your value.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's the connection between Crypto and open source?
&lt;/h2&gt;

&lt;p&gt;Not too much. People have been rug-pulled and scammed before looking for something more stable to put their money on.&lt;br&gt;
They are mainly looking for an AI-Agent repository with a good roadmap.&lt;/p&gt;

&lt;p&gt;You know, hype always gets a lot of attention.&lt;br&gt;
If your repository is in the web3 sector, that's even better but not a must.&lt;/p&gt;




&lt;p&gt;Be careful out there!&lt;br&gt;
And good luck!&lt;/p&gt;

&lt;p&gt;And, of course, star and use Postiz if you can!&lt;br&gt;
&lt;a href="https://github.com/gitroomhq/postiz-app/" rel="noopener noreferrer"&gt;https://github.com/gitroomhq/postiz-app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
    <item>
      <title>You can open a startup in open-source and quit your daily job 🤑</title>
      <dc:creator>Nevo David</dc:creator>
      <pubDate>Thu, 09 Jan 2025 10:44:17 +0000</pubDate>
      <link>https://forem.com/nevodavid/you-can-open-a-startup-in-open-source-and-quit-your-daily-job-3ld5</link>
      <guid>https://forem.com/nevodavid/you-can-open-a-startup-in-open-source-and-quit-your-daily-job-3ld5</guid>
      <description>&lt;p&gt;I recently launched &lt;a href="https://postiz.com" rel="noopener noreferrer"&gt;Postiz&lt;/a&gt;, an open-source social media scheduling tool. After four months, it's making $2.1k per month! Thanks to open-source software in one of the most competitive markets, you can do the same.&lt;/p&gt;

&lt;p&gt;Here is how.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzytdqbpq0vxcbd3lc8xv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzytdqbpq0vxcbd3lc8xv.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Find an idea 💡
&lt;/h2&gt;

&lt;p&gt;You don't have to have an original idea; you can take something already existing and open-source it (of course, make it good).&lt;/p&gt;

&lt;p&gt;Why? Because once you have open-sourced it, you turn to a new audience that was never served before - Developers and companies that want to self-host your product (primarily because of privacy.)&lt;/p&gt;

&lt;p&gt;I prefer to find big markets. For example, Postiz is a social media scheduling tool. It's one of the most saturated markets, meaning many people and underserved audiences are looking for it.&lt;/p&gt;

&lt;p&gt;You also get tremendous credibility by showing all your code and get more credibility by getting stars.&lt;/p&gt;




&lt;h2&gt;
  
  
  Market it 🏪
&lt;/h2&gt;

&lt;p&gt;Every product needs marketing; you can imagine from this post that I have some sense of it (Squid game picture + title); attracting more people is essential to get the initial visibility.&lt;/p&gt;

&lt;p&gt;Open source gets some superpowers because it allows you to promote it in channels usually unavailable in typical startups.&lt;/p&gt;

&lt;p&gt;You can find a lot of content about it on my website &lt;a href="https://gitroom.com" rel="noopener noreferrer"&gt;Gitroom&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In short:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Post your repository every time you have a new version on Reddit &lt;a href="https://www.reddit.com/r/selfhosted" rel="noopener noreferrer"&gt;/r/selfhosted&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;If you have an AI startup, post it on &lt;a href="https://www.reddit.com/r/LocalLLaMA" rel="noopener noreferrer"&gt;/r/LocalLLaMA&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Post it in Lemmy's &lt;a href="https://lemmy.world/c/selfhosted" rel="noopener noreferrer"&gt;self-hosted community&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Post it on DEV.to / Hackernoon / Medium / Hashnode every week&lt;/li&gt;
&lt;li&gt;Post it on &lt;a href="https://hackernews.com" rel="noopener noreferrer"&gt;Hackernews&lt;/a&gt;: "Show HN: product name"&lt;/li&gt;
&lt;li&gt;Post it on LinkedIn / X as much as you can. Use &lt;a href="https://postiz.com/" rel="noopener noreferrer"&gt;Postiz&lt;/a&gt; for that 😉&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you do it often, you might be &lt;a href="https://github.com/trending" rel="noopener noreferrer"&gt;trending on GitHub&lt;/a&gt;, increasing your visibility by 10x.&lt;/p&gt;

&lt;p&gt;Then, use your audience to post it on &lt;a href="https://www.producthunt.com" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt; and get upvotes from the community members. Postiz finished 1st of the day/week/month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnj7dro6aansp9mh3y55y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnj7dro6aansp9mh3y55y.png" alt="Product Hunt" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Collect feedback 💭
&lt;/h2&gt;

&lt;p&gt;Using Discord and GitHub issues, I am collecting tons of feedback on what to implement and what not.&lt;/p&gt;

&lt;p&gt;With over 800k downloads from Docker, tons of people are always playing with it and giving feedback.&lt;/p&gt;

&lt;p&gt;When you implement feedback, people trust you more, and you learn faster about your product.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcickfjb4gh58pnaa2m6n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcickfjb4gh58pnaa2m6n.png" alt="Docker Downloads" width="800" height="784"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Just do it ✔
&lt;/h2&gt;

&lt;p&gt;Stop looking for excuses. Just write some code - the nice thing about open-source is that you don't even have to start by making the main website - just build the open-source!&lt;/p&gt;

&lt;p&gt;And of course! Help me out if you can ❤️&lt;br&gt;
I'm happy to get a star so I can produce more features for the open-source!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gitroomhq/postiz-app/" rel="noopener noreferrer"&gt;https://github.com/gitroomhq/postiz-app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>You can get your financial freedom with open-source in 2025! 🤑</title>
      <dc:creator>Nevo David</dc:creator>
      <pubDate>Wed, 01 Jan 2025 13:02:23 +0000</pubDate>
      <link>https://forem.com/nevodavid/you-can-get-your-financial-freedom-with-open-source-in-2025-41i8</link>
      <guid>https://forem.com/nevodavid/you-can-get-your-financial-freedom-with-open-source-in-2025-41i8</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; launched &lt;a href="https://github.com/gitroomhq/postiz-app" rel="noopener noreferrer"&gt;Postiz&lt;/a&gt; open-source on September 1, and it is making $2,000 per month already 💪🏻&lt;/p&gt;

&lt;p&gt;At the beginning of 2024, I started to work on a social media scheduling tool called &lt;a href="https://postiz.com" rel="noopener noreferrer"&gt;Postiz&lt;/a&gt;. I have 10 years of experience as an SWE / Dev team leader, so programming was a breeze.&lt;/p&gt;

&lt;p&gt;Social scheduling marketing has existed for almost 20 years. Hootsuite, the leading, was founded in 2008. There are more than 1000 competitors at the moment in this marketing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Early days
&lt;/h2&gt;

&lt;p&gt;I am pretty strong at marketing. As their marketing person, I worked for an open-source company called &lt;a href="https://novu.co" rel="noopener noreferrer"&gt;Novu&lt;/a&gt; and got them to 30k stars in two years.&lt;/p&gt;

&lt;p&gt;However, I decided not to start with the open-source path; I focused mainly on SEO.&lt;/p&gt;

&lt;p&gt;So, I hired a freelancer off UpWork to reach news websites, buy backlinks, and write many articles.&lt;/p&gt;

&lt;p&gt;But it was useless. When your website has a very low Domain Authority, ranking even for easy keywords is hard. The competition is fierce, and after 4 months of spending around 3k per month, I decided to do what I know and go open-source.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7s4vr1igqd4j1g3v0di7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7s4vr1igqd4j1g3v0di7.png" alt="Postiz Upwork" width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Back to open-source
&lt;/h2&gt;

&lt;p&gt;I open-sourced my app and a very fancy README.md file and launched it on Reddit. It was a huge success.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F736uwdc7z5qqhufumh8k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F736uwdc7z5qqhufumh8k.png" alt="Postiz Reddit" width="800" height="899"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I realized how strong it is, I launched on Reddit every month with updates of what is new in Postiz and got the same results repeatedly!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discord blew up to 1115 members (as of now)&lt;/li&gt;
&lt;li&gt;Docker was downloaded 584K times!&lt;/li&gt;
&lt;li&gt;Reached 15k stars&lt;/li&gt;
&lt;li&gt;Almost 4k registrations to the cloud.&lt;/li&gt;
&lt;li&gt;And 2k in MRR (monthly recurring revenue)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My main channels were dev.to, Reddit, Indiehackers.com, Hackernoon and Lemmy.&lt;/p&gt;




&lt;h2&gt;
  
  
  Successful Product Hunt launch
&lt;/h2&gt;

&lt;p&gt;With the audience I collected, I launched a &lt;a href="https://www.producthunt.com/products/postiz#postiz" rel="noopener noreferrer"&gt;Product hunt&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I have launched many products, and it's never easy.&lt;br&gt;
I used a few tactics that I usually do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created one X / LinkedIn post about Product Hunt and told people to interact with it.&lt;/li&gt;
&lt;li&gt;Put Product Hunt on the README.md&lt;/li&gt;
&lt;li&gt;Asked people to vote over the newsletter&lt;/li&gt;
&lt;li&gt;I asked people to vote on Discord.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it was one of the best Product Hunt I have ever had.&lt;br&gt;
Postiz finished 1st of the day / week / month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2w4pbhj8xlikeor2cdqf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2w4pbhj8xlikeor2cdqf.png" alt="PH" width="800" height="235"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Work closely with open-source contributors
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The Discord was flooded with requests; it was too easy to know just what to build.&lt;/li&gt;
&lt;li&gt;Open-source contributors created a fantastic infrastructure for Docker. When I create a new tag, it makes a new Docker tag with the built docker. I have very little knowledge of DevOPS.&lt;/li&gt;
&lt;li&gt;I got really kick-ass features that made Postiz grow faster!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final words
&lt;/h2&gt;

&lt;p&gt;Open source is a superpower; use it and give back to the community, and you will see your product flourish!&lt;/p&gt;

&lt;p&gt;And of course! Help me out if you can ❤️&lt;br&gt;
I'm happy to get a star so I can produce more features for the open-source!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gitroomhq/postiz-app/" rel="noopener noreferrer"&gt;https://github.com/gitroomhq/postiz-app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I built an open-source social media scheduling, and it blew up 💣</title>
      <dc:creator>Nevo David</dc:creator>
      <pubDate>Mon, 02 Dec 2024 14:13:04 +0000</pubDate>
      <link>https://forem.com/nevodavid/i-built-an-open-source-social-media-scheduling-and-it-blew-up-415e</link>
      <guid>https://forem.com/nevodavid/i-built-an-open-source-social-media-scheduling-and-it-blew-up-415e</guid>
      <description>&lt;p&gt;Hi, my name is &lt;a href="https://x.com/nevodavid" rel="noopener noreferrer"&gt;Nevo&lt;/a&gt;. I built &lt;a href="https://github.com/gitroomhq/postiz-app" rel="noopener noreferrer"&gt;Postiz&lt;/a&gt;, an open-source social media scheduling tool.&lt;/p&gt;

&lt;p&gt;In the past, I worked for &lt;a href="https://novu.co" rel="noopener noreferrer"&gt;Novu&lt;/a&gt;, an open-source notification infrastructure tool, and with my help, it grew to 31k stars in two years.&lt;/p&gt;

&lt;p&gt;I could replicate the same thing if I built my own open-source; since I created Postiz on September 1, 2024, it has grown to almost 14k stars.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3t0a1qgm8mq75qhuqm5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3t0a1qgm8mq75qhuqm5.png" alt="Postiz Stars" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Is the market big? open-source it
&lt;/h2&gt;

&lt;p&gt;Scheduling tools have existed for almost 20 years, but no open-source solution exists. As you can imagine, the market is super saturated - thousands of tools do the same thing.&lt;/p&gt;

&lt;p&gt;So that said, "Please make another one open-sourced," and it exploded.&lt;/p&gt;

&lt;p&gt;The amount of interest in the tool skyrocketed.&lt;/p&gt;

&lt;p&gt;I launched it on &lt;a href="https://www.producthunt.com/posts/postiz" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt; and got 1st product of the day/week/month.&lt;/p&gt;

&lt;p&gt;More than 2000 people voted for the product 🚀&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvfn0zu6o1q2uwebmsovl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvfn0zu6o1q2uwebmsovl.png" alt="Product Hunt" width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Too fast of a growth
&lt;/h2&gt;

&lt;p&gt;The community grows so fast that I can handle it, as I am bombarded with support tickets, but so many lovely people help other people, which is insane! I love open-source.&lt;/p&gt;

&lt;p&gt;I created an excellent Discord bot that opens a popup to add all the details and then uses AI format for the title!&lt;/p&gt;

&lt;p&gt;It also follows up with messages and tags me if I haven't answered them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50v4lw7j8c9w1u2dv4h5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50v4lw7j8c9w1u2dv4h5.png" alt=" " width="800" height="881"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Postiz is part of the open-open-source
&lt;/h2&gt;

&lt;p&gt;There is no weird license for enterprises or withholding SSO for enterprises.&lt;/p&gt;

&lt;p&gt;Everything is 100% free (apache-2)!&lt;/p&gt;

&lt;p&gt;Any help you can give me would be super tremendous! 🥹&lt;br&gt;
I would be happy to get a star if possible ❤️&lt;br&gt;
&lt;a href="https://github.com/gitroomhq/postiz-app/" rel="noopener noreferrer"&gt;https://github.com/gitroomhq/postiz-app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>12k stars! :)</title>
      <dc:creator>Nevo David</dc:creator>
      <pubDate>Fri, 29 Nov 2024 14:35:25 +0000</pubDate>
      <link>https://forem.com/nevodavid/12k-stars--2ajh</link>
      <guid>https://forem.com/nevodavid/12k-stars--2ajh</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/nevodavid" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F820341%2F5d291561-0d60-40cf-a9d3-959dab08f1ac.png" alt="nevodavid"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/nevodavid/i-built-a-social-media-scheduling-tool-and-open-sourced-it-5aho" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;I built a social media scheduling tool and open-sourced it 🤯&lt;/h2&gt;
      &lt;h3&gt;Nevo David ・ Nov 21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>🚀</title>
      <dc:creator>Nevo David</dc:creator>
      <pubDate>Thu, 28 Nov 2024 05:56:14 +0000</pubDate>
      <link>https://forem.com/nevodavid/-2b31</link>
      <guid>https://forem.com/nevodavid/-2b31</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/nevodavid" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F820341%2F5d291561-0d60-40cf-a9d3-959dab08f1ac.png" alt="nevodavid"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/nevodavid/i-am-making-700-monthly-with-my-open-source-scheduling-tool-you-can-do-it-too-33o7" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;I am making $700 monthly with my open-source scheduling tool - you can do it too! 🤯&lt;/h2&gt;
      &lt;h3&gt;Nevo David ・ Nov 26&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tutorial&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>I am making $700 monthly with my open-source scheduling tool - you can do it too! 🤯</title>
      <dc:creator>Nevo David</dc:creator>
      <pubDate>Tue, 26 Nov 2024 10:23:15 +0000</pubDate>
      <link>https://forem.com/nevodavid/i-am-making-700-monthly-with-my-open-source-scheduling-tool-you-can-do-it-too-33o7</link>
      <guid>https://forem.com/nevodavid/i-am-making-700-monthly-with-my-open-source-scheduling-tool-you-can-do-it-too-33o7</guid>
      <description>&lt;p&gt;I am a big advocate of open-source startups. Over the next year, you will see many more of them. You take an existing product and open-source it.&lt;/p&gt;

&lt;p&gt;I built a social media scheduling tool (many exist in the market) and created an open-source version.&lt;/p&gt;

&lt;p&gt;This is &lt;a href="https://github.com/gitroomhq/postiz-app" rel="noopener noreferrer"&gt;Postiz&lt;/a&gt;, an open-source social media scheduling tool.&lt;/p&gt;

&lt;p&gt;And of course, if you could help me with a star, it would be amazing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qh888gfjojgilropk1u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qh888gfjojgilropk1u.png" alt="Postiz MRR" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The thing about the source
&lt;/h2&gt;

&lt;p&gt;It's open-source, and everybody can come and take your code, so what's the catch?&lt;/p&gt;

&lt;p&gt;Open source is a community; when you start to push your product, thousands of developers will fork and clone it and help you on your journey.&lt;/p&gt;

&lt;p&gt;It will bring massive exposure to your product.&lt;/p&gt;

&lt;p&gt;So far, the Postiz docker has been downloaded 26k times.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fokanremlvbua7x3jrz7s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fokanremlvbua7x3jrz7s.png" alt="Postiz" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the other hand, everybody can be a competitor and use your open-source solution instead of paying you, and you have to live with this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some licenses can save you, such as apache-2 or Agpl-3&lt;/strong&gt;&lt;br&gt;
It means that people can't compete with you without open-sourcing your code and giving you credit, but it doesn't prevent commercial use.&lt;/p&gt;




&lt;h2&gt;
  
  
  Support is harder
&lt;/h2&gt;

&lt;p&gt;Having an open-source repository (with docker and all) will attract many self-hosters and require much support.&lt;br&gt;
So far, 3-5 tickets from Coolify, Portainer, and Unraid are received daily. This is only the start; I am sure there will be more deployment platforms soon.&lt;/p&gt;

&lt;p&gt;Make sure you give other contributors the respect they deserve. They will help you tremendously with support.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsnx4bk8rma968e3f5onr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsnx4bk8rma968e3f5onr.png" alt="Postiz Support" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Revenue is uncertain
&lt;/h2&gt;

&lt;p&gt;If there is one thing developers are known for, it is not to pay for stuff if it's not needed. We were born with this gene, I guess 😂&lt;/p&gt;

&lt;p&gt;So don't expect developers to pay you. They'll host you on Raspberry Pi or a $5 Coolify server.&lt;/p&gt;

&lt;p&gt;It's important to know this.&lt;/p&gt;

&lt;p&gt;The goal of the contributors is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Help you to build the product&lt;/li&gt;
&lt;li&gt;Help you with exposure&lt;/li&gt;
&lt;li&gt;Build a fun and active community where everybody can grow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I can't tell you how often I have seen a contributor tagging me on some X post about Postiz.&lt;/p&gt;

&lt;p&gt;Or some top trending open-source article.&lt;/p&gt;




&lt;h2&gt;
  
  
  Enterprise
&lt;/h2&gt;

&lt;p&gt;It depends on your product, but some enterprises can use only self-hosted solutions and will pay you for your support and custom implementation.&lt;/p&gt;

&lt;p&gt;This is super important because that's something only open-source solutions can offer.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Play with the suitable license
&lt;/h2&gt;

&lt;p&gt;There are no secrets. Monetized open-source (COSS) is sometimes misused in the wrong ways, for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Adding dual licensing to the open-source, so when you use the code, you use the enterprise version and need to figure out how to remove it from the code base.&lt;br&gt;
 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adding non open-source license. You can put something like BSL, but it is not counted as "open-source," and fewer people see your solution as attractive. You would need to refer to your solution as self-hosted instead.&lt;br&gt;
 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Holding out on SSO - having SSO for enterprise is only considered a destructive pattern. I have discovered lately that you can find many websites like &lt;a href="https://sso.tax" rel="noopener noreferrer"&gt;SSO.tax&lt;/a&gt; because SSO is a security thing. SSO can still be commercialized, but it's better to take a stand like &lt;a href="https://tailscale.com/pricing" rel="noopener noreferrer"&gt;Tailscale&lt;/a&gt;, which limits seats or enterprise providers.&lt;br&gt;
 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Be a part of the community; don't talk like "We. " Say "I" and connect with your audience; nobody likes communicating with a corporation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Go open-source. For me, it's the only way to build
&lt;/h2&gt;

&lt;p&gt;Please help me out with a star. It would be awesome ❤️&lt;br&gt;
&lt;a href="https://github.com/gitroomhq/postiz-app" rel="noopener noreferrer"&gt;https://github.com/gitroomhq/postiz-app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdhl3gcslk8i4gaxjz8na.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdhl3gcslk8i4gaxjz8na.png" alt="Postiz" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I built a social media scheduling tool and open-sourced it 🤯</title>
      <dc:creator>Nevo David</dc:creator>
      <pubDate>Thu, 21 Nov 2024 14:41:03 +0000</pubDate>
      <link>https://forem.com/nevodavid/i-built-a-social-media-scheduling-tool-and-open-sourced-it-5aho</link>
      <guid>https://forem.com/nevodavid/i-built-a-social-media-scheduling-tool-and-open-sourced-it-5aho</guid>
      <description>&lt;p&gt;Hi community :)&lt;br&gt;
I have built &lt;a href="https://postiz.com" rel="noopener noreferrer"&gt;Postiz&lt;/a&gt;, a social media scheduling tool and open-sourced it! :)&lt;br&gt;
Lately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I got to be 1st of the day on Product Hunt.&lt;/li&gt;
&lt;li&gt;I reached 10k stars!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is the link to the repo:&lt;br&gt;
&lt;a href="https://github.com/gitroomhq/postiz-app/" rel="noopener noreferrer"&gt;https://github.com/gitroomhq/postiz-app/&lt;/a&gt;&lt;br&gt;
Can you help me with a star?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gitroomhq/postiz-app/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgb0qjuurwkcjt5mg8m1z.png" alt="Social Media" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  Check out the full capabilities of the system
&lt;/h1&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/-RMM2kC80jw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
 &lt;/p&gt;
&lt;h1&gt;
  
  
  I made a funny trailer. Check it out here:
&lt;/h1&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/rd2dUGXSFV4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>react</category>
    </item>
  </channel>
</rss>
