I've not posted in a while, but happy to do it now so I can wish everyone a Happy New Year 🎉.
Recently @peakd published a post looking for developers that are willing to join the PeakD Team. So I decided to start a new series and share a little bit of what we do and how we work on our projects and products. Hopefully this will be interesting for both developers and users interested in how things work behind the scenes.
Note: Some of you maybe remember that I've already tried something similar in the past, but failed to be consistent on the long period. Hopefully I'll do better this time around, but no promises 😊
Before we dig deeper into the details in the upcoming posts it's probably worth to do a quick recap of the projects we work on and the things we build. The following diagram should give an easy to understand overview of PeakD, PeakMonsters and the other tools we create, manage or integrate.
I know the diagram is not a 100% perfect explanation of Hive, Hive Engine and how the whole Hive ecosystem interact, but it's the best I've been able to do without adding too many boxes, arrows and generally making it way to complicated for the purpose of this post.
The dark blocks in the above diagram are the projects we built and products we use to provide the best possible experience on peakd.com, peakmonsters.com and to a bunch of other cools products we plan to build in the future (at least that's the idea 😄).
PeakD and Related Tools
Of course the main project in this section is peakd.com itself, one of the most popular frontends for the Hive blockchain. We put a lot of efforts to make it an easy to use and comprehensive product and a bunch of the upcoming posts will be focused on how we brainstorm, design, develop and release upgrades for PeakD.
But this is "tech" related post, so let's check a couple of core aspects of PeakD:
- Backend is there of course but the codebase is pretty small and straightforward
- Similarly the database (Postgres) is only used for a couple of off-chain features (drafts, templates, bookmarks, ...) and it's not large or complex at all.
The backend is actually so small that can be completely removed and this is exactly what we do for our deployment on IPFS: https://ipfs.peakd.com (in this case some features will not be available).
Also if some features are missing having the option to access PeakD on IPFS is a big deal because allows everyone to still access the app also if the main website is not available for whatever reason. You can read more about IPFS here: https://ipfs.io.
PeakLock is a login method we created for a few reasons:
- Provide a login method that does not depend on external services or providers
- Allow mobile users to easily perform transactions that requires the "posting" key
- Have a way to directly interact with API nodes without intermediary tools or services
Currently PeakLock is available on PeakD.com and maybe a few other tools created by other developers as I shared the code with some of them in the past. But not available on PeakMonsters because the interactions with Splinterlands frequently require the use of the "active" key, and PeakLock is not ideal for that.
PeakD Hivemind Plugin
Some of the features available on PeakD cannot be provided using the standard API available on Hive API nodes. So we created an additional standalone plugin that can be installed by node operators to provide those additional endpoints.
Some of the features provided by the plugin are: Badges, Custom Feeds, Suggestion for new accounts to follow and so on. Everything is built upon the standard Hivemind database and the database structures created by the @blocktrades team to keep Hivemind quick and responsive.
The plugin is open source (https://github.com/peak-projects/peakd-hivemind-plugin) and only requires read permission on Hivemind. Currently it is installed by the following operators/nodes, kudos to all of them for their help and support 🙏
PeakD Status Page
This simple status page allow users to quickly and easily check the status of PeakD.com related services and core Hive infrastructure. It's nothing too fancy and the code probably needs a rework, but so far it worked well for it's limited purpose :)
PeakMonsters and Common tools
PeakMonsters.com is the first and most complete third party marketplace for Splinterlands.com. Honestly there is too much to say about PeakMonsters to cover everything in this introduction, but i'll do my best to share more details in a later post. Meanwhile this is a short slideshow with some core features used by thousands of users every day.
PeakD Node Beacon
Beacon (https://beacon.peakd.com/) is a tool that monitor the status of Hive API nodes and the correctness of data provided by those nodes on different API requests. The project is open source and available here: https://github.com/peak-projects/peakd-node-beacon.
Usually there are plenty of nodes that perform really well, but specially during Hard Forks when multiple nodes are upgrading to the latest version, it's very useful to have Beacon around to automatically switch on/off the nodes that are not working as expected.
Beacon is fully integrated into PeakD and by default the system will automatically switch the API node you are using if needed. This is planned for PeakMonsters too, but not yet integrated (keep in mind that on PeakMonsters there are way more interactions with Splinterlands itself than with Hive so this is less critical).
The analytics are a core part of our future plans and will be integrated even more into PeakD and PeakMonsters in the future. Right now we still use 2 different systems:
But the plan is to fully move to Plausible in the near future. This mostly impact PeakD as PeakMonsters is already using Plausible for all analytic stuffs.
Both platform are self hosted by our team on a couple of dedicated servers. This worked quite well so far, but I'm pretty sure there will be some work to do as soon as we start onboarding tons more users.
Our team also handle the @steempeak Hive witness. I manage the main and backup witness nodes, but also @jarvie is in charge of keeping an eye on it and is able to perform a couple of quick action if needed to adjust the configuration and parameters.
We have not re-branded the witness to
@peakd yet, but we may work on that during this year.
If you made it this far you should now have a good high level understanding of the PeakD ecosystem, what we do and what to expect from the following posts. Plan is to share some more insights on our "way of working" next ...stay tuned !!