<?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: Kasun Hapangama</title>
    <description>The latest articles on DEV Community by Kasun Hapangama (@ka0).</description>
    <link>https://dev.to/ka0</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%2F1073475%2Fb26491ae-6138-40b4-9391-fd7d78681a48.jpeg</url>
      <title>DEV Community: Kasun Hapangama</title>
      <link>https://dev.to/ka0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ka0"/>
    <language>en</language>
    <item>
      <title>Stop Shipping Software Without a License System — Meet SunLicense</title>
      <dc:creator>Kasun Hapangama</dc:creator>
      <pubDate>Wed, 10 Jun 2026 18:26:48 +0000</pubDate>
      <link>https://dev.to/ka0/stop-shipping-software-without-a-license-system-meet-sunlicense-26o8</link>
      <guid>https://dev.to/ka0/stop-shipping-software-without-a-license-system-meet-sunlicense-26o8</guid>
      <description>&lt;p&gt;If you've ever shipped a software product — a Minecraft plugin, a Discord bot, a Java library, anything paid — you know the feeling.&lt;/p&gt;

&lt;p&gt;Someone reposts your download link. A customer's key gets leaked. You have no way to invalidate it, no idea how many installs are out there, and no system to do anything about it.&lt;/p&gt;

&lt;p&gt;License management is one of those unsexy problems every indie dev eventually hits. Most either skip it entirely, roll a janky home-baked solution, or find enterprise tools that cost more per month than the product earns.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://builtbybit.com/resources/sunlicense-license-management-system.58359/?ref=featured" rel="noopener noreferrer"&gt;SunLicense&lt;/a&gt; is a different answer — built by an indie dev, for indie devs, priced as a one-time $14.99.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I'm Kasun Hapangama, the creator of SunLicense. Stats and review excerpts are pulled directly from the BuiltByBit listing.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What Is SunLicense?
&lt;/h2&gt;

&lt;p&gt;SunLicense is a &lt;strong&gt;self-hosted license management system&lt;/strong&gt; that ships with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A web admin dashboard&lt;/li&gt;
&lt;li&gt;A customer-facing dashboard (with Discord OAuth2 login)&lt;/li&gt;
&lt;li&gt;A Discord bot for automated license workflows&lt;/li&gt;
&lt;li&gt;A RESTful license API&lt;/li&gt;
&lt;li&gt;A Java API wrapper&lt;/li&gt;
&lt;li&gt;BuiltByBit marketplace integration for fully automated license issuance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's currently at &lt;strong&gt;v1.2.4&lt;/strong&gt;, with 11 updates since launch in January 2025, 212 purchases, and a 5.0 average rating across 16 reviews on BuiltByBit.&lt;/p&gt;




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

&lt;p&gt;The core model is dead simple — intentionally so.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. You create a license key (dashboard or API)
2. The user enters the key in your product
3. Your product calls the SunLicense validation endpoint
4. The server applies your rules → grants or denies access
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rules you can configure per license:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expiry dates&lt;/li&gt;
&lt;li&gt;Device (HWID) restrictions&lt;/li&gt;
&lt;li&gt;IP restrictions / blacklists&lt;/li&gt;
&lt;li&gt;Temporary licenses&lt;/li&gt;
&lt;li&gt;Max activations&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Integrating Into Your Product
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Java (using the official API wrapper)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Initialize the client&lt;/span&gt;
&lt;span class="nc"&gt;SunLicense&lt;/span&gt; &lt;span class="n"&gt;client&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;SunLicenseClient&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"https://your-sunlicense-host.com"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"your-product-secret-key"&lt;/span&gt;
&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Validate at startup&lt;/span&gt;
&lt;span class="nc"&gt;ValidationResult&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;validate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;userInputKey&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
    &lt;span class="nc"&gt;HardwareID&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;generate&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// auto HWID binding&lt;/span&gt;
&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isValid&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"License invalid: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getReason&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;exit&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// License valid — continue loading your product&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Other Languages (REST API)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST /api/v1/license/validate
Content-Type: application/json

{
  "key": "XXXX-XXXX-XXXX-XXXX",
  "hwid": "generated-hardware-id",
  "product_id": "your-product-id"
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"valid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"expires_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-12-31T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"License validated successfully"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Support guides exist for PHP, Python, JavaScript, Lua, and more — so you're not starting from scratch regardless of your stack.&lt;/p&gt;




&lt;h2&gt;
  
  
  Feature Breakdown
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Core
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Web Admin Dashboard&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customer Dashboard (Discord OAuth2)&lt;/td&gt;
&lt;td&gt;✅ New in 1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discord Bot Integration&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RESTful License API&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Java API Wrapper&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Temporary Licenses&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IP Restrictions&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HWID Restrictions&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unlimited Products &amp;amp; Licenses&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Graphs &amp;amp; Analytics&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dark Theme&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Automation
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Auto License Creation via BuiltByBit Purchase&lt;/td&gt;
&lt;td&gt;✅ New in 1.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auto License Creation via Discord Role&lt;/td&gt;
&lt;td&gt;✅ New in 1.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product Discord Role on License Claim&lt;/td&gt;
&lt;td&gt;✅ New in 1.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DM Discord Commands&lt;/td&gt;
&lt;td&gt;✅ New in 1.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom Discord Embeds&lt;/td&gt;
&lt;td&gt;✅ New in 1.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blacklists (IP / HWID)&lt;/td&gt;
&lt;td&gt;✅ New in 1.1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Security &amp;amp; Ops
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Secure Developer API&lt;/td&gt;
&lt;td&gt;✅ New in 1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Disaster Mode (Panic Mode)&lt;/td&gt;
&lt;td&gt;✅ New in 1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automated + Manual Backups&lt;/td&gt;
&lt;td&gt;✅ New in 1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;System Health Checks&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blacklisting&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Platform Support
&lt;/h2&gt;

&lt;p&gt;SunLicense ships with integration guides for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Minecraft&lt;/strong&gt; — Plugins, Mods, Server Software&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Discord Bots&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FiveM Projects&lt;/strong&gt; &lt;em&gt;(added in 1.1)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Java Projects&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PHP Projects&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Python Projects&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JavaScript Projects&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lua Projects&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Infrastructure: runs on &lt;strong&gt;ARM and x86&lt;/strong&gt;, supports &lt;strong&gt;Pterodactyl Panel&lt;/strong&gt; (a Pterodactyl Egg is included), and &lt;strong&gt;managed hosting&lt;/strong&gt; is available if you'd rather not self-host.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Should Be Using This
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Marketplace sellers (BuiltByBit, Spigot, etc.)
&lt;/h3&gt;

&lt;p&gt;The BuiltByBit automation is the headline feature. When someone buys your resource, SunLicense auto-generates their key and optionally assigns a Discord role — zero manual steps. If you're actively selling on a marketplace and handling license requests by hand, this alone pays for itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Discord bot developers
&lt;/h3&gt;

&lt;p&gt;The Discord-native workflow is genuinely polished. Customers can claim and check licenses entirely via DM commands. Role-gated access works automatically on claim. Custom embed support means it fits your branding without looking like someone else's bot.&lt;/p&gt;

&lt;h3&gt;
  
  
  Java / backend developers
&lt;/h3&gt;

&lt;p&gt;The Java API wrapper is well-maintained, there's a sample project in the docs, and HWID + IP binding gives you real protection for desktop software without running your own validation infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Small studios with multiple products
&lt;/h3&gt;

&lt;p&gt;Unlimited products and licenses out of the box. If you're at three or four products and still handling key distribution manually over Discord — this is the inflection point where a system like this pays for itself in hours saved per week.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Honest Take
&lt;/h2&gt;

&lt;p&gt;No tool is perfect, and the reviews are candid about where SunLicense has room to grow.&lt;/p&gt;

&lt;p&gt;The setup process has a learning curve, especially outside the Java ecosystem. One reviewer noted:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Not being able to configure things outside the Java experience makes it harder than it needs to be sometimes."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is fair feedback. The creator has acknowledged it publicly and is active on the Discord server taking suggestions.&lt;/p&gt;

&lt;p&gt;The flip side: &lt;strong&gt;11 updates since January 2025&lt;/strong&gt;, covering things users actually asked for — customer dashboards, automated backups, FiveM support, the secure developer API. That pace of iteration matters a lot when your product's license validation depends on a tool staying maintained.&lt;/p&gt;

&lt;p&gt;One other thing worth knowing: this is a &lt;strong&gt;self-hosted system&lt;/strong&gt;. You're responsible for running the server, or you pay for managed hosting. If zero-ops is a hard requirement, factor that into your evaluation.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Users Are Saying
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The dashboard is intuitive, the automation works flawlessly, and every feature feels like it was built with real developers' needs in mind. It's rare to find a product that combines such a smooth user experience with this level of power and reliability."&lt;/em&gt;&lt;br&gt;
— &lt;strong&gt;gOOvER&lt;/strong&gt;, ★★★★★&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"By far the best License Management system. The owner even helped me in a private voice call to set everything up — 10/10."&lt;/em&gt;&lt;br&gt;
— &lt;strong&gt;xByNovaTV&lt;/strong&gt;, ★★★★★&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"It's a solid and promising product. The Discord bot is super helpful. You can tell there's real passion behind it. Setup can be a pain outside Java, but despite those bumps, it's still a great tool overall."&lt;/em&gt;&lt;br&gt;
— &lt;strong&gt;bestiebeate&lt;/strong&gt;, ★★★★☆&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"This is the first and probably last license system I have to buy."&lt;/em&gt;&lt;br&gt;
— &lt;strong&gt;workattack&lt;/strong&gt;, ★★★★★&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Base License&lt;/td&gt;
&lt;td&gt;$14.99 one-time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enhanced Support (install &amp;amp; setup)&lt;/td&gt;
&lt;td&gt;+$20.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Source Code&lt;/td&gt;
&lt;td&gt;+$99.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Support Duration&lt;/td&gt;
&lt;td&gt;Lifetime&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Bundles are also available:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SunLicense Bundle&lt;/strong&gt; — Total Protection &amp;amp; Control for Your Software (~$25.48, was $29.98)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SunDevs Developer Bundle&lt;/strong&gt; — All SunDevs products (~$47.96, was $59.96)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🔗 &lt;a href="https://builtbybit.com/resources/sunlicense-license-management-system.58359/?ref=featured" rel="noopener noreferrer"&gt;SunLicense on BuiltByBit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📖 &lt;a href="https://docs.sundevs.hapangama.com" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💬 &lt;a href="https://discord.gg/sundevs" rel="noopener noreferrer"&gt;Discord Support Server&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;☕ &lt;a href="https://sundevs.hapangama.com" rel="noopener noreferrer"&gt;SunDevs Studio&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built and maintained by &lt;a href="https://kasun.hapangama.com" rel="noopener noreferrer"&gt;Kasun Hapangama&lt;/a&gt; @ SunDevs · Sri Lanka&lt;/em&gt;&lt;/p&gt;

</description>
      <category>tools</category>
      <category>opensource</category>
      <category>java</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
