PeakD Tech Tales: What We Do

in About PeakD5 months ago

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.

A new serie needs a new cover right?

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 😊

Projects Overview

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.

PeakD projects Overview

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

PeakD.com

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.

image.png

But this is "tech" related post, so let's check a couple of core aspects of PeakD:

  • Most of the code is on the frontend and coded with Javascript and Vue.js
  • 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

PeakLock is a login method we created for a few reasons:

  1. Provide a login method that does not depend on external services or providers
  2. Allow mobile users to easily perform transactions that requires the "posting" key
  3. 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.

PeakD Hivemind Plugin

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 🙏

OwnerNode
@arcangehive-api.arcange.eu
@deathwingapi.deathwing.me
@emrebeylerhived.emre.sh

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 :)

PeakD Status Page

PeakMonsters and Common tools

PeakMonsters.com

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.

PeakMonsters

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.

API Nodes Status

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).

Analytics

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.

Hive witness

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.

What's next

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 !!


That's all for now, see you next time 👋

If you like what we do and you would like to get in touch feel free to reach out in our Discord server or if you are a developer have a look at this post.

Sort:  

i love these posts where you also get to know something more technical. currently it is still quite hard to find information on how hive works and how to develop for it. so i am looking forward to the next posts. 😊

Thanks for giving us one of the best dapps ever, (and for forsaking that other place).

It is really quite amazing that you all do so much with such a small team. Thanks for all the hard work and dedication that make our experience on Hive so much better. How did you imbed a slideshow...that is cool!

That is great that you decided to take the initiative to get back on the horse after trying in the past, but maybe the new year will allow for you to do this better this time around. I personally use peakd and peakmonsters quite frequently and you guys have a vast array of tools not even utilized to it's amazing capabilities.

One of which is your chat function on hive. I am shocked more people don't utilize this chat function, I for one have plans to implement it in for a more proactive way to engage with community and to do giveaways. Maybe if you had a post incentivizing people to comment and with thoughtful/engaging questions and for the ones that you feel are most asked you can make a FAQ post one for peakd and one for peakmonsters so there can be this go to post for more commonly answered questions. The ones with bigger feedback or more interest you can just make a separate post for and tag it back to your original FAQ at a later date.

I think with how the blockchain is and if you do it right it can be rather fruitful in increasing understanding and userbase. Anyways good luck on your initiative this year and thanks for all the apps and tools you guys help provide us.

Most of those things are on our TO-DO list for this year :)

Yeah I'm sure with how crazy and busy your guys schedule is. That is why I suggested a QA type of post first as then you maybe able to figure out which information could possibly have more precedence or people would be interested in.

It can get overwhelming at times with our personal workload and working on side projects for information or to add value. Sometimes we are tunnel visioned into our own tasks that we may overlook a common question or information (Not saying you guys are just think it may help you prioritize what subjects to go about first on your To-do list)

An interesting post could also be your To-do list in regards to peakd/peakmonsters to see people's feedbacks and thoughts.

Thanks for providing such a great application. Although I'm an English speaker I wonder if peakd will provide other languages. There are people in the community who could help with translation.

Yes, but we want to iron out the UI first so when we start translating we don't have to do it again after a few months.

Thank you very much for this in detail overview. If we do have any feature requests, how shall we communicate them to you?

You can reach out in our Discord channel (link at the end of the post) or as comments on posts by @peakd

Thanks for the hard work and appreciate the team's openness in engaging the community and listening to feedback! 👍

good job, super excited for the things to come :)

PeakD is my favorite Hive frontend. I enjoy using this platform. How did you add the slideshow in the article? Please someone teach me how to do that :)

Actually it's just a GIF 😅

How do I create a GIF like that? I would like to use that in my blog posts. That is super effective.

Unfortunately I'm on Linux so the tool I use will probably not work for you. But you can do a quick search on Google for windows .gif recording and check some of the suggested tools ;)

PeakD has a lot of nice features which would be considered Pay2Get options on other Websites. I think you're doing a terrific job here. The mobile version is working very smoothly as well, very good job.

You guys are like gears behind the machinery making sure everything runs smoothly 24/7, it's amazing to think that you still have time to engage with your users and that's to be applauded

I want to thank you and the team for actually listening to the users wants and desire. That has helped a lot. I know not all of our wants can be met, but the fact you try is great.