The Daily Adventures of a SteemPeak Developer #1
As most of you have surely noticed I've not posted anything new on my blog in a while :D
This is not because I'm not active on Steem anymore, it's actually quite the opposite. I'm spending a good amount of my free time adding new features and improving @steempeak and @peakmonsters.
But this is not a valid reason to stop writing and sharing posts :) ...so starting today I'm going to shift my personal blog a little bit and not focusing exclusively on photography. I can still share pictures from time to time, but from now on I'm going to focus on a series of posts to let you know what I'm working on for steempeak.com and peakmonsters.com.
Note: if you don't know what I'm talking about and have not checked @steempeak (or @peakmonsters) yet this is the right time to take a break and check out the corresponding blog to understand what I'm talking about :P
So let's start the Daily Adventures of a SteemPeak Developer :)
In this first post I'm not going into technical details, instead I'll try to give an overview of the tools I use to work on these projects (with @r00sj3, @jarvie and @dmytrokorol) and how we run them.
How it's built?
SteemPeak is a Java application (specifically a Spring Boot application) with a custom frontend built in VueJS. The server code is a pretty standard app with some custom code to handle the frontend integration (Spring and Vue don't play well out of the box).
Some of you may wonder why I selected Java as the backend language for this application. The answer is quite easy (and probably a bit boring): This is what I use in my daily work and Java is still the language I'm most comfortable with for server side programming. Considering that I'm the only developer this is a solid reason to select Java over other languages :D
The frontend is built with VueJS because I find it easier than Angular and React. I use Angular in my daily work, but when I started SteemPeak I decided to switch to VueJS to learn something new and it's now my default choice for personal projects.
PeakMonsters is a completely different story. This application use the Steem API way more than SteemPeak so the backend is written in Node.js and I use dsteem to interact with the Steem blockchain. The frontend is still written in VueJS with a look'n'feel similar to the one used for SteemPeak.
What tools do we use?
As with every project there is a repository where we store the applications code and some other tools to handle tickets/issues and the build process:
- Repository: the source code is on GitLab (and it's still closed source). I'm the only one using it (@anarcist69 may join me from time to time), but the others can check my commits to view what I'm working on :D
- Ticket/Issue tracker: we use GitLab for this too, works quite well and it's integrated with the main repository
- Continuos Integration: always on GitLab (one of the reason I prefer GitLab to GitHub, they provide way more tools on the free plan)
- Wiki, Notes and Shared Docs: HackMD, Google Docs and the GitLab
- Chat and discussion: Discord, Discord and Discord ...and the best part is that you can join us in those talks :D
How do we run it?
We have a bunch of servers (dynos) on Heroku that we use for our staging and production servers. Heroku can be expensive when more resources are required, but we've been able to keep the cost relatively low and the flexibility provided is really great (I can literally promote and rollback new builds using a smartphone). Also we use small servers and some of them are included in the free tier so we don't have to pay for all of them.
We host the database on Heroku too. Of course this is a small database used just for user preferences, drafts and bookmarks. No way we can run an Hivemind node on Heroku with their current pricing :D
Not going to write more details on Hivemind yet, this is a good topic for a future post that I can use to describe what we are doing with it and the features we plan to add in the future.
What's next?
Now that I've described the projects a little bit I'll move on and starting with the next post I'm going to focus on the new features we add, the things I fix or how I try to improve some ugly parts that need a bit more refinements :D
Sergio
That's an interesting insight, I have always been wondering about the tech behind Steempeak! Heroku is amazing but does get quite expensive very quickly, this is why I have now moved our TravelFeed deployment to our own server. Docker Hub auto-builds from different branches and automatic pulling of container updates with a tool like watchtower brings it quite close to the Heroku experience at a much smaller cost since we run the server anyway for Hivemind
Make sense, but I prefer to do that move when I see that the current setup cannot handle the load anymore. Also I don't want to rely on a dedicated server without a backup for when I'm off the grid :)
But hopefully DigitalOcean will provide a viable Heroku alternative soon enough and I can switch to one of their droplet.
Good point; In the medium-term we will also move to a more distributed infrastructure with a backup server, but since our backend doesn't use the Steem API but accesses our customized Hivemind, nothing works anyway if our server is down and hosting a second Hivemind means paying for another dedicated server with large SSD storage
i have no idea what are you talking about, mostly 😀 but keep up the good work.
Posted using Partiko Android
First time I hear about the monsters so I will check that out.
Will there we a (light) app for only mobile users in future (also able to load if you suffer from a slow connection?)
💕
Posted using Partiko Android
Mobile app maybe, we are evaluating our options. Meanwhile there is an option in the setting page to reduce the quality of the images used on mobile device if you want to save bandwidth ;)
I will have a look at that, it might help me. Thanks a lot.
👍
Posted using Partiko Android
Very fun recap. I look forward to your posts
I'll try my best to post 2 or 3 of them every week ;)