<?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: Samir Alibabic</title>
    <description>The latest articles on DEV Community by Samir Alibabic (@samiralibabic).</description>
    <link>https://dev.to/samiralibabic</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%2F1101202%2Fd775e82b-a1a3-4cbe-b537-9ea8e6195b7a.jpg</url>
      <title>DEV Community: Samir Alibabic</title>
      <link>https://dev.to/samiralibabic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/samiralibabic"/>
    <language>en</language>
    <item>
      <title>Free and Open-Source alternatives to Bitly and Co.</title>
      <dc:creator>Samir Alibabic</dc:creator>
      <pubDate>Sun, 31 Mar 2024 12:59:17 +0000</pubDate>
      <link>https://dev.to/samiralibabic/free-and-open-source-alternatives-to-bitly-and-co-31gn</link>
      <guid>https://dev.to/samiralibabic/free-and-open-source-alternatives-to-bitly-and-co-31gn</guid>
      <description>&lt;p&gt;In my &lt;a href="https://samiralibabic.hashnode.dev/an-introduction-to-link-shortening"&gt;Introduction to Link Shortening&lt;/a&gt; I gave an overview of the most popular solutions for link shortening and management. This time I want to introduce you to some of the alternatives to popular services like Bitly, which are free, Open-Source and can be hosted on your own servers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Polr
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pVEcPLlY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1711225630682/d6bdd372-e049-4304-bf7c-86f5303a4162.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pVEcPLlY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1711225630682/d6bdd372-e049-4304-bf7c-86f5303a4162.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="img" width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://polrproject.org/"&gt;Polr&lt;/a&gt; is a PHP-based, open-source link shortener, with an API access and basic analytics. While its user interface may have charmed users back in 2013 at the project's inception, it now falls short of contemporary design standards.&lt;/p&gt;

&lt;p&gt;On the analytics front, this link shortener furnishes insights into visits, referrers, and the geographical distribution of visitors. It has a demo version online, which you can test, before you decide to install it on your server.&lt;/p&gt;

&lt;p&gt;I decided to give it a whirl myself, but after poking around in the demo, I didn't even bother with the hassle of installing it on my own machine.&lt;/p&gt;

&lt;p&gt;However, it's worth noting that Polr isn't packaged within a container, necessitating manual setup. Nonetheless, for those willing to undertake the effort and requiring only basic analytics, the project is readily available on &lt;a href="https://github.com/cydrobolt/polr"&gt;GitHub&lt;/a&gt;, where it garners a commendable 4.9k stars.&lt;/p&gt;

&lt;h2&gt;
  
  
  YOURLS
&lt;/h2&gt;

&lt;p&gt;Originating in 2009, this link shortener stands as one of the oldest in the field. Developed in PHP, it boasts a robust ecosystem comprising over 200 plugins designed to expand its functionalities.&lt;/p&gt;

&lt;p&gt;Despite my attempts to deploy it within various containerized environments - via &lt;a href="https://github.com/YOURLS/images"&gt;Docker image&lt;/a&gt; on a &lt;a href="https://lima-vm.io/"&gt;Lima&lt;/a&gt; machine, both with and without &lt;code&gt;docker-compose&lt;/code&gt; and later within a Minikube environment using &lt;a href="https://github.com/YOURLS/charts"&gt;Helm&lt;/a&gt; - I encountered persistent setbacks. Whether due to my own missteps or shortcomings in the Docker image's accuracy or currency, I found myself unable to achieve a successful deployment.&lt;/p&gt;

&lt;p&gt;Compounding this challenge, as a macOS Sonoma user, I faced the additional hurdle of PHP support removal. To circumvent this limitation, I resorted to manual installation. Employing the familiar &lt;code&gt;brew install php&lt;/code&gt; command, which I rely on for most software installations, I obtained the necessary instructions to integrate PHP with Apache:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;To enable PHP in Apache add the following to httpd.conf and restart Apache:
    LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so

    &amp;lt;FilesMatch \.php$&amp;gt;
        SetHandler application/x-httpd-php
    &amp;lt;/FilesMatch&amp;gt;

Finally, check DirectoryIndex includes index.php
    DirectoryIndex index.php index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, upon executing the instructions, macOS Gatekeeper intervened, flagging the module as unsigned. While I won't delve into the intricacies here, you can refer to a comprehensive guide provided in a &lt;a href="https://medium.com/@nadine.fisch/add-php-to-apache-on-macos-12-e3bb43469195"&gt;Medium article&lt;/a&gt; for detailed instructions. Feeling overwhelmed by the complexity of the process, I made the decision to pivot and explore alternative solutions.&lt;/p&gt;

&lt;p&gt;Nevertheless, the project continues to receive active maintenance from its creator, &lt;a href="https://twitter.com/ozh"&gt;Ozh Richard&lt;/a&gt;, and boasts a thriving community of contributors. Its source code is readily available on &lt;a href="https://github.com/YOURLS/YOURLS"&gt;GitHub&lt;/a&gt;, where it has garnered an impressive 10k stars, indicative of its widespread adoption and popularity within the developer community.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kutt
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--T9_s1KDP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1699187695881/1f5bd1f9-270f-4b6b-afff-8861b1841d7c.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T9_s1KDP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1699187695881/1f5bd1f9-270f-4b6b-afff-8861b1841d7c.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="Kutt screenshot" width="800" height="816"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://kutt.it/"&gt;Kutt&lt;/a&gt; represents a sleek, contemporary option, delivering a robust user experience alongside an array of appealing features. Among its highlights are customizable short URLs, comprehensive click tracking, and detailed analytics.&lt;/p&gt;

&lt;p&gt;Under the hood, Kutt's tech-stack includes Node.js with Express, Passport for authentication, React with Next.js for frontend rendering, Easy Peasy for state management, styled-components for CSS styling, and Recharts for chart visualization. Data storage is handled by PostgreSQL, complemented by Redis for caching, while deployment is streamlined through Docker.&lt;/p&gt;

&lt;p&gt;It boasts browser extensions, a handy CLI, and versatile clients and SDKs for almost any platform you can think of. Plus, it plays nice with ShareX, the ultimate screen capture and file-sharing tool.&lt;/p&gt;

&lt;p&gt;However, as of writing this, the hosted version at &lt;a href="http://kutt.it/"&gt;kutt.it&lt;/a&gt; seems to have taken a hiatus. Moreover, its development pace has slowed down, and its tech-stack isn't exactly keeping up with the times. Attempting a manual installation via npm was a headache, thanks to pesky dependency conflicts, leaving Docker as the only viable option.&lt;/p&gt;

&lt;p&gt;Even after firing it up in Docker, creating an account proved to be an exercise in futility, with the UI offering nothing more than a vague &lt;code&gt;An error occurred&lt;/code&gt; message. Call me lazy, but I wasn't keen on diving into container logs and hunting down root causes. Nevertheless, I'm sure with a bit more effort, one could get it up and running smoothly.&lt;/p&gt;

&lt;p&gt;It's open-source under the MIT license, living its best life on &lt;a href="https://github.com/thedevs-network/kutt"&gt;GitHub&lt;/a&gt; with a respectable 8k stars. And hey, word on the street is that the maintainer's already cooking up a version 3.0!&lt;/p&gt;

&lt;h2&gt;
  
  
  Shlink
&lt;/h2&gt;

&lt;p&gt;Shlink is a self-hosted URL shortener offering a &lt;a href="https://shlink.io/documentation/api-docs"&gt;REST API&lt;/a&gt; and a &lt;a href="https://shlink.io/documentation/command-line-interface/entry-point"&gt;CLI interface&lt;/a&gt; for interaction. It also includes a Progressive Web Application (PWA) for interacting with multiple Shlink instances.&lt;/p&gt;

&lt;p&gt;Similar to Kutt, &lt;a href="https://shlink.io/"&gt;Shlink&lt;/a&gt; can be run via Docker with an internal database. The only requirement is an API key for &lt;a href="https://dev.maxmind.com/geoip/geolite2-free-geolocation-data"&gt;GeoLite2&lt;/a&gt;, used for geolocation data.&lt;/p&gt;

&lt;p&gt;To test Shlink locally with ease, Docker users can simply execute the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run \
    --name my_shlink \
    -p 8080:8080 \
    -e DEFAULT_DOMAIN=localhost \
    -e IS_HTTPS_ENABLED=false \
    -e GEOLITE_LICENSE_KEY=your_license_key \
    shlinkio/shlink:stable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command initiates the Shlink server, encompassing both a REST API and a CLI. Subsequently, you can utilise the CLI to generate your API key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker exec -it my_shlink shlink api-key:generate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When experimenting with the CLI, if you create a link using the command &lt;code&gt;docker exec -it my_shlink shlink short-url:create&lt;/code&gt;, the resulting short link may not include the default port &lt;code&gt;8080&lt;/code&gt;. Therefore, you have to add it manually for the link to work (e.g. &lt;code&gt;http://localhost:8080&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Additionally, the PWA, commonly used for accessing Shlink, can also be installed and operated via Docker by executing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run \
    --name shlink-web-client \
    -p 8000:8080 \
    -e SHLINK_SERVER_URL=http://localhost:8080 \
    -e SHLINK_SERVER_API_KEY=your_generated_key \
    shlinkio/shlink-web-client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Upon visiting &lt;code&gt;http://localhost:8000&lt;/code&gt; you will be greeted with a user-friendly Web App interface complete with analytics. What I find cool by this link shortener is the ability to manage multiple servers within a single interface. 😎&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--skqFxC9q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1711707546647/e847f860-e246-43cb-8c81-e3015eea2d59.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--skqFxC9q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1711707546647/e847f860-e246-43cb-8c81-e3015eea2d59.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="Shlink UI screenshot" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Besides the number of visits for each link, the provided analytics include operating systems, browsers, referrers, countries and cities. Data series can be shown for any period, from one day to a year or custom ranges.&lt;/p&gt;

&lt;p&gt;Other interesting features include QR code generation, redirection rules based on devices, languages or query parameters, editing short URL's after creation and comparing statistics for up to five short links. And all this is just on the first glance at the Web App, and there is &lt;a href="https://shlink.io/documentation/some-features/"&gt;more&lt;/a&gt;. Very powerful!&lt;/p&gt;

&lt;p&gt;All the kudos to the author and maintainer &lt;a href="https://github.com/acelaya"&gt;Alejandro Celaya&lt;/a&gt;, who has been building the project actively since 2016! 🤯&lt;/p&gt;

&lt;p&gt;It's definitely underrated with 2.7k stars on GitHub, considering everything this link shortener offers. For those interested, you can check out the repository here: &lt;a href="https://github.com/shlinkio/shlink"&gt;https://github.com/shlinkio/shlink&lt;/a&gt; ⭐️&lt;/p&gt;

&lt;h2&gt;
  
  
  Dub.co
&lt;/h2&gt;

&lt;p&gt;For those in search of a contemporary solution for link shortening and analytics, &lt;a href="https://dub.co/"&gt;Dub.co&lt;/a&gt; is worth considering. When you visit this hosted service, you'll immediately notice its modern and user-friendly design, which is typical of today's startup landscape.&lt;/p&gt;

&lt;p&gt;Dub.co boasts a modern tech-stack, including Next.js, TailwindCSS, Prisma, NextAuth.js, and BoxyHQ for authentication, alongside Turborepo as a robust build system. It follows a cloud-first approach, utilizing various managed services:&lt;/p&gt;

&lt;p&gt;Clickhouse database, managed by &lt;a href="https://www.tinybird.co/"&gt;Tinybird&lt;/a&gt; - used for time-series click data&lt;br&gt;
Redis database, managed by &lt;a href="https://upstash.com/"&gt;Upstash&lt;/a&gt; - for caching link metadata and serving redirects&lt;br&gt;
MySQL database, managed by &lt;a href="http://planetscale.com/"&gt;PlanetScale&lt;/a&gt; - for storing the actual user and link data&lt;br&gt;
Whether you choose to deploy it locally or integrate it into your existing infrastructure, you'll need to create accounts with the mentioned service providers. Furthermore, you can use &lt;a href="https://postmarkapp.com/"&gt;Postmark&lt;/a&gt; for sending emails and &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt; to customise your OpenGraph images.&lt;/p&gt;

&lt;p&gt;There is no Docker image, but installation is smooth nonetheless, thanks to a nice looking documentation powered by &lt;a href="https://mintlify.com/"&gt;Mintlify&lt;/a&gt;. The only issues I ran into, while setting it up locally, were missing &lt;code&gt;POSTMARK_API_KEY&lt;/code&gt; (optional according to the documentation) and &lt;code&gt;@dub/ui&lt;/code&gt; and &lt;code&gt;@dub/utils&lt;/code&gt; modules not building properly. But it was nothing an average technical user can't solve.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--smU4mm5h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1711731880300/1dad0801-c588-4b7a-bcfe-abe379d6af4a.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--smU4mm5h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1711731880300/1dad0801-c588-4b7a-bcfe-abe379d6af4a.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="Dub screenshot" width="800" height="614"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Analytics provide visits, referrers, locations by country or city, devices, browsers, and operating systems. Essentially, it covers everything you might need to effectively track your campaign's performance. What I found the most impressive with Dub.co is its extensive options for link creation: UTM parameters, custom social media cards, link cloaking, password protection, expiration date, iOS, Android and Geo-based targeting. It's all there! 🤯&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TzgYv9Ny--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1711732277092/2dae4042-34f7-446f-a185-9ae2d9c6cf35.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TzgYv9Ny--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1711732277092/2dae4042-34f7-446f-a185-9ae2d9c6cf35.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="Dub create link screenshot" width="800" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/steventey"&gt;Steven Tey&lt;/a&gt; has done an outstanding job with Dub.co, and its success is evident from its recent launch on &lt;a href="https://www.producthunt.com/posts/dub"&gt;Product Hunt&lt;/a&gt;. Dub.co quickly rose to become 1# Product of the Day and 1# Product of the Week. With its continued momentum, it's well on its way to being a #1 Product of the Month. This significant recognition is sure to propel Dub.co to even greater success in the future.&lt;/p&gt;

&lt;p&gt;Dub.co is licensed under the AGPL-3.0 license and has garnered an impressive 15.7k stars on &lt;a href="https://github.com/dubinc/dub"&gt;GitHub&lt;/a&gt;. 👏&lt;/p&gt;

&lt;h2&gt;
  
  
  linktracker.info
&lt;/h2&gt;

&lt;p&gt;This article would not be complete without me mentioning my own take on link shortening and analytics: &lt;a href="http://linktracker.info/"&gt;LinkTracker&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_xwooyLR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1711878086926/a5100950-58f9-4fc5-a87b-b25183c17f36.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xwooyLR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1711878086926/a5100950-58f9-4fc5-a87b-b25183c17f36.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="LinkTracker screenshot" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It features a simple interface to create and organise short links. Links can be categorised and tagged. Analytics are similar to what we have seen with other link shorteners: visits, browsers, devices, referrers and countries.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9xjXPVXN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1711878275645/901c39ce-6a85-48e2-ba4a-bf9ed280e510.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9xjXPVXN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1711878275645/901c39ce-6a85-48e2-ba4a-bf9ed280e510.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="LinkTracker analytics" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All shortened links are managed in a single table view, with statistics shown below. Currently, statistics are aggregated for all the links, except for visits, which are the most important statistic and therefore also shown for individual links.&lt;/p&gt;

&lt;p&gt;Tech-stack is Next.js, TailwindCSS and AntDesign. Data is stored in a PostgreSQL database managed by Supabase, with Prisma serving as the ORM.&lt;/p&gt;

&lt;p&gt;It's completely free to use and you can try it at &lt;a href="http://linktracker.info/CRZFOg"&gt;https://linktracker.info&lt;/a&gt;. 🙏&lt;/p&gt;

&lt;h2&gt;
  
  
  Unshorten - just in case
&lt;/h2&gt;

&lt;p&gt;As with any link shortening service, it's essential to consider the potential risks associated with spam and security vulnerabilities. Open-source solutions often offer greater transparency and security assurances.&lt;/p&gt;

&lt;p&gt;If you ever encounter a short link and have doubts about its legitimacy, you can utilise the free "unshorten" tool available at &lt;a href="http://unshorten.me/"&gt;unshorten.me&lt;/a&gt;. This tool helps you expand shortened links, providing insight into their destination and assisting in verifying their authenticity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Awesome list
&lt;/h2&gt;

&lt;p&gt;If you find this topic intriguing and wish to delve deeper, I highly recommend exploring the "awesome" &lt;a href="https://github.com/738/awesome-url-shortener#self-hosting-opensource"&gt;list on GitHub&lt;/a&gt; dedicated to link shortening and management tools.&lt;/p&gt;

&lt;p&gt;Thank you for taking the time to read this far. I hope you found the information useful. Feel free to reach out if you have any further questions or feedback. ✌️&lt;/p&gt;

</description>
      <category>urlshortener</category>
      <category>digitalmarketing</category>
      <category>linkanalytics</category>
      <category>linkshortener</category>
    </item>
    <item>
      <title>How I Built a Link Management Tool MVP in 4 Weeks with the Help of AI</title>
      <dc:creator>Samir Alibabic</dc:creator>
      <pubDate>Tue, 26 Sep 2023 10:31:34 +0000</pubDate>
      <link>https://dev.to/samiralibabic/how-i-built-a-link-management-tool-mvp-in-4-weeks-with-the-help-of-ai-436a</link>
      <guid>https://dev.to/samiralibabic/how-i-built-a-link-management-tool-mvp-in-4-weeks-with-the-help-of-ai-436a</guid>
      <description>&lt;h2&gt;
  
  
  Approach to product development
&lt;/h2&gt;

&lt;p&gt;As an indie developer, you have the freedom to explore your creativity, but the challenge lies in selecting an idea that's not only &lt;strong&gt;viable&lt;/strong&gt; but also &lt;strong&gt;achievable&lt;/strong&gt; when working solo. Ideally, it should be something that aligns with your interests, to keep you motivated and focused.&lt;/p&gt;

&lt;p&gt;I've often found myself overwhelmed by the sheer amount of work it takes to bring a concept to life, from brainstorming ideas to coding and finally getting it into the hands of users. Not to mention the knowledge and skills you have to acquire to be able to implement all of it.&lt;/p&gt;

&lt;p&gt;Luckily, in 2023, AI is advanced enough to assist us and speed up the whole process. Let's explore together how it can help.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Brainstorming Ideas&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I had a few years of experience working as a software developer, and my interests spanned across tech, finance, aviation, space, and gaming. The vastness of these interests left me pondering over the right niche.&lt;/p&gt;

&lt;p&gt;To tackle this, I turned to &lt;a href="https://chat.openai.com/"&gt;ChatGPT&lt;/a&gt; for assistance. The goal was to find a project that I could develop quickly, test in the real world, and iterate on as needed.&lt;/p&gt;

&lt;p&gt;The prompts were engineered in such a way as to take into account my background, personal interests, knowledge, and skills. The AI considered factors like market trends, user needs, and competition, which helped narrow down the possibilities.&lt;/p&gt;

&lt;p&gt;The first idea AI came up with, was an educative 👩‍🎓 financial 💸 simulation game, FinSim 🏦.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Money, money, money,&lt;br&gt;&lt;br&gt;
Must be funny&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I found the idea appealing, but at the same time, I was a little skeptical about whether I could pull this off. It was supposed to be educational, but I wasn't an expert and I didn't have time to become one. It was just too much, even with AI as an assistant. So I said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Let’s focus on something minimal, which could potentially be used or needed by lots of people online, a web or mobile app, that can be created (at least MVP) in a &lt;strong&gt;few weeks&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Selecting a Viable Idea&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;And that's how &lt;a href="https://www.linktracker.info/"&gt;LinkTracker&lt;/a&gt; was born. It's a link shortener, management, and analytics tool, in the form of a web application designed to help users manage, optimize, and track the performance of the links they share online. This idea had several advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Relevance:&lt;/strong&gt; Link management is a ubiquitous need, not limited to any specific industry or niche. Anyone who shares links online could benefit from it. &lt;strong&gt;(Mistake #1)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Passive Income Potential:&lt;/strong&gt; While the initial development required effort, the tool had the potential to generate almost passive income through subscription plans or ad placements. &lt;strong&gt;(Mistake #2)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interest Alignment:&lt;/strong&gt; The project aligned with my interests in tech and web development, making it a project I could stay passionate about.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Defining the MVP&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The focus was on delivering fast, following a &lt;a href="https://en.wikipedia.org/wiki/Lean_startup"&gt;Lean&lt;/a&gt; approach to validate ideas quickly. With the idea in place, the next step was to define the Minimum Viable Product (MVP). AI played a crucial role in this phase as well. It assisted in creating a structured roadmap for development and prioritizing features based on their importance and feasibility.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;AI-Driven Feature Definition&lt;/strong&gt;
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Link Shortening:&lt;/strong&gt; One of the core features of &lt;a href="https://www.linktracker.info/"&gt;LinkTracker&lt;/a&gt; is the ability to quickly shorten links and copy them to the clipboard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tag and Category Management:&lt;/strong&gt; AI suggested a feature for adding tags and categories to links. Users could either create new tags and categories on the fly or select from existing ones, simplifying link organization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automatic Title Generation:&lt;/strong&gt; To enhance user experience, AI suggested generating titles for links based on the linked webpage's title.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Timestamps:&lt;/strong&gt; The fields like "created by," "created at," and "modified at" were populated without manual intervention.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;

💡
And that's how you come up with ideas for a specific niche or market, without having insider knowledge. AI, even in its primitive form, has it!

&lt;/blockquote&gt;

&lt;p&gt;This is a simple example, and after some research and googling, everybody can come up with some features. But, remember, this is a LLM neural network, which was fed vast amounts of data, on any topic, and it always gives the most relevant topics.&lt;/p&gt;

&lt;p&gt;I like to think of it like a tag cloud, where tags are whole, dynamically generated paragraphs of text, and you can tap into this knowledge cloud without doing the research yourself.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Selecting the Right Technologies&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Choosing the right technologies is crucial in any development project. I opted for a combination of technologies that suited the project's requirements and my familiarity with them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Frontend:&lt;/strong&gt; Instead of starting from scratch, I decided to use a SaaS starter kit called &lt;a href="https://nextacular.co/"&gt;Nextacular&lt;/a&gt;, built on &lt;a href="https://nextjs.org/"&gt;Next.js&lt;/a&gt;. It provided a multi-tenant app structure with &lt;a href="https://www.prisma.io/"&gt;Prisma&lt;/a&gt;, &lt;a href="https://tailwindcss.com/"&gt;TailwindCSS&lt;/a&gt;, and &lt;a href="https://stripe.com/"&gt;Stripe&lt;/a&gt; integration out of the box. For UI components, I opted for &lt;a href="https://ant.design/"&gt;Ant Design&lt;/a&gt;, a design system that had most of the components I needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Backend:&lt;/strong&gt; To streamline backend development, I utilized Next.js's ability to create &lt;a href="https://nextjs.org/docs/pages/building-your-application/routing/api-routes"&gt;REST APIs&lt;/a&gt;. I also deployed the application on &lt;a href="https://vercel.com/"&gt;Vercel&lt;/a&gt;, ensuring an efficient developer experience. For the database, I went with &lt;a href="https://supabase.com/"&gt;Supabase&lt;/a&gt;, a Backend-as-a-Service solution built on &lt;a href="https://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt;. Prisma served as the ORM to interact with the database.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI Assistance:&lt;/strong&gt; Amazon &lt;a href="https://aws.amazon.com/de/codewhisperer/"&gt;CodeWhisperer&lt;/a&gt; was instrumental in writing code snippets, especially in areas where I wasn't entirely familiar with the technologies involved. ChatGPT played a pivotal role in proposing features for the MVP, defining the backlog, and setting sprint goals. The AI was adept at managing the project, while I guided it to better fit my needs and schedule.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;

💡
To deliver fast, utilize open-source software, starter kits, and known technologies. For learning and exploring new technologies, use AI.

&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Weekly Progression&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The development process was divided into weekly sprints. Here's a summary of the weekly progression:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 1: Infrastructure and Database Setup&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Set up a local development environment and version control&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure and adapt Nextacular for my use case&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User registration and authentication via SendGrid (E-Mail)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a database schema to store link-related information&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Week 2: UI and Core Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Build the user interface for managing and organizing links&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement link-shortening functionality to generate shortened URLs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deployment to Vercel and CI/CD setup&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Week 3: Link Performance Analytics&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Update database schema to capture and store performance data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enhance UI with analytical data: browsers, devices, referrers, and countries&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Week 4: Legal compliance, Product Launch and User Feedback&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Drafting and publishing legal documents&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Launching the MVP into a public beta&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gathering user feedback and implementing improvements&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Costs
&lt;/h3&gt;

&lt;p&gt;When embarking on the journey of product development and idea validation, one critical element to consider is cost management. It's paramount to keep expenses to a minimum, especially before your product starts generating revenue. The pitfalls of ignoring this aspect are evident in the stories of numerous indie builders and startups that faced &lt;strong&gt;financial struggles&lt;/strong&gt;, and, in some cases, even &lt;strong&gt;accumulated debt&lt;/strong&gt; due to uncontrolled costs.&lt;/p&gt;

&lt;p&gt;Now, let's talk about &lt;a href="https://www.linktracker.info/"&gt;LinkTracker&lt;/a&gt;'s costs. How much does it cost to run this platform? Is it $10 per month, $150 per month, or perhaps a whopping $2500 per month? The answer may surprise you:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$0 per month.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, you read that correctly – zero dollars for hosting and maintaining a fully functional web application. The only recurring expenditure is a mere $20 per year for the domain. 😁&lt;/p&gt;

&lt;p&gt;You might be wondering how this is possible. The secret lies in the strategic choice of technologies. If you delve a bit deeper, you'll discover that all the services employed in the &lt;a href="https://www.linktracker.info/"&gt;LinkTracker&lt;/a&gt; ecosystem offer free initial tiers, which aligns perfectly with the needs and budget constraints of startups and indie developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;From idea generation to feature definition, technology selection, and weekly progression, AI played a pivotal role in making the development of &lt;a href="https://www.linktracker.info/"&gt;LinkTracker&lt;/a&gt; a reality in just a few weeks.&lt;/p&gt;

&lt;p&gt;However, having another tool in your arsenal does not make you immune to making mistakes. Besides coding mistakes while using new and unknown tech, here are the two mistakes or wrong assumptions I made when selecting a viable idea:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;relevance and&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;passive income potential&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While it is true, that anybody who shares links online, can benefit from a link management tool, people rarely bother. It's only when it's their job, and it becomes tedious and cumbersome, that people turn to tools. For me, that meant, it was not for everybody and I had to find a focus group. That was &lt;strong&gt;mistake #1&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;

💡
Only because I find it useful, does not mean there is a market for it.

&lt;/blockquote&gt;

&lt;p&gt;Whenever you build something for the people, you can be sure they will come back with questions. That means, client services and support. 🙄 Assuming it will run on autopilot without any effort was my &lt;strong&gt;mistake #2&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;

💡
As software developers, mostly focused on our code, we forget to see the bigger picture in which software is just a single cog ⚙️ in a complex business machine 🚜.

&lt;/blockquote&gt;

&lt;p&gt;I embarked on the indie development path to fuel my growth as a software developer. In my view, every developer, regardless of their background, should work on side projects to expand their horizons.&lt;/p&gt;

&lt;p&gt;LinkTracker's creation was an invaluable learning experience, even without immediate financial gains (yet 😈). No regrets here.&lt;/p&gt;

&lt;p&gt;My future holds exciting prospects: crafting new ideas, enhancing product visibility, networking with industry leaders, and soaking up knowledge in business, marketing, sales, startups, and cutting-edge tech.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;AI has revolutionized development, making complex tasks more manageable. Whether you're an aspiring indie developer or someone with a great idea, consider AI's potential to supercharge your project.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>marketing</category>
      <category>ai</category>
      <category>chatgpt</category>
    </item>
  </channel>
</rss>
