<?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: Bilal Shemsu</title>
    <description>The latest articles on DEV Community by Bilal Shemsu (@bilal_shemsu).</description>
    <link>https://dev.to/bilal_shemsu</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3382819%2F3d903e21-74a9-4b0d-af15-e8748eec69b0.jpg</url>
      <title>DEV Community: Bilal Shemsu</title>
      <link>https://dev.to/bilal_shemsu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bilal_shemsu"/>
    <language>en</language>
    <item>
      <title>Building an education platform in Ethiopia - Addis Entrance Hub</title>
      <dc:creator>Bilal Shemsu</dc:creator>
      <pubDate>Sat, 20 Jun 2026 00:06:57 +0000</pubDate>
      <link>https://dev.to/bilal_shemsu/building-an-education-platform-in-ethiopia-addis-entrance-hub-4j8f</link>
      <guid>https://dev.to/bilal_shemsu/building-an-education-platform-in-ethiopia-addis-entrance-hub-4j8f</guid>
      <description>&lt;h1&gt;
  
  
  Addis Entrance Hub (AEH)
&lt;/h1&gt;

&lt;p&gt;Four years ago, I started thinking about building &lt;strong&gt;Addis Entrance Hub (AEH)&lt;/strong&gt;. At that time, I kept asking myself: why do so many students fail Grade 12 or get low scores in high school?&lt;/p&gt;

&lt;p&gt;When I was in Grade 10, I discussed this with my friends. We tried to understand the problem and look for solutions. As we started analyzing patterns, we realized that students mainly needed resources such as exams, books, references, past papers, mock exams, and more.&lt;/p&gt;

&lt;p&gt;However, when we looked deeper into our school, other students, and even some research and feedback, we discovered something more serious. The problem was not only a lack of resources, but also that &lt;strong&gt;the resources were scattered, unorganized, and there was no centralized platform&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So my friend and I came up with an idea: why don't we build Addis Entrance Hub?&lt;/p&gt;

&lt;h2&gt;
  
  
  From a Telegram Group to a Nationwide Platform
&lt;/h2&gt;

&lt;p&gt;We started very simply by creating a Telegram group. We shared past exams and talked about our idea. Without any platform, app, or large promotion, &lt;strong&gt;the community grew from 0 to 800 students within six months&lt;/strong&gt;, just by sharing among friends.&lt;/p&gt;

&lt;p&gt;When we saw that students expected more, I decided to build the first version of AEH from scratch. The goal was to create a system where students could easily access, search, practice, read, watch, and get educational resources in one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free for Every Ethiopian Student
&lt;/h2&gt;

&lt;p&gt;At first, we planned to make it paid. But after talking to many students and observing different schools, we made a strong decision. We would make it &lt;strong&gt;completely free for everyone&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No subscription&lt;/li&gt;
&lt;li&gt;No payment&lt;/li&gt;
&lt;li&gt;No difference between government and private school students&lt;/li&gt;
&lt;li&gt;No barriers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We wanted to build a &lt;strong&gt;nationwide platform&lt;/strong&gt; where any student with a phone and internet access could use it easily.&lt;/p&gt;

&lt;p&gt;To sustain the system, we planned other income sources:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Education-based e-commerce&lt;/li&gt;
&lt;li&gt;Advertising from high traffic&lt;/li&gt;
&lt;li&gt;Freelance work&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Winning a Competition and Scaling Up
&lt;/h2&gt;

&lt;p&gt;We released the first platform on a free server and reached around 1,000 students. Later, when we joined Grade 11, we participated in an &lt;strong&gt;innovation and technology competition and won&lt;/strong&gt;. We used the prize money to pay for a better server and migrated AEH to a paid server.&lt;/p&gt;

&lt;p&gt;From there, we continued building features step by step. After students took the national exam, they gave us real feedback. The system actually helped them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Through Grade 12
&lt;/h2&gt;

&lt;p&gt;When we reached Grade 12, things became more challenging. We had classes, exams, side projects, and personal development to manage. Still, we kept updating the platform and supporting students. During this time, we reached:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;3,000 active users&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Over 150,000 monthly traffic&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We were doing all of this while preparing for our own national exams.&lt;/p&gt;

&lt;h2&gt;
  
  
  Expanding into Career Guidance and University Support
&lt;/h2&gt;

&lt;p&gt;After the exams, we realized something important. Support should not stop there. Students still need help choosing their field, understanding what they are passionate about, what they are good at, and which university to join.&lt;/p&gt;

&lt;p&gt;So we expanded AEH into a &lt;strong&gt;full guidance platform&lt;/strong&gt;. We started providing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Career guidance&lt;/li&gt;
&lt;li&gt;University information&lt;/li&gt;
&lt;li&gt;Decision support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Students showed even more interest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Helping Students When the System Failed
&lt;/h2&gt;

&lt;p&gt;When the national exam results came out, my friend and I checked ours. The results were not exactly what we expected, but they were not bad either. Instead of focusing on that, we shifted our attention to helping other students, especially those facing internet problems or system issues.&lt;/p&gt;

&lt;p&gt;We successfully &lt;strong&gt;helped over 200 students&lt;/strong&gt; access their results and solve their problems. Because of our guidance, many students were able to make decisions faster and with more confidence.&lt;/p&gt;

&lt;p&gt;Then we waited for the university announcements.&lt;/p&gt;

&lt;p&gt;I remember when I was preparing to take the ASTU entrance exam. At night, I motivated the students who were taking the exam alongside me, and that motivation also helped me become more confident.&lt;/p&gt;

&lt;p&gt;After that, students again faced problems accessing their results because the official system failed. Through our community, we found solutions and helped them check their results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Joining ASTU and Continuing to Build
&lt;/h2&gt;

&lt;p&gt;Eventually, we joined &lt;strong&gt;Adama Science and Technology University (ASTU)&lt;/strong&gt; and started our freshman courses. While there, I talked to many students, and their feedback motivated me even more to continue building and improving AEH.&lt;/p&gt;

&lt;p&gt;During freshman year, I also tried to build an Ethiopian student-focused AI system using RAG, but I had to postpone it due to infrastructure limitations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Growth and Impact
&lt;/h2&gt;

&lt;p&gt;By this time, AEH had grown significantly:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Active Users&lt;/td&gt;
&lt;td&gt;5,900+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monthly Traffic&lt;/td&gt;
&lt;td&gt;200,000+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Telegram Channel Members&lt;/td&gt;
&lt;td&gt;4,000+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Community Group Members&lt;/td&gt;
&lt;td&gt;900+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quiz Channel Members&lt;/td&gt;
&lt;td&gt;311&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resource Channel Members&lt;/td&gt;
&lt;td&gt;419&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TikTok Views&lt;/td&gt;
&lt;td&gt;200,000+&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We had already &lt;strong&gt;integrated AI using prompt engineering&lt;/strong&gt; during our Grade 12 period, so students did not need to leave the platform to ask questions.&lt;/p&gt;

&lt;p&gt;Around the same time, we converted AEH into a &lt;strong&gt;Telegram Mini App&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I also explored building a mobile app using Android Studio while dealing with Grade 12 stress, even though I am mainly a PHP and Laravel developer. The first version was not perfect, but later my friend improved it significantly and made it much better.&lt;/p&gt;

&lt;p&gt;One of the biggest improvements was &lt;strong&gt;solving the internet problem by making the app offline-first&lt;/strong&gt;. This surprised the community and removed a major barrier for students.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keeping It Alive
&lt;/h2&gt;

&lt;p&gt;Throughout the journey, one of our biggest struggles was covering server costs. For two years, we managed through prize money, freelance work, and personal effort.&lt;/p&gt;

&lt;p&gt;This year was more difficult, so we decided to ask for sponsorship and infrastructure support. After posting our request, &lt;strong&gt;within about one hour, someone reached out and covered our server expenses for the year&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now AEH is stable again and continues to serve, guide, and support students. Open for sponsor.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;This is what Addis Entrance Hub is.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>learning</category>
      <category>resources</category>
      <category>showdev</category>
      <category>startup</category>
    </item>
    <item>
      <title>🚀 Building a Production-Ready REST API in Go (Without Any Framework)</title>
      <dc:creator>Bilal Shemsu</dc:creator>
      <pubDate>Tue, 16 Jun 2026 22:40:58 +0000</pubDate>
      <link>https://dev.to/bilal_shemsu/building-a-production-ready-rest-api-in-go-without-any-framework-k4g</link>
      <guid>https://dev.to/bilal_shemsu/building-a-production-ready-rest-api-in-go-without-any-framework-k4g</guid>
      <description>&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%2Fkm8dmtmhnwn1e9keisys.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%2Fkm8dmtmhnwn1e9keisys.png" alt=" "&gt;&lt;/a&gt;Most tutorials teach Go APIs using frameworks.&lt;/p&gt;

&lt;p&gt;I wanted to understand what really happens under the hood.&lt;/p&gt;

&lt;p&gt;So I built a &lt;strong&gt;fully working blog API using only Go’s standard library (&lt;code&gt;net/http&lt;/code&gt;)&lt;/strong&gt;, SQLite, and a simple deployment pipeline.&lt;/p&gt;

&lt;p&gt;No frameworks. No magic. Just clean fundamentals.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Why I Built This
&lt;/h2&gt;

&lt;p&gt;As a developer coming from frameworks like Laravel, I kept asking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does a framework &lt;em&gt;actually&lt;/em&gt; do for me?&lt;/li&gt;
&lt;li&gt;Can I build a clean API without one?&lt;/li&gt;
&lt;li&gt;How does Go handle HTTP and concurrency at a low level?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This project is my answer.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Go (&lt;code&gt;net/http&lt;/code&gt;)&lt;/strong&gt; — raw HTTP handling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLite (modernc.org/sqlite)&lt;/strong&gt; — no external dependencies, pure Go&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;sqlx&lt;/strong&gt; — cleaner database interactions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nginx&lt;/strong&gt; — reverse proxy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;systemd&lt;/strong&gt; — process management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions&lt;/strong&gt; — CI/CD automation&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📁 Project Structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
├── main.go
├── database/
│   └── db.go
├── models/
│   └── post.go
└── .github/
    └── workflows/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Key Idea:
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Separate HTTP logic from database logic — even without a framework.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🌐 API Endpoints
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Welcome message&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/posts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List posts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/posts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create post&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/posts/{id}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Get one&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PUT&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/posts/{id}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Update&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DELETE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/posts/{id}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🔥 What Makes This Interesting?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. No Router Library
&lt;/h3&gt;

&lt;p&gt;Routing is handled manually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One handler per path&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;switch r.Method&lt;/code&gt; handles multiple HTTP verbs&lt;/li&gt;
&lt;li&gt;URL params are extracted manually&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This shows you what frameworks like Gin or Echo abstract away.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Manual JSON Handling
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewDecoder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewEncoder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You control everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input validation&lt;/li&gt;
&lt;li&gt;Response format&lt;/li&gt;
&lt;li&gt;Error handling&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Clean Separation of Concerns
&lt;/h3&gt;

&lt;p&gt;Even without a framework:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Handler → Model → Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Handlers = HTTP logic&lt;/li&gt;
&lt;li&gt;Models = SQL queries&lt;/li&gt;
&lt;li&gt;Database = storage&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  4. SQLite Without CGO 🤯
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;modernc.org/sqlite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No C dependencies&lt;/li&gt;
&lt;li&gt;Easier deployment&lt;/li&gt;
&lt;li&gt;Works perfectly in CI/CD&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5. Production-Style Deployment
&lt;/h3&gt;

&lt;p&gt;This is where most tutorials stop — but this project goes further.&lt;/p&gt;

&lt;h4&gt;
  
  
  🔁 Deployment Flow
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin main
       ↓
GitHub Actions
       ↓
SSH into VPS
       ↓
git pull + build
       ↓
systemctl restart
       ↓
Live 🚀
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚡ What I Learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🧩 1. Frameworks Hide Complexity
&lt;/h3&gt;

&lt;p&gt;Things Laravel does automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Routing&lt;/li&gt;
&lt;li&gt;Request parsing&lt;/li&gt;
&lt;li&gt;Validation&lt;/li&gt;
&lt;li&gt;ORM abstraction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Go, you do it yourself — and that’s how you really learn.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 2. net/http Is More Powerful Than Expected
&lt;/h3&gt;

&lt;p&gt;With just:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HandleFunc&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ListenAndServe&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can build a complete API.&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚠️ 3. You Must Be Careful
&lt;/h3&gt;

&lt;p&gt;No framework means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You handle errors manually&lt;/li&gt;
&lt;li&gt;You manage structure yourself&lt;/li&gt;
&lt;li&gt;You enforce best practices&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 4. DevOps Matters More Than Code
&lt;/h3&gt;

&lt;p&gt;The biggest upgrade in this project wasn’t CRUD.&lt;/p&gt;

&lt;p&gt;It was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;systemd auto-restart&lt;/li&gt;
&lt;li&gt;Nginx reverse proxy&lt;/li&gt;
&lt;li&gt;CI/CD pipeline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s what makes it &lt;em&gt;real-world ready&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 If I Improve This Further
&lt;/h2&gt;

&lt;p&gt;Next steps I would take:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add middleware (logging, auth)&lt;/li&gt;
&lt;li&gt;Use a router (like chi or gin)&lt;/li&gt;
&lt;li&gt;Add validation layer&lt;/li&gt;
&lt;li&gt;Introduce environment configs&lt;/li&gt;
&lt;li&gt;Add Docker support&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;If you're learning Go:&lt;/p&gt;

&lt;p&gt;👉 Don’t start with frameworks&lt;br&gt;
👉 Start with &lt;code&gt;net/http&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Because once you understand this level…&lt;/p&gt;

&lt;p&gt;You can use any framework with confidence.&lt;/p&gt;




&lt;h2&gt;
  
  
  👨‍💻 Source Code
&lt;/h2&gt;

&lt;p&gt;(You can link your GitHub repo here)&lt;/p&gt;




&lt;h2&gt;
  
  
  🙌 Let’s Connect
&lt;/h2&gt;

&lt;p&gt;If you're also learning Go or building APIs, I’d love to hear how you're approaching it.&lt;/p&gt;




&lt;p&gt;⭐ If this helped you, consider sharing it!&lt;/p&gt;

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