Hello Hive Community Members! ๐๐
Letโs dive into the latest happenings from the CheckinWithXyz project and how we've transformed the onboarding experience like a boss! ๐
๐ Earlier Implementation: Snail Speed Mode
Before our API glow-up:
- Onboarding approvals were comment-based ๐จ๏ธ
- Onboarders dropped comments on intro posts
- A cronjob on the server gobbled them later ๐ก
- Result? Long wait time โฑ๏ธ... like 2-3 minutes!
- Not very Hive-like when blocks are born every 3 seconds โณ
Thatโs like delivering pizza with pigeons when drones are available! ๐
๐ New Flow: API-Driven Approvals for the Win!
To fix the delays, we moved to API-based approvals ๐ก
- Whitelisted onboarders can now approve directly via the app
- It fires off approval comment ๐ฌ + instant reward ๐ฐ
- We now store approval details too (fancy, huh?) ๐ง
๐งโ๐ป Shoutout to @starkerz, @meno, @ecoinstant, @eddiespino & all the onboarders โ they loved the upgrade! ๐
๐ Onboarding Reports: Data is the New Oil!
Now that weโre storing data, reports are possible ๐
- Changes took effect from July 2025
- But wait! We did onboardings before that too ๐ฎ
- For example, at TalentLand, many Hive souls joined ๐ฑ
- Sent reports to @starkerz, but they said, โHey, some juicy details are missing!" ๐ต๏ธ
๐ค Let's Write a Script & Hunt Down That Data!
Buckle up, itโs time for detective coding with Node.js! ๐ต๏ธโโ๏ธ๐ป
โ Step 1: Get Transfers
const dhive = require("@hiveio/dhive");
async function getTransfers(client, author, limit, start) {
const op = dhive.utils.operationOrders;
const operationsBitmask = dhive.utils.makeBitMaskFilter([op.transfer]);
const records = await client.database.getAccountHistory(
author,
start,
limit,
operationsBitmask
);
return records;
}
exports.getTransfers = getTransfers;
This gets us the juicy transfer records from Hive ๐ฏ
โ Step 2: Fetch Transfers for threespeakselfie
async function updateCheckinRecords() {
let transfers = await getTransfers(
dhiveClient,
"threespeakselfie",
1000,
-1
);
Boom! ๐ฅ Pulling the latest 1000 transactions ๐ฏ
โ Step 3: Filter the Right Kind of Transfers
Look for transfers that:
- Are outgoing ๐ธ
- Have memos ๐งพ
- Contain blog links ๐
let onboardings = transfers
.filter((r) => {
return (
r.op.from === "threespeakselfie" &&
r.op.memo.length > 0 &&
r.op.memo.includes("Your blog (https://hive.blog/@")
);
})
โ Step 4: Shape the Data to Our Needs
Transform raw memos into onboarding records ๐ฆ
.map((r) => {
const memo = r.op.memo;
const regex = /Your blog $$https:\/\/hive\.blog\/@(.+)\/(.+)$$/;
const match = memo.match(regex);
return {
username: match,
memo: r.op.memo,
dateOfApproval: r.timestamp,
permlink: match,
status: "approved",
}
})
Now we have:
- โ Username
- โ Memo text
- โ Approval timestamp
- โ Permlink
Smells like reporting gold ๐ชโจ
โ Step 5: Find Out Who Did the Onboarding
Since transfer doesnโt tell us who approved, we gotta extract it from the postโs title ๐ฏ
for (const item of onboardings) {
try {
const postDetails = await dhiveClient.database.call('get_content', [item.username, item.permlink]);
const title = postDetails.title || "No Title";
const regex = "by @(.+)";
const match = title.match(regex);
const onboarder = match ? match : "unknown";
Boom! ๐งโโ๏ธ We got their names from the shadows (aka post titles).
๐ฏ Wrapping Up
Thanks to this script, we were able to recover all missing onboarding data ๐ ๏ธ
Itโs now updated in our backend database, making reporting & tracking future-proof! โ
๐
Next up: Work on the front-end! ๐จ๐ฅ๏ธ
๐ Thank You!
That's it for now, folks! Thanks for scrolling all the way down ๐
๐ More power to the Hive Blockchain ๐
๐ช More power to all our community members
๐ Until next time, Happy Coding! ๐ปโจ
๐ Final Note
- I asked Perplexity to help optimize this post to make it more readable and viewer-friendly.
- Here is the link where you can find both original content & improvements made by AI
- https://www.perplexity.ai/search/4125659a-303b-46d9-8565-9d91cb298b1a
๐ My Contributions to โฆ๏ธ Hive Ecosystem
Contribution | To | Hive | Ecosystem |
---|---|---|---|
Hive Witness Node | Hive API Node (in progress) | 3Speak Video Encoder Node Operator (highest number of nodes) | 3Speak Mobile App Developer |
3Speak Podcast App Developer | 3Speak Shorts App Developer | 3Speak Support & Maintenance Team | Distriator Developer |
CheckinWithXYZ | Hive Inbox | HiFind | Hive Donate App |
Contributed to HiveAuth Mobile App | Ecency โ 3Speak Integration | Ecency โ InLeo Integration | Ecency โ Actifit Integration |
Hive Stats App | Vote for Witness App | HiveFlutterKit | New 3Speak App |
๐ Support Back
โค๏ธ Appreciate my work? Consider supporting @threespeak & @sagarkothari88! โค๏ธ
Vote | For | Witness |
---|---|---|
sagarkothari88 | @sagarkothari88 | |
threespeak | @threespeak |