openbazaar / openbazaar-desktop Goto Github PK
View Code? Open in Web Editor NEWOpenBazaar 2.0 Desktop Client (talks to openbazaar-go server daemon)
License: MIT License
OpenBazaar 2.0 Desktop Client (talks to openbazaar-go server daemon)
License: MIT License
Brief Description: Clicking a link on a store profile breaks the client
Operating System (OS and version): Ubuntu 16.04
Reproducible (Always / Almost Always / Sometimes / Rarely / Couldn't Reproduce): Always
Steps to reproduce:
Observed Behavior: Client goes white and is non responsive. No link is opened.
Expected Behavior: Link opens in external browser.
The About Modal is a modal that should be shown when
Currently, there is no plan to have functionality to open the About modal to a specific tab.
When the About Modal is open, it does not change the address shown in the address bar. Like most modals, the About Modal is not recorded in history.
The About Modal should show the following elements:
The tabs have the following elements/functionality:
The Story
Contributors
Donations
Licensing
It is a standard marketing trick to mark certain listings as sold out. As of writing, there are several vendors that use this trick, e.g.
Each of those vendors use the listing title to mark the item as sold out. My suggestion is to add a flag in the listing object instead so that these can be machine readable (for better searching, filtering and display).
The User Page Store Tab is one of the tabs on the User Page. It should be shown when:
FOR FURTHER DISCUSSION: Deep linking to filtered experiences
The User Page Store Tab should show the following information:
The elements below are interactive:
The search input
The Shipping section
The Type Section
The Category section
The Rating section
If the user is also the page owner, the following functionality is added:
The Status section
npm install
produces a few warnings reproduced below. (I'm running node v6.3.1.)
Justins-MacBook-Air:openbazaar-desktop justin$ npm install
npm WARN deprecated [email protected]: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130
npm WARN deprecated [email protected]: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated [email protected]: to-iso-string has been deprecated, use @segment/to-iso-string instead.
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN prefer global [email protected] should be installed with -g
Pressing ESC is a common way to close a drop down. However, since our modals close on an ESC press, then pressing ESC to close an open drop down also closes the modal.
Since we're using select2 for all drop downs, select2 gives us the proper state classes to detect an open drop down and we can then not close the modal in this case.
In the current OB 1.0 setup, a node can simultaneously be a vendor and a moderator. In practice, nodes that are both a vendor and a moderator are either:
It is so easy for a vendor to say "sure, I'll be a moderator, my fee is X%". They will usually neglect their moderator duties, such as having a moderator policy, advertising its moderator services, deal with disputes promptly, stay online 24/7, etc. It is also confusing for buyers to see the vendor information and moderator information mashed up into a single page.
Take a great store, Yabisi Kakaw. It is also a moderator node, but neither the Description nor the About section has any mention of it, or the moderator policy. Indeed, such moderator information would distract prospective buyers. Yabisi Kakaw is an example of an "accidental moderator".
I also feel that the design of moderator nodes has to be tailored to moderators. Take our most professional moderator, BazaarGuard. It has hijacked the "About" section to stuff its moderator Terms and Conditions. Notice also that BazaarGuard has no listings, as that would be confusing.
In the edit listing shipping section if you enter invalid data, the error message says the data is missing, which is confusing.
The inputs should have max attributes to prevent excess text being entered.
It's also possible to enter a number so big it is converted to an exponent. It would be better to put a max on the field so the user can't enter too large of a number.
If you click into any Select2 field inside the Settings modal, and then scroll, all the select2 dropdowns, the shipping tiles, and the photos stay fixed in the modal, while the other content scrolls under them.
Note: we are planning to refactor this modal to match to the new full-page scrolling design, doing that may fix this issue.
What about having a boolean flag (similar to NSFW) that indicates whether or not the price for the listing is negotiable? I've personally lived in Shanghai, China for 4 years and back then buying stuff from the local markets without negotiating would have been weird/rude.
(This was briefly discussed in the partners call.) There are several use cases for allowing vendors to list listings that do not cost any Bitcoin. These include:
Free listings, not having a corresponding Bitcoin payment, do not need a moderator to moderate a Bitcoin transaction. Free listings would follow the same purchase flow as paid listings, with buyer orders being immediately 'funded'.
The buyer and seller would still be able to make use of OpenBazaar infrastructure around transactions, including ratings, chat, transaction history, channels, etc.
Some services require more advanced pricing, like price in BTC per minutes, hours (language classes) or words, characters (translation).
OpenBazaar should have special price units in order to facilitate price comparison. This way third-party search engines could better categorize services, for example "English teachers starting at 0.1 BTC/45 min" or "Translators from English to Spanish: starting at 0.001 BTC/character".
@morebrownies Could you also style the Deleting and Deleted state of the listing card? You could see them by applying .listingDeleting or .listingDeleted to the .listingCard element.
The styles were very much placeholder styles before, but now, with the removal of the overlay panel, they are even worse:
before:
now:
Anyhow, they're important for a few reasons:
a.) The delete is an async process and can complete at any time - the user may be happily scrolling further down the list when the delete completes, so we don't want to just remove the item having the page jump abruptly.
b.) Removing a listing may affect filters, e.g. a category may need to be removed from the cat filter. Having this update on the fly is a bit of a can of worms to make the experience smooth, so we've decide to take the approach of popping in a message urging the user to refresh:
c.) The delete could be initiated elsewhere, namely the listing detail modal. If it takes a bit, the user could close the modal landing back on the store. We would want a "deleting" state so the user understands the listing is in the process of being deleted.
A radio-style control to select a bitcoin display unit should be added to the Settings/General tab.
See OpenBazaar/OpenBazaar-Client#1823 for an example of this functionality.
Below are examples of how the category
free text field is been used by current online vendors:
Yard Sale - Electronics
Corn, Pumpkin, Melon etc.
6. Tools/Misc.
Cedar oils / essential / resin
Hobby & Sports
Coins & Paper Money :: Bullion :: Silver :: Bars & Rounds
Shoe Care & Accessories › Shoelaces
As you can see, vendors have been creative with separator fragments (using -
, ,
, /
, ;
, &
, ::
, ›
) to make a hierarchy of subcategories. It would be helpful if the client front-end (and backend, cc @cpacia) could have better support for a path of sub-categories instead of a single flat monolithic category field.
npm WARN deprecated [email protected]: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130
npm WARN deprecated [email protected]: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated [email protected]: to-iso-string has been deprecated, use @segment/to-iso-string instead.
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
In OB1.0 a significant number of stores created have/had no contact information. This is problematic because:
I would suggest that the frontend client warns sellers with no contact information somehow.
This will prevent accidental clicks that result in a lot of lost work
As a general comment, the OB1.0 client has been misleading with silently ignored errors. For example, if there was an error loading listings from a store, the client would say "No listings". But there is a huge semantic difference between "No listings" and "Cannot load listings".
Exposing errors to users achieves two valuable things:
Wiki Page: https://github.com/OpenBazaar/openbazaar-desktop/wiki/Listing-Details
The Listing Details view is a modal. It should be created and shown when:
The Listing Detail modal should show the following information:
The following elements are interactive:
If the user is the owner of the listing:
Wiki Page: https://github.com/OpenBazaar/openbazaar-desktop/wiki/Listing-Card
The Listing Card displays basic information about a listing. It should have the following data:
When shown in the User Page Store tab, the Listing Card should also show:
Outside the User Page Store tab, the Listing Card should also show:
Interactive Elements
At Duo Search we have had several vendors (and buyers) wanting "category links" that link to a specific category. For example, https://duosear.ch/@vintagefashion/Belts
would be a link to the belts available on the @vintagefashion
store.
There are a couple of considerations for building category links:
@vintagefasion/store
and @vintagefasion/about
. If this will also be the case in OB 2.0, this means that the simplest implementation @[guid]/[category]
does not work if the category is store
or about
.When the client starts a local server (this should mean the node server and client were installed together through an installer file), the first time the node server runs it will need a password for the database encryption.
If the user chooses not to store the password, they will also need to enter it every time the node server starts.
This will not be necessary for remote node servers, or any node server that is started with the command line. When node server is started through the command line, the password will be handled through the command line at that time.
The Connection Modal is an interface element that allows the user to choose a server to connect to and edit or create new connections. It appears when the current connection is lost, and when the user wants to change the connection.
The content area has 2 states, Configurations and New Configuration/Edit Configuration.
Configurations
The Configurations state shows a list of currently saved configurations.
Each configuration:
Edit Configurations
The Edit Configurations state is used for creating new configurations and editing/viewing the details of existing configurations,
Clicking the close button will close the modal.
Bring in a micro-font that will give us the Bitcoin symbol, a la:
http://www.righto.com/2015/02/how-to-display-bitcoin-symbol-using_14.html
A lot of the early OpenBazaar adopters are Bitcoiners which are active on Reddit. I thing complementing Twitter and Facebook with Reddit would enrich the vendor profiles.
The current medium text editor used in the settings and edit listings views isn't ideal. It should be replaced by a WYSIWYG editor with the following criteria:
Allowed Tags:
The following text editors are suggested:
One of the observed trends from the Duo Search data is that free-text fields lead to "messy" situations, despite the bulk of the cases being "organised". Return policy is a good example, presented below.
I've collected all the different return policies that Duo Search has scraped since the beginning. It's available here for your perusal. There are 1813 distinct return policies, but when you look into them there are literally hundreds of duplicates for "No return" (small sample shown below):
"No Returns.",
"no refunds.",
"no returns.",
"All sales final.",
"No returns.",
"There is no way back!",
"There is no way back...!",
"No Returns on digital items.",
"Returns are a no-go.",
"No returns. No tradeback. Nothing.",
"no refunds, will resend once if not recieved",
"no returns, if u dont recieve will resend once",
"no returns, if you don't recieve will resend once.",
"no returns, if you don't recieve, will resend once.",
"No Returns",
"No returns",
"no refunds",
"No returms",
"No return",
"No refunds on digital items",
"No refund",
"No warranty and no returns.",
"No returns or refunds",
"Returns accpeted.",
"No returns on food items.",
"No return policy",
"No Refund",
"NA",
"N/A",
"Non Refundable",
"No Return",
In an effort to make free text fields more consistent across OpenBazaar stores (and more machine readable) having pre-set options for the return policy would help. My suggestion would be to a have few preset options, plus a "Custom" field for those that require free text. For example:
This hybrid strategy could work for many fields, including condition
, weight
, refundPolicy
and category
.
Several OpenBazaar vendors I have talked to mentioned they had problems with buyers paying most of the quoted amount, but missing just a bit to complete the transaction. This could happen if:
A solution for this problem is to allow for an optional "Mispayment buffer" like what Coinbase does:
Mispayments created unsatisfying customer experiences and a lot of work for everyone involved. We’ve built a way to allow merchants, through our v2 API, to create simple mispayment buffers. Mispayment buffers are percentages that can be applied to either side of the quoted order price, declaring a customized, merchant-specific range of acceptable payment amounts.
For example, let’s consider an Order for 10 BTC with a 1 % underpayment buffer. A customer who accidentally pays 9.9 BTC will successfully complete the order, while someone who pays 9.8 BTC will not. This gives merchants more control, allowing them to determine what is best for their business.
A common issue for vendors in OB1.0 is that their store seems online to them (they can see their storefront) but actually they are not visible to the outside world.
Similar to other P2P software (e.g. BitTorrent clients, or Bitcoin Core), it would be useful to show the number of connected peers, detailing the number of incoming and outgoing connections.
This would help vendors know when their store is not visible to the outside world, or when their store is being flaky. It may also be "exciting" for store owners to see people connect to their node.
We want to not only attract high quality moderators to OpenBazaar but also incentivize them to invest in their offering and take their moderator duties seriously on the platform. One way of being able to generate more revenue would be to allow them to charge upfront fixed fees on every transaction, not just the transactions that result in disputes. This would require an alternative 2-of-3 multisig transaction where a fee is sent directly to the moderator in advance of any dispute. Some may want to charge both an upfront fee and an additional fee in the event of dispute.
Brief Description: Can't install 2.0 on a PC
Operating System (OS and version): Windows 7
OpenBazaar version (shown on About OpenBazaar
page in menu):
Hardware: Lenovo Y570
Reproducible (Always / Almost Always / Sometimes / Rarely / Couldn't Reproduce): Always
Steps to reproduce:
Observed Behavior:fatal: Could not read from the remote repository.
Expected Behavior:???
Additional info (links, images, etc go here):
When on your store and listing data changes, a pop in message appears urging you to refresh. The message is not super visible right now and is easily missed.
It's currently set with fixed positioning. The fixed positioning is important because the user may be scrolled very far down the store when we need to show the message, so having it be fixed will allow it to be at the top of their view no matter what scroll position they're at. Hopefully, the fixed positioning can stay. All else though is probably fair game.
On startup, use electron.screen.getPrimaryDisplay().scaleFactor to adjust the scaling for Linux.
Something like the below should work:
if (platform === "linux") {
var scaleFactor = require('electron').screen.getPrimaryDisplay().scaleFactor || 1;
$("body").css("zoom", 1 / scaleFactor);
}
The existing settings modal should have an advanced tab with settings that are technical and/or less frequently used.
The following settings should be available for the user:
Appearance
Server
SMTP Integration
At Duo Search we're trying to filter listings by language. (E.g. an English might not want to see listings in German, French or Spanish.)
It would be very useful if the vendor specified the language used for his listing, so that filtering by language can be done automatically.
As of writing for the 270 online stores, 264 have exactly one "combination" of moderators across their listings and 6 have exactly two combinations of moderators. (Since different listings can have a different set of corresponding moderators, a given store can many have several moderator combinations.)
The empirical data suggests that stores do not make much use of the flexibility in picking a different set of moderators across listings. I suggest removing that flexibility altogether. This would allow for a store to have a well-defined set of moderators that could be displayed on the store page.
Clearly communicating moderator options at the store level is something we are trying to do at Duo Search, and this simplification would help.
@jjeffryes I'm having a difficult time tracking this one down. It appears both instances have the same classes applied, but they render differently.
The instance on the listingCard is incorrect. It seems to have some extra vertical padding.
I just noticed that the toggle for list and grid view is done globally. It might make more sense to make this local to the store front. I know that's horribly a pain in the ass, but for stores that have digital music as compared to physical goods it might make sense.
Perhaps we should make the stores choose this setting @morebrownies
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.