• All Categories

    My Wishlist

    The Story Behind Angoer — From Self-Taught Code to E-Commerce

    Angoer wasn't built by a team or a company — it started with a 17-year-old teaching himself to code. Here's how curiosity turned into a brand.

    The Story Behind Angoer — From Self-Taught Code to E-Commerce

    01. How It All Began

    Safwan was just an ordinary kid, going to school like everyone else — no different from his classmates, no special plan for the future. But somewhere along the way, something shifted. Through a random string of YouTube videos, he stumbled into the world of technology, and it immediately pulled him in.

    It started small: Python. He found a YouTube channel called Bro Code and began following along, learning the basics — variables, loops, functions, the building blocks every programmer starts with. There was no course, no mentor, no structured plan. Just curiosity, a laptop, and hours spent watching, typing, and figuring things out on his own.

    Within about a week, something had changed. What began as casual curiosity turned into genuine interest. Safwan made a decision that would end up shaping everything that came after: he was going to learn Django, a powerful backend framework used to build real, functioning web applications.

    That decision marked a turning point. Learning Django meant going beyond simple scripts — it meant understanding how websites actually work behind the scenes: databases, logic, structure, and the systems that power real applications. It wasn't easy, and there were plenty of moments of confusion and frustration. But each small win — each feature that finally worked, each bug that finally made sense — built on the last.

    This was the true starting point of everything Angoer would become. Not a business plan. Not a team of experts. Just a kid, a YouTube channel, and the stubborn decision to keep learning.

    02. Building the E-Commerce Project

    The project officially started on August 4, 2025 — the moment Safwan decided to turn what he'd learned into something real. What followed was nearly a full year of development: a year filled with effort, late nights, and constant searching for the right design, structure, and approach. With every iteration, his skills sharpened — a little more each time.

    Balancing programming with school wasn't easy. Time was limited, and progress often had to happen in small pockets between classes and daily responsibilities. But the passion for coding kept pulling him back, even during the busiest weeks.

    He published the project on GitHub, and over time, kept improving it — refining the code, fixing what didn't work, and learning constantly along the way. There were periods where he stepped away from it entirely, only to come back with fresh ideas and renewed motivation.

    Along the journey, he learned and integrated REST APIs and WebSockets, using WebSockets specifically to power real-time notifications — allowing the platform to instantly update users the moment something happened. This wasn't just theoretical learning; it was applied daily, tested, broken, and rebuilt.

    Every late night was another step closer. Attempt after attempt went into trying to get the project live on the web — but there was one major obstacle: money. Hosting, domains, and infrastructure all required a budget that simply wasn't there.

    Originally, the idea behind the project was purely commercial — build it, launch it, sell products. But as time passed and the project evolved, Safwan made a different decision: instead of just building another store, he would create something bigger — a brand of his own. And that decision is what gave birth to Angoer, built starting from literally zero dollars.

    03. The Bugs, the Failures, and the Lessons Along the Way

    No project like this comes without its fair share of frustration — and Angoer's development was no exception. Building a full e-commerce platform from scratch meant running into problems that had no clear answers, no shortcuts, and no one to ask for help but Google, documentation, and trial and error.

    One of the earliest challenges came with the database structure itself. In the beginning, the models weren't well planned — products, orders, and categories were connected in ways that made simple features unnecessarily complicated. Every time a new feature was added, something else would break. Eventually, this led to a full redesign of the database schema, structuring it properly from the ground up so it could actually scale.

    Authentication was another major hurdle. Getting user accounts, sessions, and permissions to work securely took several failed attempts — at times, users could stay logged in when they shouldn't, or lose access when they shouldn't have. It took real research into how authentication systems are supposed to work, not just copying code, to finally get it right.

    Real-time features brought their own set of problems. When WebSockets were introduced for live order notifications, the first versions were unstable — notifications would sometimes fire twice, sometimes not at all, or connections would silently drop without warning. Debugging this meant learning to read server logs carefully, testing connections manually, and slowly isolating exactly where the breakdown was happening.

    Performance was another lesson learned the hard way. As more products and test data were added, pages that once loaded instantly started slowing down. This pushed a deep dive into database queries, indexing, and understanding why certain operations were expensive — knowledge that came only after seeing the platform struggle firsthand.

    And then there were the smaller, everyday bugs: broken cart totals, images not displaying correctly, forms silently failing to submit. Each one, on its own, was minor. But together, they built something valuable — patience, and the habit of debugging methodically instead of guessing.

    None of these problems were solved instantly. Most were fixed through repeated testing, reading error messages carefully, searching through documentation, and sometimes simply stepping away and coming back with a clearer mind. But every bug fixed left the project — and Safwan — a little stronger than before.

    04. The Migration Bug That Almost Broke Everything

    One of the hardest bugs came from something that seemed simple at first — changing a field type in one of the models. After editing the table structure and running makemigrations, Django threw an error, and what should have taken minutes turned into hours of digging through migration files, conflicting dependencies, and database constraints trying to figure out exactly what broke.

    The Migration Bug That Almost Broke Everything

    05. How the Migration Bug Was Fixed

    • Read the full error trace carefully instead of guessing at a quick fix
    • Checked the migration files to find where the conflict started
    • Removed the broken/conflicting migration file safely
    • Adjusted the model field step by step instead of all at once
    • Ran makemigrations again to generate a clean migration
    • Ran migrate and confirmed the database updated without errors
    • Backed up the database before touching migrations again in the future

    06. Why the Name "Angoer"?

    Choosing a name is supposed to be one of the fun parts of building a brand — but for Angoer, it turned into one of the hardest and most frustrating parts of the entire process.

    The search for the perfect domain name went on for what felt like forever. Countless attempts were made — brainstorming with ChatGPT, brainstorming with Claude, testing idea after idea, only to find the domain already taken, unavailable, or just not right. Over 200 attempts came and went, each one ending in the same result: nothing.

    Frustration built up with every failed search. Then, almost by accident, the breakthrough happened. While randomly typing letters into a domain checker, the word "django" was typed in — a nod to the very framework that started this whole journey. It was, of course, already taken.

    But instead of giving up, the letters were tweaked. "Django" slowly transformed, letter by letter, until it became something new: Angoer.

    The moment it was typed in and the checker showed it was available, everything clicked. There was no deep meaning planned in advance, no branding agency involved — just a spontaneous variation of a word tied to where it all began, discovered in a random moment after hundreds of failed attempts.

    Without hesitation, the domain was purchased immediately for $8.50 on Hostinger — and that was the exact moment Angoer officially came into existence.

    07. Safwan, Founder of Angoer

    “People think building something means having it all figured out from the start — a clear plan, the right resources, maybe even a team behind you. For me, it was nothing like that. It was a kid with a laptop, hundreds of failed attempts, bugs that made no sense until suddenly they did, and a domain name that came out of pure luck after giving up on finding the "right" one. Angoer wasn't built because everything went smoothly — it was built because I refused to stop every time something broke. Every crash, every error message, every late night was just another step closer to something real. And looking back now, I wouldn't trade a single one of those failures, because they're the reason Angoer exists today.”

    — Safwan, Founder of Angoer