DomeCode is a platform built to unify the coding experience of a developer. The use of the word developer is a little vague in this context so I’ll take the liberty to shed some light on the context.
Imagine you’re a developer who’s preparing for an upcoming coding competition, you’re not a whiz like some of the big names like tourist but you’re not a pure beginner either. You’re revising some programming concepts, typing your way practicing those concepts in the form of coding problems. You take a sip of your drink ( imagine any drink you like ), as you glance towards your notes and other resources you’ve compiled. You start to feel a little bland so you start listening to some lo-fi music which puts you in a little relaxed and upbeat mood right as it should. After almost an hour of this deep work session, you realize that you have finally accomplished something for the day and you proceed to append your todo-list and get that dopamine boost.
This whole process required you to :
- Go to a lot of websites for collecting resources.
- Taking notes in an application.
- Planning tasks in another application.
- A browser tab for the coding problems.
- A coding editor.
- A music app that also slightly made you want to listen to some lyrical music that might’ve taken away your focus.
But you're a lucky chap, you stumble upon this blog, realize there’s this platform called DomeCode ( https://domecode.com/ ) that does all of this in a single web-based platform ( going native on Windows and macOS in the future as well ) without requiring you to leave it.
On DomeCode, you can practice in six languages ( including Rust, C, C++, Go, Java and Python ), learn, take notes, discuss stuff on the forum, get to know them ( upcoming messaging feature ), join our developer community on Discord ( join using this ) and more.
A little more on the “more” part :
I have recently added two features. One of them is called “Creator”, it’s used for listing your products. It’s essentially a listing of the product that combines all the relevant information and all the other listings of the products and make it shareable with the public.
Demo Listing: https://domecode.com/products/domecode/
Fusion is a real-time disposable editor using which you can start learning front-end technology including HTML, CSS, JS with any YouTube tutorial of your choice in a single tab of a code editor and two browser windows like a memory hog.
You can try it here, https://domecode.com/fusion/.
Tl;dr DomeCode is an open-source platform to help you advance your coding journey with pre-existing resources to learn programming concepts ( in Python as of now ), take notes, plan tasks, practice coding problems in 6 different languages including Python, Go, Java, C++, C, and Rust. You can also discuss interesting stuff on the forum, meet other developers, and most all even get to listen to music conveniently without ever leaving this open-source platform to navigate to paid platforms.
I’m a high school senior from India and the founder of this platform.
How did this all start? ( and what happened during the development process plus a few key takeaways )
A few months back in April, I was working on some coding problems for Google Code Jam Qualification round and Foobar when I had an idea at the back of my head. I wanted to build something that takes the coding experience and blends it with the steps before and during that like learning a programming concept, practicing it, listening to lo-fi music conveniently, jotting down notes, and more in a single platform.
A friend of mine who was a part of my previous venture, ArisVeam, and all my Hackathon teams backed out in March and I felt kind of cold out in the open. We were working on another product ( that I still strongly feel the need to pursue as soon as I can ) and he left in the middle of it after we had made a few contacts with people who might be interested in our product so yeah that was a bummer and it made me feel a bit vulnerable to the factor of time because, at the moment, my top priority was to build the product as soon as we could for numerous reasons, one of them is not having as much time later in the year since we are high school seniors in India and we’ve got a lot of exams towards the end of the year. So with no one on my side, I felt that it was almost an impossible task to achieve on-time ( referring to the product I was building before. It’s an idea for a social media marketing platform ) and so I gave up for the time being which is something I don’t do anymore, I just move ahead with the plan but a few months back I gave up on the plan temporarily that and surprisingly it turned out to be great. My focus wasn’t on building a product anymore, I was just eyeing to get better at coding and maybe build something cool along the way while focusing on school.
Around the same time, I even got the Foobar invitation so that got me hooked for weeks, it felt good just floating around in the comfort zone but also unsatisfying at the same time, it bugs me when I do something and realize that it has no impact on anyone but me and that gives me an itch so I decided to take the task at hand, the idea I had before Google Code Jam and without overthinking about the timeline of this project, I took the first step, created the first commit on DomeCode, a readme outlining what I had in mind. I was thinking of building the platform using Ruby on Rails which I’ve worked with before but then for some reason, I ended up picking Django for I just love the whole organized structure of a Django project and well, it’s Python which I have a decent amount of experience working with.
At the moment, I wasn’t good at Django. I had tried Django before last year but didn’t try anything much in that and realized I had forgotten good chunks of it so I started to build in Django again and started DomeCode finally in June after building a testing sandbox project for it and regaining a bit of my confidence with Django.
The only thing that still concerned me a bit was the fact that I was alone in this journey and I didn’t have anyone to code the platform with who could help manage the codebase when it gets a little out of hand or just simply speed up the process but well, I continued. I hit a bump when my old laptop’s battery died and I was left behind by a few days while waiting for the new laptop but with that out of the way, I started designing the architecture, coming up with ideas and just tackling each problem, one step at a time. During the same time, I also built a few other interesting projects that are on my Github but for the most part, I worked on DomeCode.
4 weeks went by and after putting in hours of work each day, I was starting to see some progress being made. The project felt like it was growing well so that did give me an indication to take it a step further with the effort I was putting in. I had built a few modules by week 4 but I had a lot of other ideas that I wanted to implement. The fact that the remaining modules to work on were much more at the time than the modules completed, I felt like I was going too slow maybe so I picked up the pace in the next few weeks, hit a curb yet again figuring out how to build an online judge without spending money because this just started as a project with literally no budget so I tried a few techniques, one of them being illegal if I were to use it publicly so I had to give in and build a simple yet fast autograder that just reads the solution files and compares them on the go without having to read anything from the disk, one of the major reasons why it was really fast.
I open-sourced it on Github and made it available as an installable Python Package here, https://pypi.org/project/django-judge/. It was well-received by the community I shared it with ( Python Discord and a few other places ) so that made me feel a little better about the platform I was building since this open-source library was just a part of it, a bigger platform with a lot of submodules.
In under the next three weeks, I had finished building the planning tools, additional tools, and growth tools ( Refer to the DomeCode’s homepage to understand better what they mean ) and that’s when I told some of my friends about releasing the product in its alpha stage. A few of them were pretty excited and code casually so I thought that this might be the good testing group for the alpha version, I did not have any expected number of participants in the alpha testing at the moment. So on 5th August, I finally went over the deployment options again and chose Heroku’s Hobby dyno ( recently upgraded it to base production ) for the short-term for I have planned to migrate to Digital Ocean after I exhaust the Heroku credits and to my surprise, just within the first 24 hours of the release of that alpha version, the platform got over 15,000 web traffic hits which was huge for me at the moment.
The platform lacked two or the three features three weeks back and was unpolished but the feedback I got was for the most part positive which further motivated me to make the whole platform better. Now I’m not suggesting that the platform did not get any critical feedback, it did get brutally critical feedback from one of the people I know at UC Davis but I decided to improve the platform and not feel personally obligated to either the positive or the negative feedback and that is an important skill to have, you should never take the feedback personally, no matter how good or bad it is and it should not manipulate you and the same applies for the metrics, they are good for a while but to let them control your micro-decisions is unproductive in the grand scheme of events.
It’s 28th of August at the time of the writing and I feel delightful given the fact that I have another friend of mine, Arhaan Ahmad ( who’s good at coding among other things ) working with me on this. And it pleases me that developers around the world are fascinated by this platform and find it interesting to contribute at some point in time. This is something that can get you through the idea validation phase and I can confidently abide by the fact that the idea behind DomeCode can be considered validated from the feedback I’ve been getting.
There is, however, one thing that needs to be fixed about DomeCode and it’s the outreach campaign, I have started to come up with some mailing campaign ideas and I’ll be starting the campaign in a few days from now. It’s extremely important to have a good retention rate and for a platform that’s new and isn’t big on advertising, it’s a little hard to have the same users coming back to the product and it’s one of the biggest reasons behind the mail campaigns, to have the users coming back to us. It’s something anyone just starting should keep in mind.
A few key takeaways from my journey for new founders of products especially along the lines of software ( web or otherwise ) should be :
- Use the appropriate tools for the task, don’t use a tool just because it’s in the trend.
- Focus on SEO for your platform, it’s really important to have your platform as the first result when users search for specific terms on the search engines.
- Increase the user retention rate, you want users to keep coming back to you and use your product for as long as possible in a single session.
- Focus on outreach campaigns for your product.
- Put your experience building that product out there and try to make it interesting, it won’t please everybody but it would please a certain audience and they would want to use your product. Something similar to this, the blog post that you’re reading.
- Iterate on user feedback. Listen to even the worst of feedback, prioritize it at some level, whichever you think would be appropriate and solve it no matter what. You can’t satisfy everyone but acting on the user feedback is only going to help your product after all. Don’t pay attention to the individual, pay attention to the issue.
These would be the most important takeaways from this blog post probably.
If you’re a developer willing to work on this platform, head on to https://github.com/the-domecode/ and start working on the issues right away if I like the way you code and your problem-solving abilities, you’ll be invited in the internal development team so there’s your chance to work in a new startup.
Thanks for reading this, hope you enjoyed it! Will do follow-up blogs reporting the progress of the platform if anyone shows interest in that sort of thing.