SteemQA (beta release) - 3rd Progress Report

in #utopian-io8 years ago (edited)

Repository

https://github.com/irelandscape/steemqa
Most development is currently taking place on the develop branch.

Introduction

s
This post is a new status update on the progress of SteemQA, a generic Questions and Answers application for the Steem blockchain.

Post Body

SteemQA is a Q&A application similar to Quora but without obtrusive ads and banners. SteemQA makes use of the Steem blockchain to store content and reward contributors.

Searching for a new project name

Last week @didic raised the interesting point that the "QA" in SteemQA brings to mind the common Quality and Assurance acronym rather than then intended "Questions and Answers".

While I didn't think about this at the start of the project I now tend to agree with this concern and for this reason I have spent some time trying to think about a better name.

After a fair amount of research on the web and using Whois.net it became clear that trying to come up with an unused name based on a word in the English dictionary was an impossible task.

I don't have a great imagination when it comes to naming new things but after more thinking I came up with the following name:
Quearn.

The name is a composite of question, earn and learn, which I think is well suited to this application.

I went as far as putting quickly the following logo together, though I am by no mean settled on it.
quearn_logo.png

Please let me know what you think about the new name in your comments below.
I'll wait a while longer before renaming the project as someone might come with a better idea.

Let's now review the development work completed since the previous progress update.

Home Page

The home page is now more featured and displays three question swipers:

  • Latest questions,
  • Top rated questions, and
  • Questions with most wanted anwers.

The page now feels more complete.

Screenshot_2018-09-20_10-09-25.png

I am still unsure as to how much informational content about the site should be displayed on the home page.
For example, it may be useful to show top news somewhere on this startup page.
In any case, I want to keep this page as tidy as possible however so finding a good balance between informational content and user contributions is important.

Bookmarks

Users can now bookmark their favorite questions!

A bookmark button was added to this effect in the question card toolbar and on the question page.
Screenshot_2018-09-20_10-11-01.png

Questions that are currently bookmarked have their bookmark button highlighted. Once highlighted, clicking this button removes the question from the user bookmarks.
Screenshot_2018-09-20_10-16-21.png

Users can access all their bookmarked questions by selecting the "My bookmarks" link in the side drawer panel.
Screenshot_2018-09-20_10-17-14.png
This brings the user to a new page listing a summary of all bookmarks. Each bookmark is shown with its title, main image, text fragment and toolbar.
The user can then access the question page associated with a given bookmark by clicking on its title or main image.
Screenshot_2018-09-20_10-17-52.png

Infinite card swiper

The question card swiper has been improved to dynamically load, using AJAX requests, new questions as the user reaches the end of the swiper.

For this project I use the vue-awesome-swiper component which is packed with features.
The authors of the component have provided significant documentation and examples to make integration of the swiper as easy as possible within a VueJS application.

On the server side, the Config object was updated to make configurable the number of initial questions loaded within a card swiper, as well as the number of additional questions to load upon reaching the last question card.
Screenshot_2018-09-20_10-19-05.png

Page header now fixed while scrolling

I've updated the toolbar at the top of several pages so that it would remain fixed while scrolling.
This toolbar displays useful information and provides context to these pages (such as the question title) and I think it helps giving scope to the reader while scrolling.
Screenshot_2018-09-20_10-20-05.png

To achieve this, I have encapsulated the Quasar QToolbar element within a QLayoutHeader as shown in the code fragment below:

  <q-page>
    <q-layout-header>
      <q-toolbar
        color="primary"
      >
        <q-toolbar-title v-if="blog">
          {{blog.title}}
            <div slot="subtitle">by {{ blog.author }}
                ...
            </div>
        </q-toolbar-title>
        <q-btn size="lg" to="/" >
          <q-icon name="close" outlined>
            <q-tooltip>Back</q-tooltip>
          </q-icon>
        </q-btn>
      </q-toolbar>
    </q-layout-header>
    ...
  </q-page>
Cross-scripting attack mitigation

I have now centralized the conversion from Markdown to HTML into a central Vue component and sanitized the output using the xss NodeJS component.

The markdown processing code is as follows:

export function md2html (str, xss) {                                                                                                                  
  let Remarkable = require('remarkable')
  let md = new Remarkable('full', {
    html: true,
    linkify: true
  })
  return xss.process(md.render(str))
}

Notice that, at this stage, the conversion is still blunt and not configurable.

Other progress
  • Various rendering issues were fixed.
  • REST API was updated to support the above features.
  • Some vue files have been moved to new subfolders. I was starting to have many files in the components folder and I felt that moving some files into directories such as tabs and utils would help finding out code more easily.
  • Username is now displayed without the odd-looking background in the page header.
  • Comments are now working for answers. Last week comments were only working for questions.
Conclusions for this week

I feel that the last few days have brought major advancements to the project.

I can now start seeing the milestone in the distance where I will be able to bring to life the first beta release of this new Steem application.

This week I will tackle one of the chunkiest remaining feature - searching.

I will attempt to install the haystack Django module on the backend and integrate it with the Django REST framework and the rest of the server code.

I will then need to start working on the "Search" page in the client user interface.

I strongly believe that proper searching capability is a key feature so it's worth spending a fair amount of time on getting this right.
I would be happy if I can finish this feature by this time next week but that is not guaranteed given the size of the task and my available time.

Discord channel

SteemQA (Quearn?) has a Discord channel and everybody interested in the project is welcome to join our new community!

Invite: https://discord.gg/tm3Muk7

Looking for developers!

I am looking for enthusiastic coders to join the development effort!

If you would like to help and be part of something big in the Steem blockchain, please join the Discord channel and leave a message in the chat room or DM @irelandscape!

The following technologies are used throughout the project.
Client side:

Server side:

Main remaining tasks for first Beta release

The following list is a summary of the tasks that remain before release of the 0.1 version.

  • Update home page to only show questions related to the user favorite topics
  • Hide widgets to non-logged in users that are only available to authenticated users.
  • Regular polling of the backend API for new question updates and updating accordingly the home page.
  • Past contributions pages. Allow users to browse his past comment/replies contributions.
  • My Questions / My Answers pages pagination support.
  • Allow users to "delete" contributions.
  • Allow moderators to flag contributions. Flagged contributions won't be shown anymore on the UI.
  • Integrate Steem-UA ratings.
  • Searching capability
  • Show user current voting power in upvote dialog.
  • About and Help and Guidelines pages
  • Basic Steem wallet to see and claiming pending rewards.
  • Automatically append questions and answers with a short message containing a link to the SteemQA application. This message is not shown when viewed through the SteemQA application.
  • Updates in server-side streamer script
  • StemQA logo
  • Production distribution preparation

Resources

Series Backlinks

Sort:  

This post falls somewhere between our Blog and Development categories. I'm not going to say we don't care about code in the Blog category, but it's not something that's a value add for us. This could have really been two separate posts, one in Blog and one in Development. But it fell into my category, and is a very good contribution, so I'm going to moderate it.

I am, of course, thrilled that my point about the name was well taken, and will lead to a better name. I'm not branding expert, but I do know a name is important. A person who is an expert is Utopian's CMO and the Visibility category manager, my old friend and current kinda-sorta boss @techslut. And she wrote a post about naming projects that may be of help and use to you.

Apart from a few minor issues of proofreading and formatting, this post was well crafted. And the part of it that is relevant to the Blog category was interesting and worthwhile. It told the story of what's going on with the project, which is what we like to see.

Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.


Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]

Thank you for your review, @didic!

So far this week you've reviewed 2 contributions. Keep up the good work!

Thanks @didic,
I will try to keep away from future blog posts and keep those for development posts when appropriate.

Hello! Your post has been resteemed and upvoted by @ilovecoding because we love coding! Keep up good work! Consider upvoting this comment to support the @ilovecoding and increase your future rewards! ^_^ Steem On!

Reply !stop to disable the comment. Thanks!

Congratulations @irelandscape! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

Award for the number of posts published

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Support SteemitBoard's project! Vote for its witness and get one more award!

Hi @irelandscape!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 2.549 which ranks you at #15185 across all Steem accounts.
Your rank has improved 198 places in the last three days (old rank 15383).

In our last Algorithmic Curation Round, consisting of 516 contributions, your post is ranked at #33.

Evaluation of your UA score:
  • Only a few people are following you, try to convince more people with good work.
  • The readers like your work!
  • Try to improve on your user engagement! The more interesting interaction in the comments of your post, the better!

Feel free to join our @steem-ua Discord server

Congratulations @irelandscape! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

Award for the number of comments

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @irelandscape! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

Award for the number of comments received

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Support SteemitBoard's project! Vote for its witness and get one more award!

Hello @irelandscape, we do apologize for the inconvenience of your contribution not receiving an Utopian upvote on time. This was due to the recent hard fork (HF20) on the Steem blockchain. Although utopian upvotes are not guaranteed, we however, find your contribution valuable and believe that it ought to be rewarded as they appear on the list of Utopian staff picks. This comment is to notify you that you should leave a comment replying to mine to receive the missed reward from Utopian. You are advised to do this on or before Thursday (5th October 2018). We appreciate your patience and we hope to see more of your awesome contribution to open source projects.
Thank you.

Hi @knowledges, no problem. I understand that the whole Blockchain has been under serious disruption lately.

I appreciate all the support provided by Utopian.

Hey, @irelandscape!

Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Get higher incentives and support Utopian.io!
Simply set @utopian.pay as a 5% (or higher) payout beneficiary on your contribution post (via SteemPlus or Steeditor).

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.076
BTC 63447.16
ETH 1663.05
USDT 1.00
SBD 0.42