After lots of testing and bug fixing, Curator 2 is ready. This upgrade comes with lots of new features including user listing, custom reputation, a better markup parser, bot resting day, post reviewer, curator listing, sponsor listing, dynamic homepage and more.
Important: if you have been running any version of Curator until this publication, please update it to fix all bugs in the previous versions as well as to explore the numerous new features of this version.
Code repo: https://github.com/peerquery/curator
New features and additions
In my former post I examined in detail how various stats work on Curator. I will again explain the author reputation in brief, see the previous post for more insights.
For each approved curation, the voting rate is added to a
score field for the user. With every successive approval the voting rate is accumulated and this value is used to determine the user score.
In the simplest example, if a user's first 7 posts are approved for 20% vote each, then their total score would be
7 x 20(%) = 140.
The current reputation score scale is:
- score < 50 = 0 star
- score > 50 = 1 stars
- score > 150 = 2 stars
- score > 300 = 3 stars
- score > 500 = 4 stars
- score > 1000 = 5 stars
The user in the example above with a score of 140 would therefore have a reputation of 1 star, at a score of 151 they would have 2 stars.
Secure API access
In this update, the APIs used for admins functions, particularly those of POST and GET are secured for only authorized access only.
Only logged in users whose account is that of a team member may access the secure admin APIs using GET or POST. This is to protect against unauthorized access of admin APIs by non-team members.
API calls to admin APIs from sources which do not have signed and valid team member JWT httpOnly cookies whose validity period is active would be declined.
Segregation of capability
- Front end segregation: curator, moderators and admins see different buttons based on their roles.
- Backend segregation: in the backend, every admin API call is matched against the permissions of the role of the issuer to see if the originator's role has enough authority to do issues such commands. Should a curator account send commands which only moderator accounts have permission to issue, the server would reject it.
Should a user bypass the frontend and send commands beyond the permission of their account, the backend would reject it.
Trail page shows:
- approved, voted, lost, rejected posts
- stats for the month: approved, curated, lost, rejected
- each post's meta data include: author, curator, curation rate and a button to view it
The community page shows all users of a Curator service. "users" refer to only authors of posts which have been curated(approved or rejected). If all posts by an author have been ignored or lost(not seen by any curator at all), then that author will not be among the "users" - even though their posts will be in the lost section.
What the community page offers:
- user exploration and grouping by newest or top(based on the score/points used to calculate reputation)
- community stats: users count, blacklist count, curator count and sponsor count
- each user card shows account, profile picture, creation time, ratings, total approved and total rejected
Coming soon: dedicated comprehensive blacklist page.
User trail page
On this page you can explore:
- the user's reputation(in stars)
- see the user's last 20 approved, voted, rejected and rejected posts
- each posts show the curator(with link to the curator's profile) as well as the curation rate
- see user's stats for the month: approved, voted, rejected, ...
The page shows the profile picture of the user, the user's account and offer links to the user's profile on Steem apps including: Steemit, Busy, DTube, DLive, Utopian, Steepshot, DSound, Steempeak, Musing, SteemHunt, and Peer Query.
Coming soon: see user's earning in $ for the month.
The curator's page offers:
- curator exploration by newest, top(most curations) and inactive curators
- Curation stats for the month: approved, voted, lost and rejected
- each curator's card shows: account, profile picture, creation date, reputation(based on payment votes) and total curations
Curator trail page
You can also view a page for every curator. The curator's page shows:
- a curator's curation trail: approved, voted and rejected posts
- curator's stats: approved, voted, lost and rejected stats
- curator's profile on other Steem apps: Steemit, Busy, DTube, Dlive, Utopian, Steemshot, DSound, Steempeak, Musing, SteemHunt and Peer Query
Coming soon: see a curator's earnings for the month.
Minimalist team's account page
Team members can see can see their account info on the account page. This page can be accessed from the top user menu and shows information about the user's Curator details as well as Steem details.
Curator's new sponsors page is a minor twist of the homepage. It features three sections:
- dynamic sponsor showcase: this section loaded from the DB so every time you add or remove user it will be reflected here!
- why to sponsor our work: a section which details the benefits of sponsoring the curation service
- achievements: shows how much a curation service has contributed in terms of authors supported, total curations, amount awarded and estimated views delivered to posts
Challenge: currently there are four listed vanity sponsors: blockrush, steemit network, peer query and steempedia. Try to remove the existing ones or try adding a new one and then reload the homepage or sponsors page to see the effected change! Remember you need to use either the owner or your own admin account to manage sponsor listings.
You can now add and remove sponsors in the office just like you can do with team members. However with sponsors there is not need for any second confirmation so its added immediately.
Only admin or owner accounts can add or remove sponsors. Newly added sponsors are added in real time and the changes made are reflected immediately across the site.
This means if you add a sponsor they will immediately appear among the sponsors listed in the homepage and the sponsors page.
Wallet page for team
Wallet page lists all payments received by a team member, as well as offer insights into their earnings for the week.
Post review page
When reviewing curated posts, clicking the title will open a review page for you to view the posts. The post review page shows:
- authors' overview: total posts, approved, rejected and user rating
- curation details: status, curation time, curator's name, vote status, vote percent and vote worth in $
- curator's remarks about the post
- external viewing links: buttons to view post on Steemit, Busy, SteemPeak and Peer Query
Improvements to existing features
Dynamic landing page
our contributions so far sections of the home are now dynamic. This mean that they load real live information, not info static info in the page!
The team has to do nothing. The more curation a team does, the information is automatically updated. When you curate with the demo, refresh the homepage often to see the changes to the
est. views stats.
Resting day for bot
You can now declare a day when the Curator bot will not vote. The default is set to
sunday, you can change it to which ever day you want at
BOT_HOLIDAY in the
The bot resting day is to allow the bot to recharge its voting power, and also to serve as a holiday for the curation team as it is expected that there would be no curating activity on the day the bot is resting.
Single global files
We now have single
.js files from the
/public folder which are loaded to every single page. This make it easy to include sidewide code and also streamlines styling.
This is the sidewide notification box. Its static
notifications file in the
/views/partial so only the owner setup it up during installation.
Coming soon: make it dynamic so where admins can set the content from the coming settings page.
Better content renderer
- Images will now fit within the Curation view, they will not overflow to out-of-proportional sizes.
#hastagslink be links
@accountswill be linked into <a> tags
- Naked images will be converted to <img> tags
- mixed HTML and Markdown will render well
- HTML is sanitized with DOM Purify
- Youtube links will be converted into iframe so you can play right in page
- Styling has added for long links and text to fit perfectly without overflow
- Custom styling has been added for most HTML elements such as <table>, <blockquote>, <code> and <pre>
These improvement to the post viewer for curators mean they will be able to see your post in the full form you intended it to be both while curating and while re-curation(using the modal view).
While not perfect, its a great improvement and should be able to properly process and display most forms of markup.
API re-design to modular form
The APIs are now put in a folder in
/src/api, the folder contain several API files, 13 in total. The reason is to allow for easier categorization and management.
As one file we get a very long file which is over 20k in size, making it difficult to find specific code related to a special function. Now each one of the 13 files addresses on modular function and contains all APIs related to that function.
The 14th file is a
_index file which is used to import and activate all the other 13 files. This way we only require the
_index file and it takes care of importing and activating all the 13 others.
The background is given a new "skin" color instead of white.
Improved DB stored procedures
Lots of the stored procedures have been re-written to fix bugs, improve efficiency and reduction in bloat. With the new improvements, you can now:
- add, remove and re-add the same team member multiple times with the previous or a new role
- add, remove and re-add the same sponsor multiple times with the previous or new information
Lots of bloat are also cleaned. Remember that deleted team members and sponsors are only "de-activated" not technically removed, for future accountability purposes.
Malfunctions due to bugs stored produces of the former versions are all gone.
What's coming next
- Blacklist page for user listing
- Bot page with bot details and stats
- Curators and team payment
- Socket.io chat for team
- Settings page for project
- Dynamic sitewide notifications
- Team page to showcase team(admins, moderators and curator)
Cooking in development:
- blacklist import and export
- public api for thirdparty developments
- npm package to access multiple curator apis
- portal to serve as common interface for all active curators
- search and post status viewer
- page templates for footer links
After the final update, the Curator project will be migrated to Steem Institute's @curator.center for further development, support and promotion.
Installation and demo
See the Github ReadMe for more information. Bear in mind that Curator is still a work in progress; while it works perfectly, this updates includes some breaking changes and will not run on the DB of a former installation. You will need to either empty the DB schema previous installations or install this version on a new DB.
If you are developer with Git experience then you can install this version and pull future updates. However if you are not much into Git then perhaps run this version only for testing while awaiting for the next version for production.