RightCart

Posted by David Harris Mon, 05 Jun 2006 14:30:00 GMT

Today, a break from the Fictiverse series so I can blog about possibly my favorite Rails application to date. You may notice the addition on my sidebar of a little goodie called RightCart. This little gadget is a whole hosted shopping cart made in Ruby on Rails.

Let me preface this by saying eCommerce is the bane of my existence. I have attempted the creation of several sites for “individual” sellers who had little computer experience. These were not businesses who had a certain inventory and kept great control over the entire selling process, they were just people who wanted to sell something they made or bought wholesale. Trying to find a solution for them was impossible, at best. I wound up using Comersus or similar open source carts, hardly the best solution.

Then came Shopify, possibly the easiest to use commerce software of all time, ever, also built in Ruby on Rails. And it was loved by all. Finally, a storefront that was not difficult and even dummies could operate it. Yet, it was still overkill for the person wanting to sell only ten items or so, but by far the easiest to use. Judging from the technological progression of shopping carts, I figured it’d be a decade before anything truly perfect came out.

Then came RightCart. I’m not about to claim it’s perfect at all, but it’s leaps and bounds forward for the personal merchant who does not want to bother with merchant accounts or integrating Paypal or any of that nonsense, but wants to make some quick cash for some merchandise. Perfect for the people I’ve made individual stores for in the past. Perfect for even the small business! Probably not perfect for a Wal-Mart or Target. :)

The concept is simple. You create an account at RightCart using just an email. It then gives you a 3-liner code to put on your website. The next step shows you a summary page, where you can create items to sell, or find existing items to sell from their catalog of existing items. Visitors to your site use the cart as if it were integrated into your own page, though behind the scenes some very simple but powerful and secure AJAX is being used to add items to the cart. Checkout happens on the cart itself, so the user never needs to leave your site.

It’s actually brilliant. It’s a storefront hosted elsewhere, but you do not have to create dirty templates to match your site, the user doesn’t know he’s left your page, and you don’t have to add any code but the three lines! They simply take a 1% cut off any money you make, and they give you 1% of any items you sell that are not your own (i.e. from the catalog). A 1% cut is amazing for something hosted elsewhere, even better than having your own merchant account with Visa. Even better, your item can gain exposure from other places outside your site if people wish to include it.

While it’s great, it’s not perfect. It is oh so close, though. The amount of screen real estate is horrible. They include two paragraphs of text to explain the cart, which results in almost an entire google skyscraper ad being taken. In fact, it pushes my own ad bar even farther down because the cart needs to be up above where people can interact easily, which will probably cut my ad revenue quite a bit. They could have easily opted for a small ”?” link at the bottom (perhaps after the “Shopping 2.0” text) that a user could click on and it would scroll the current text down for them to see. This would result in a much improved space footprint and still allow them some advertising to get people involved in their product. Don’t get me wrong, I fully support their need to initially get the product attention, but I’m afraid the ton of text will turn a lot of designers off the product, because it really does detract from the whole site (everything you add takes something away from the site as a whole).

Speaking for the text, whatever font is being used bleeds like crazy at least on my monitor. It appears like an old JPG that has been through several enlargements of smaller text. I really wish they would use a cleaner small font for that too, if they aren’t going to hide the text.

In the empty state, the cart is much too large. It says both “this cart is empty” and has a big picture of a Zero for items. One needs to go for an empty cart. I’d also get rid of the “title bar” at the top saying “RightCart Store”. My users are not going to know what that means. In fact, the word RightCart appears no less than 7 times on a single empty cart! That’s a little over the top. I would opt for a much plainer cart (no title bar, no text at the bottom), with a simple footer bar with a “powered by (RightCart logo)”, with the little ”?” link that expands the cart to display the help text. This would create a slick cart with a much better branding scheme than the current layout.

I’ve also encountered a few Internal Server 500 errors, and a few Rails errors due to a nil object. I’d be a hypocrite if I complained about those, however, because my apps have 500s and nil errors popping up everywhere usually. :) However, the nil errors can be solved by checking for it and handling, and the 500 errors can normally be solved with a nice stable hosting solution, but both are unfortunately a downside of Rails still. Can’t fault them too much for those.

However, those are all nitpicks from a design POV. And it’s almost a shame, because the control panel design is so brilliant. Adding an item makes you think it shouldn’t be that easy. The fact it keeps your cart over multiple webpages is awesome. The fact it’s so easy that a web novice could use it is awesome. As someone who has bore the brunt of many novices trying to get an online store up and running, I do appreciate this product.

I’m not sure yet how I will use it, but if you wish to purchase my eternal love and admiration (and see how this baby works), you may click here:

... well, actually I cannot get the “item code” link to work, so I can’t offer you my eternal love and appreciation yet. Check back later. I guess there’s another bad error. :)

EDIT 06/06/06: I emailed the RightCart support team, and they are great about responding quickly too! They quickly fixed the problem with the code generation (I love the speed RoR allows), and explained I only saw the Rails error page because my IP was in the same block as one of their devs. Ha, small world. :) Anyway, for those who wish to purchase my eternal love and devotion AND test out RightCart simultaneously,

no comments | no trackbacks

Fictiverse: Part II - Defining the Application

Posted by David Harris Fri, 02 Jun 2006 14:14:00 GMT

Sorry this has taken so long, I’ve been on vacation. I’m hoping that in the future, I’ll be able to update at least every few days. Anyway, last time we setup everything to get it ready for our coding, but I made the mistake of setting up my database before writing the tutorial, and thus I received several emails claiming errors and the Rails page not showing up. Again, browse the Rails Wiki to see how to do this, or wait for the next tutorial. This tutorial is less of a teaching and more of an explanation of what Fictiverse is and what our constraints will be.

Summary

At the core, Fictiverse (abbreviated as FV from here on) is intended to be the next trend of community-based or collaborative fiction. It has elements of both Alternate Reality Gaming and Fan Fiction. The premise is simple—we want to create an entire separate internet that represents a fictional world. Picture a Venn Diagram of the internet, a large circle. Now superimpose a smaller circle that barely overlaps it; this is the Fictiverse world. The tiny overlap represents the site we are creating, the site that connects the real world to our fictional world.

The actions a user can take are limited only by imagination and the will of the community at large. Users basically create websites, either blogs or otherwise, that represent their persona in FV. If they wish to be the next media mogul, perhaps they create Fictiverse News Network, “hire” reporters, and create a CNN lookalike. If they wish to be a FV politician, perhaps they begin campaigning, and perhaps someone else becomes the head of an election committee. Perhaps someone else wishes to blog about their experiences as a space pilot in some random part of the galaxy. For those that cannot afford a domain name and hosting, perhaps someone would be so nice as to create a community blogging system for them.

Sites are either accepted or rejected by the Fictiverse community as a whole. While writing fiction is one half of a user’s responsibility, the other half is voting on which sites should be part of FV and which sites should not. This will be accomplished via a dirty imitation of Digg, which will be the majority of the project we are creating now. A user submits his URL and persona to the site we create, and users either give it a thumbs up or down. The most voted make it to a “front page” where the main FV sites will be. The least voted are moved to the back where they get lost or become such a negative score that they may be moderated off the site.

For example, a user wants to just “become” the president of FV, so he creates an official president site. He submits it to the site. Users do not like someone circumventing normal rise to power, so they vote him negative. Eventually, he reaches the bottom, nobody even sees his site, and if it gets flagged for moderation enough, it may even be removed from the database. The site can still exist on the web, but it’s no longer linked to FV through our hub and therefore not a part.

So, the rules are quite simple. Write what you may, and let the community decide what belongs or should not. The only rule set in stone is that all fiction should be able to have a PG-13 rating such that we can allow younger people to also participate. Thus, Fictiverse is fiction that evolves over time through decisions made by the community as a whole. It’s like a multi-dimensional novel, as you can read of the experiences of many people in the same fictional world.

Constraints

So, we have a good idea of what Fictiverse will look like. Now, we will discuss what it should not look like.

The main benefit of our job here is that we are creating a system in which the community can work on the tasks like community blogging, news aggregators, etc. This keeps our job very small and manageable. I’m a huge proponent of Agility in development, and keeping it small is the best way to scale later if we need to. The beauty of only handling users, their links, voting, and moderation is that the system is not complex and probably will never need to scale past one server. In fact, I’m starting it out on shared hosting, and don’t expect it to run me out for awhile.

Initially, we will only deal with those tasks: users, links, votes, and moderation. However, we will allow for two other things in a future iteration—a “friends” system, and a forum system. These forums would be used to discuss issues about FV but not inside FV, like an OOC channel. Since we want all FV member sites to be in character, we might need to provide the OOC forum to make things work behind the scenes. This is ok, and I would probably integrate Vanilla when that time comes, instead of creating a custom system. So these are our constraints as far as where we are letting the software go. No more, unless the system really requires something new to function correctly.

We do have two major things to consider in our design. The first is that FV member sites cannot bleed into the “real world” internet. We want the only entrance to the Fictiverse world to be through this site, or by explicitly typed in URLs. Now, this is very difficult. After all, we’re using domains that are in the “real world” root servers, and probably have “real world” nameservers. And I don’t plan on recreating the internet with new root servers. :) But, this is fine. What I’m mainly concerned with is making sure nobody links to it from outside, or puts their site into Google, or anything like that. We don’t want google indexing Fictiverse and some random googler thinking that someone actually cured cancer or something like that. And, email becomes difficult because that is in the real world. The second constraint is the moderation system, making it easy and rare.

The first problem cannot be cleanly solved. We will have to provide some guidelines for this. Users may not explicitly enter their site into a search engine, they may not link to it from elsewhere, they must have a disclaimer on the site linking to the FV hub and claiming it to be fiction, and they must set the robots.txt file on their server to disallow any crawler. This will not solve the entire problem, but it will alleviate it to some extent. If someone wishes to link someone to their site, they can use a hyperlink forwarder from within our site, which when clicked on would first stop the person at our site, and after explaining the concept would forward them to the person’s fiction.

Also I should note that since I’m not paying for these sites, and most people are broke, if they wish to place textual Google Ads, they may. Because it is discreet and well established, we will only allow Google ads on member sites, and they must be placed tastefully. If someone creates a site with an obvious intent to make money without providing decent content for the community, he will probably be voted to the back anyway.

As far as moderation, this becomes easy with our system. We simply allow users to “flag” a post for review, similar to Craigslist but not automatic. If enough flags are set, it will enter probation where it will be reviewed by a moderator. A site should be moderated for only a few reasons: 1. Violating the PG-13 rule, 2. An obvious intent to connect their site to the real world, or 3. Violates the common will of the community (someone claiming to be president that should not be). Obviously anything illegal in the real world applies here too. The goal is that users decide what FV will be, and moderators only apply in extreme cases.

Future Evolution

I imagine at some point, the possibility to have two or more Factions represented in FV could happen. Just as Republicans and Democrats mainly differ on about 2-3 core issues, the users of FV may also see it going in several different directions and wind up choosing a side. At some point, we may need some way to split apart like an amoeba, so we need some way to detect when this will occur and then a path for the actual mitosis process. Detection may eventually be accomplished by creating a crawler to check the sites to see who in FV is linking to whom, and create a graph of what FV looks like with hyperlinks as the edges. If it results in two large masses then it’s time to split it apart, probably through a forum system and asking the community how to handle it.

However, this is a function that does not at all need to be created at the onset, as in a utopian fictiverse, everyone can function together as a happy group of people. But we are human, so it’s good to have a plan if we start hitting a lot of sites rated at 50% (equal thumbs up and down, indicating division). In general, for a long time, things should equalize well though and this is a problem we can solve later.

Community

Since this is a community project from creation to use, I welcome the opinions of anyone reading this through the process. If you have suggestions, complaints, or want to see something else, I will consider everything. If you want to go ahead and think up a persona to participate, I hope to be finished with this in the next several months, so start thinking! I want Fictiverse to be fun and friendly, from development to production, so everyone has a say what it should look like.

Also, know that I build applications around people constraints more than a written paper on what the application should and should not look like. I imagine how people would react to things, and make decisions accordingly. For example, I chose Ruby on Rails not because it’s the latest trend but because it will let me quickly get something running and update it easily as the site develops. I will use AJAX not because it is flashy, but I will add it where appropriate to enhance a user’s experience. And I use mostly Agile methods not to be like the cool kids, but rather to let the whole process from start to finish be about the end user, because without them there would be little need for an application.

Next tutorial will cover creation of the database and model, so that should be fun. Please give me comments or suggestions soon so I can incorporate them into the schema early on.

Digg this!

Tags , , , ,  | no comments | no trackbacks