Bottom-up design is an approach to building software where you start with the smallest working parts, get them solid, and then combine them into bigger components until the whole system stands. Rather than sketching the entire thing first and filling in details later, you assemble the system out of pieces you have already proven work.
Think of building with Lego. You do not carve a finished castle from a block of plastic. You snap together small bricks into a wall, a tower and a gate, and those reliable sub-pieces become the castle. The trick is that each brick is useful on its own and can be reused elsewhere. This contrasts with top-down design, which begins with the full castle in mind and works downward, and it leans heavily on good abstraction so each part hides its inner workings behind a clean connection point.
Bottom-up tends to produce working code early, which is handy for a proof of concept. The risk is that without a guiding picture, the parts can drift apart and not fit cleanly, so most teams pair it with a light overall plan.
This approach shines when you genuinely do not know the final shape yet. A startup testing a new idea benefits from building one solid feature, putting it in front of users, and growing outward from what works, rather than committing to a grand design that the market might reject. The same is true when a team is exploring an unfamiliar technology and wants to prove the tricky parts first. The reusable building blocks are a bonus that keeps paying off. A well-made payment module or notification component built once can serve the next three projects. So the question is rarely bottom-up versus top-down in the abstract. It is which one matches how much you already know about where you are heading.
At TopDevs we mix bottom-up and top-down depending on how clear the end goal is, so clients see working pieces quickly without losing sight of the whole.