Devlog #1: Building the Foundation
Date: July 15, 2026
Just started the project and it already feels ike theres too much too learn beofre starting. I know it would be hard designing the whole architecture and system and oh god it was!
So as I was saying, I started with the most important steps designing the whole system and architecture of the project.
The usual stufff!! :
Setting up the project
The first few commits were just getting the project into a shape where I could actually start building.
- Initial repository
- Project structure
- Cleaning up the directory layout
.gitignore- Removing unnecessary cache files
Till this point I hadn’t really started implementing the actual idea. It was just a setup, that was going to be base of the whole project.
Getting modules to communicate
The first actual component I worked on was the event system.
I didn’t want modules calling each other directly because that would make everything tightly coupled very quickly.
Instead, I added an event-based communication layer.
At this point it was very simple, but it gave me something to build on.
Scheduler and Runtime
Once events were working, I moved on to the scheduler.
At first I wasn’t sure how much responsibility the scheduler should have.
After a few iterations I settled on keeping it responsible only for deciding what runs next. The ExecutionLayer should only execute that plan.
I wanted scheduling decisions to exist independently from execution, so I introduced an ExecutionPlan instead of letting the runtime decide everything on the fly.
After that I implemented the runtime itself along with the execution layer.
The runtime finally had a complete execution cycle.
Too late feeling sleepyyy (┬┬﹏┬┬)
however i moved on from my sleep with a coffee but the headache wasnot over yet.
First redesign
While connecting everything together I realised one part of the architecture wasn’t sitting right.
ModuleResult was trying to do too much.
Instead of letting it continue to grow, I redesigned it into a cleaner boundary between modules and the runtime.
That change also let me decouple the ExecutionLayer from the EventBus.
The code became much easier to understand what it does.
Here i learned before coding any feature you have to have clearest picture of the feature you want to implement or you will end up debugging and redesigning the architecture whole night like me ಥ_ಥ
I’m pretty sure this won’t be the last redesign, but it already feels cleaner than the first version.
Testing
After getting the runtime working, I didn’t want to assume it was correct.
I added integration tests for the runtime cycle instead of only testing individual classes.
It’s still a very small project, but having tests this early makes me much more comfortable refactoring things later.
Documentation
I’ve never really documented architectural decisions properly before.
Usually I only remember what I changed.
A month later I completely forget why I changed it.
So this time I documented everything.
End of the day
By the end of today, System Design and Architecture was complete.
There isn’t much to show visually yet.
No robot.
No simulator.
No fancy AI.
Just a runtime that can execute modules, schedule work, and pass integration tests.
Honestly, I’m happy with that.
The interesting features can wait.
I’d rather spend time getting the foundation right than spend the next few months constantly rewriting it.
Progress today
- Project structure
- Event system
- Scheduler
- ExecutionPlan
- Runtime
- ExecutionLayer
- Runtime integration tests
- ModuleResult redesign
- ExecutionLayer decoupled from EventBus
So at last I went to sleep ofcourse it was important to me, I love my sleep. GoodNight ;-)
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.