Professional Documents
Culture Documents
Cloud Nine Retail - Phase 1 Specification
Cloud Nine Retail - Phase 1 Specification
Cloud Nine Retail - Phase 1 Specification
The system is platform-centric. We intend to develop the core functionality for the system, however
our API will be 95% publically exposed for third parties to develop “Add ons”, and we will be using
OAuth as an authentication method to develop our own App Store.
Cloud Nine Retail is hosted by Rackspace cloud hosting, a scalable solution running LAMP. The API is
written in Ruby on Rails.
The design and Layout of the site has already been completed and it will be required to be used as a
template.
Deliverables
As part of this project, you will be expected to achieve the following objectives.
The design and Layout of the sites have already been completed and should be used as the
templates for the functional code. All user interface elements should be taken from the template.
Deliverable Completion
The completion date quoted by the contractor will be deemed as the “Delivery Date” for each
deliverable. On this date you will be expected to hand over the code and deploy it to the RTL
Rackspace Server.
A deliverable will be defined as “Delivered” when the following conditions are met.
Details on these requirements and the expectations of RTL’s quality control can be found in the
appendices.
Page 1 of 16 Confidential
Cloud Nine Retail | Phase 1
Payment Structure
RTL will pay 25% of the overall project fee up front.
RTL will then pay 25% for each successfully completed deliverable.
RTL will guarantee responses to email queries within 24 hours, Monday to Friday to help ensure the
delivery date is met.
API Development
As is defined in the opening page, all functions which the website performs, must be done through
the API. This project is designed in such a way that the marketing Website and Administration Portal
will both largely make use of the same APIs.
The API’s must be developed in JSON format using RESTful principles, as have already been defined
and documented so far from our feasibility projects.
If the API requires additional definition and modification, it must be discussed and approved by RTL
prior to its development. Typically, this will involve the contractor assessing the scope of the
requirement in the early days of the process in order to ensure the API will meet their development
requirement. This is then modified in the API documentation, and sent to matthew@rtl-mail.com
and can be discussed via skype.
All API calls need to be validated for authentication (OAuth) and also data integrity purposes, with
appropriate fail messages and error codes employed.
Documentation for the API must be maintained at all times. This must include documentation about
error codes, required data and practical usage examples. This documentation must fall in line with
the existing templates and formats established from the feasibility study.
The API will be tested according to the documentation by a third party developer to ensure it is of
sufficient standard and meets the requirement.
Page 2 of 16 Confidential
Cloud Nine Retail | Phase 1
Contents
Deliverable 1: Marketing Website .......................................................................................................... 4
1.1. Overview ................................................................................................................................. 4
1.2. Multi Language ....................................................................................................................... 4
1.3. Customer Signup ..................................................................................................................... 4
1.4. Content Management ............................................................................................................. 6
Deliverable 2: Administration Portal (Part 1).......................................................................................... 7
2.1. Overview ................................................................................................................................. 7
2.2. Menu ....................................................................................................................................... 7
2.3. Users ....................................................................................................................................... 7
2.4. Retailer Accounts .................................................................................................................... 8
2.5. Suppliers.................................................................................................................................. 9
2.6. Customers ............................................................................................................................. 10
2.7. Partners ................................................................................................................................. 10
2.8. Apps ...................................................................................................................................... 10
Deliverable 3: Administration Portal (Part 2)........................................................................................ 11
3.1. Policies .................................................................................................................................. 11
3.2. Pages ..................................................................................................................................... 11
3.3. Support Tickets ..................................................................................................................... 11
Appendix A: Testing and Validation Expectations ................................................................................ 16
Appendix B: Documentation Expectations ........................................................................................... 16
Page 3 of 16 Confidential
Cloud Nine Retail | Phase 1
The Marketing website is where visitors “Land” and can sign up for an account. It needs to be
visually appealing, conveying the fact that the site is a retail system.
The website layout and design is already completed and will be provided to you. This project is to
put the functionality required, behind the design.
All functionality must be performed through the API. If API methods do not currently exist, they
need to be discussed, defined and developed. There should be no direct database access.
English is the primary language, and it should automatically detect the locale of the user and display
the relevant language.
RTL will provide 1 additional language (Dutch) in order to test the capabilities.
These language strings should be editable by RTL and easy to add additional languages. The
processes required to do this should be appropriately documented.
• Company Name
• Email Address
• Password
This is similar to how Shopify gets a quick signup. The form field “Labels” should also appear in the
form boxes, a bit like this example. The button should simply say “Signup”
Page 4 of 16 Confidential
Cloud Nine Retail | Phase 1
If the subdomain is already taken it will add a number to the end of the subdomain until it creates a
valid one. “grahams-shoes-1.c9r.co”, “grahams-shoes-2.c9r.co”
While it is building the customer account it should show some sort of overlay saying “Your account is
being created, it’ll only take a moment or two”
When the account has been created it will automatically log them into their account, which is at
http://their-subdomain.c9r.co. The first screen they see will be the main backoffice dashboard
screen, with a lightbox style overlay showing their account details. This is not yet developed, so it
will need to be documented where this “Redirect” is configured. For the time being it can redirect to
a sample page.
You’ve made a great first step in choosing Cloud Nine Retail, and we are sure you are going
to love it. Your account login details are shown below, so be sure to note these down or
print a copy. We’ve emailed them to you too, just in case.
Address: http://yourdomain.c9r.co
Email Address: youremail@yourdomain.com
Password: password
Use our wizard at the bottom of the screen to take the tour and help you get started, or you
can choose to skip it and take your own personal look around. Rest assured we are here to
help!
Regards,
From: welcome@c9r.co
Subject: Welcome to Cloud Nine Retail!
Body:
You’ve made a great first step in choosing Cloud Nine Retail, and we are sure you are going
to love it. Your account login details are shown below, so be sure to keep this email safe or
print a copy.
Address: http://yourdomain.c9r.co
Email Address: youremail@yourdomain.com
Password: password
Regards,
Page 5 of 16 Confidential
Cloud Nine Retail | Phase 1
RTL may wish to edit the content of these emails later on, so please ensure these are developed in a
way that makes it easy for RTL to update them if necessary, and document accordingly.
The user which is created on signup will become the Account owner for that retailer account.
Multiple users can be added to their system later.
The process also needs to record the country of the business, which it can detect by IP/location of
the person performing the signup.
The system then also needs to record the date it was created.
However the Marketing site needs to have the ability for RTL to add a link to a site which will call a
page created in the Administration portal. It should also display that page in the relevant local
language, if one exists.
The method for creating a link to the relevant page needs to be appropriately documented.
Page 6 of 16 Confidential
Cloud Nine Retail | Phase 1
Much like the marketing website, this should support multi language, starting with both English and
Dutch.
2.2. Menu
The Admin portal will consist of a simple menu running across the top of the page. The left hand side
will have the Cloud Nine Retail logo, and the right hand side will have the following menu options.
Please use the same theme/CSS concepts taken from the marketing website to ensure a uniform
experience.
2.3. Users
It will be possible for many different RTL users to be granted access to the Administration Portal.
However there will be one “Account Owner” which is the primary super account.
Username: admin@c9r.co
Password: complex random string
• First Name
• Last Name
• Email Address
• Type
• Last Login Date
Page 7 of 16 Confidential
Cloud Nine Retail | Phase 1
• Edit (Button)
• Delete (Button)
• First Name
• Last Name
• Email Address
• Type (Admin | Standard)
• Password
• Confirm password
The password boxes should require a complex password, and perhaps show a “Complexity score”.
It should also offer a Password Generator which will generate a secure password.
It should only allow creation of a password with a complexity score over 70 (Out of 100)
• First Name
• Last Name
• Email Address
• Type (Admin | Standard)
• Password
• Confirm password
The password/confirm boxes should only do something if something is entered in them. If the first
name for example is modified and saved, it should not save the password.
The password boxes should require a complex password, and perhaps show a “Complexity score”.
It should only allow creation of a password with a complexity score over 70 (Out of 100)
• Company Name
• First Name
• Last Name
Page 8 of 16 Confidential
Cloud Nine Retail | Phase 1
• Email Address
• City
• Country
• Telephone Number
• Mobile Number
• Partner
• Signup Date
• Billing Date
• Last Billing Date
• Status ( Trial| Active | Overdue | Disabled )
Company name should be a hyperlink to http://their-subdomain.c9r.co, and it will log into their back
office automatically.
The partner column can be left blank for now, but it is there in case we want to introduce a referral
scheme.
There is no Edit function here. The idea being that things like Editing the retailer details, and closing
their accounts can all be performed by clicking their Company Name and accessing their back office.
The Status field has 4 states. When they are in their 30 day trial, then the status shows “Trial” and is
coloured orange/amber. When they are live and paying, they are Active, coloured green. If their
billing has failed, they are Overdue and coloured Red. And if they have terminated their account,
they are Disabled, coloured grey.
• Company name
• First Name
• Last Name
• Email Address
There should be some filters on this page too, and they should work in combination with each other.
• City
• Country
• Partner
• Status
2.5. Suppliers
The purpose of this list is to show the list of suppliers who are granted access to Cloud Nine Retail.
These are people who have signed up through the Suppliers portal (Section 6).
Page 9 of 16 Confidential
Cloud Nine Retail | Phase 1
• Supplier Name
• Contact First Name
• Contact Last Name
• City
• Country
• Telephone Number
• Mobile Number
• Catalogue Provider
• Sales Data
• Despatch Data
• Target Stock Data
• Stocktake Data
• Signup Date
• Billing Date
• Last Billing Date
Company name should be a hyperlink, which opens a data editing screen in a lightbox style so the
user data can be edited.
All fields except for Signup Date, Billing Date and Last Billing Date should be editable – those fields
should just be read only text.
Sales, Despatch, Target Stock and Stocktake Data are all check boxes. On the supplier ist a simple
check graphic is enough to indicate their status, but in the edit screen this should be toggleable.
This screen should also have a “Reset Password” function, which will generate and resend a secure
password to the email address associated with the supplier.
• Company name
• Contact First Name
• Contact Last Name
• Email Address
There should be some filters on this page too, and they should work in combination with each other.
• City
• Country
2.6. Customers
This should show a sample page, as this function will be developed at a later stage.
2.7. Partners
This should show a sample page, as this function will be developed at a later stage.
2.8. Apps
This should show a sample page, as this function will be developed at a later stage.
Page 10 of 16 Confidential
Cloud Nine Retail | Phase 1
It is a place where RTL can update these policies so all users can see them.
It should also support the use of variables. {retailer} when rendered in the retailers backoffice portal
will show their retailer name.
3.2. Pages
This should be a content management system. We should be able to create “Pages” of content
which can then be called from. It will be necessary for each page to be displayed in each language
that is held in the system.
• Page Name
• Page Link
• Delete Button
When you try and delete a store, a confirmation prompt should appear (Lightbox style – NOT a
Javascript OK/Cancel button) it asks “Deleting a page will permanently delete all content in all
languages. Are you sure you want to continue?”
There should also be a new button, which shows the same detail as the edit button, but in a blank
form.
The editor should be WYSIWYG, but produce fully standards compliant HTML including complex DIVs
and custom CSS.
• Ticket Number
Page 11 of 16 Confidential
Cloud Nine Retail | Phase 1
• Subject
• Retailer
• Contact Name
• Ticket Owner
• Ticket Status
• Priority
• Opening Time
• Last Updated Time
• [Close]
These fields are explained in detail in section 3.3.3. There should be a “Create Ticket” button here
too.
Clicking the Ticket Number or Subject will take the user to a lightbox overlay form containing the
ticket details.
This list should only show tickets which are NOT closed. There should be a check box which will let
the user see closed tickets “Show Closed Tickets” and clicking this will automatically refresh the list
to show closed tickets.
• Retailer
• Contact First Name
• Contact Last Name
• Ticket Number
• Subject
There should be some filters on this page too, and they should work in combination with each other.
• Ticket Owner
• Ticket Status
• Priority
The search and filter should respect the “Show Closed Tickets” option in 3.3.1.
If the ticket has been clicked from the ticket list, this shouldn’t be a form. Instead it should display all
the entered data in a read only format, and NOT look like it is in a form. There should be an edit
button, and when pressed it turns this page into a form.
Ticket Number This is ALWAYS automatically generated and is not editable under any
circumstances.
Page 12 of 16 Confidential
Cloud Nine Retail | Phase 1
Retailer This is a text entry box with AJAX. When typing, it should perform a wildcard search
of retailers in the database and display their names so that a retailer can be clicked
and selected.
Contact Name Text entry box with AJAX. When typing, it should perform a wildcard search of users
(Users that are created for the already selected retailer) in the database and display
their names so that a user can be clicked and selected.
Ticket Owner Text Entry box with AJAX. When typing it should perform a wildcard search of RTL
Employees (People with access to the administration portal) in the database and
display their names so they can be clicked and selected. This should default to be
the current logged in user.
Ticket Status This is a selectable combo box which offers the following statuses. Open/On Hold/In
Progress/Awaiting Customer/In Development
Priority Combo box with the following options. POS Issue/Back Office Issue/App Issue
Subject A text entry box which will let someone type in the subject of their ticket.
Description A large box which the user can enter in all the details of their ticket
Attachments The user should be able to upload attachments to the ticket. This should be a
javascript/AJAX type uploader and they can upload multiple attachments to the
ticket. It is possible to upload attachments when in Edit mode OR read only mode,
and it should also be possible to delete attachments.
Comments It will be possible for all tickets to have comments entered against them. These
comments get listed and should display the person who made the comment (Could
be an RTL employee or the customer), the date and time the comment was made,
and the content of the comment. It should also display if it is a public comment or
not. Comments are not editable, however when in Edit mode it should be possible
to delete a comment. Comments are listed in date order, oldest first.
When creating a ticket, it needs to record the date/time it was opened. When a ticket is modified, it
should record the date/time it was last updated.
When creating a ticket, it will email the user contact with the details of the ticket. The email content
is defined below. If the end user adds the ticket, this should email support@c9r.co. If an RTL
employee adds a ticket, it should email the user contact.
This email is notifying you that a Cloud Nine Retail support ticket has been created.
Here are the details of the ticket.
A C9R representative will be in touch with you to assist you with this issue. You can
Page 13 of 16 Confidential
Cloud Nine Retail | Phase 1
add further comments and keep up to date on this ticket’s progress from your
Backoffice portal.
Regards,
3.3.4. Comments
Like any support ticket system, it will be possible for RTL employees or the ticket owner to add
comments to a ticket. Therefore, whenever a ticket is being looked at (In read only or edit mode)
there should be a little form at the bottom which will allow a user to add a comment to the ticket.
There are two fields.
Public This is simply a checkbox that indicates if the comment is visible to the end user or
not. Also, if this box is checked it will email the user to let them know a comment
has been made to their ticket.
Adding a comment should do it in an AJAX style – and not refresh the whole page.
If the comment is “Public” it should email the user contact with the details of the ticket. The email
content is defined below. If the end user adds a comment, this should email support@c9r.co. If an
RTL employee adds a comment, it should email the user contact.
This email is notifying you that a comment has been added to your support ticket.
Regards,
When closing the ticket, in addition to recording the resolution it also needs to record the closing
date/time, and the person who closed the ticket (Which could be an RTL employee or the end user).
It will also email the user. The email content is defined below. If the end user closes the case, this
should email support@c9r.co. If an RTL employee closes a case, it should email the user contact.
Page 14 of 16 Confidential
Cloud Nine Retail | Phase 1
This email is notifying you that your support ticket has been closed.
If the issue is not closed to your satisfaction, the case will be reopened if you add a
comment through your backoffice portal.
Regards,
Page 15 of 16 Confidential
Cloud Nine Retail | Phase 1
Negative Testing
All data entry fields need to be negative tested, with different strings of special characters and
unexpected data entered. This is true of both the Functional Websites AND the API. Appropriate
error handling should be employed.
Standards Compliance
RTL will be passing the code through W3C validation for both XHTML and CSS. If the pages do not
validate then delivery is not classed as being met.
Code Commenting
All code must be commented and will be inspected by a third party developer to ensure it is
understandable and is possible to be worked on by other developers.
Page 16 of 16 Confidential