This site will be written in PHP/MySQL. The site will manage website textual content creation by freelancers in the form of abstracts and articles. It will then posts that content on various WordPress blogs owned by our customers via WordPress's [url removed, login to view] file.
An article abstract is a short summary of an article published elsewhere on the web, with a link to the article and another link to the customer's page we're trying to support with SEO links.
All settings in all classes must be editable by admins.
The classes required are as follows:
Worker class – Tracks workers, who can sign up for an account by clicking a link on the login page. Workers do everything from writing abstracts and articles to editing and approving them for publication to actually publishing them on a designated WordPress blog. Information to be tracked includes first and last name, email address, PayPal email address (if different), country, worker's native currency (such as U.S. dollar or Philippines Peso or whatever). There also need to be groups of workers (with rank levels) as follows: admin (5), manager (4), editor (3), writer (2), and applicant (1). Admins and managers can promote or demote workers, except that managers cannot promote anyone to admin status. There will also be a variant of the writer group that interacts directly with the Amazon Mechanical Turker API at [url removed, login to view] to create “turker” tasks that integrate with the rest of the Workflow process.
Also need separate table to track:
1. writing tasks assigned
2. writing tasks completed
3. price per task
4. whether they've been paid for the task, and what the payment date was.
Feeds class – This is where the admin can enter RSS feeds and/or Google News or Yahoo! News search results pages for processing. The feeds get parsed for URL and Article title, to be stored in the database. URL of source article needs to be parsed from the Google or Yahoo URLs. These feeds will be used as source material for creating article abstracts. Only admins and managers can set up or edit feeds.
Customer class – Includes fields for basic customer info: name, address, phone, email, main contact. This class tracks blog(s) for each customer via the Blog class.
Blog class – This class is where we enter the login information for the customer's WordPress blog(s) for which we are adding/building content. Connection to the blog happens via [url removed, login to view] file found in the customer's WordPress installation root directory. Should also accept admin/manager entries regarding customer's preferred number of posts per day and per month. Manager or admin gets assigned to manage each blog account (usually the same as the person creating the blog entry). Reports should be emailed to manager or admin assigned to account on a periodic basis (configurable by admins) showing customer job progress for blog accounts they're managing.
Workflow class – This is where the daily work gets done. A workflow is a list of tasks to be performed, where each task results in the writing and publication of an article or abstract with appropriate links in it. One link goes back to the original article. Another link on a keyword (or keyword phrase) pre-assigned to the workflow goes to the customer's web page this particular workflow is intended to support for SEO purposes.
Workflows are set up by either admins or managers. For each workflow instance, a feed is selected upon which to create the workflow. The workflow gets assigned to the worker pool (selected by worker classification as a group) or to an individual worker. A second worker with an editor-or-higher classification is assigned the secondary task of editing the work the first worker (or worker pool) produces and then scheduling the post for publication on a blog that is also assigned to the workflow instance. Email notifications get sent to the assigned workers, as appropriate. Also needs deadline setting for each workflow, and missed deadlines must result in email notification to the manager or admin who initiated the workflow.
When a worker logs in, they are presented with a list of tasks from the various workflows to which he is assigned. Since workflows can be assigned to a pool of workers, it's important that when a worker clicks on a task in the workflow that the task be assigned to him or “checked out” by the system for them, so that the same task cannot get worked on by two different workers. An ajax system is also necessary so that if Worker A is looking at his list of tasks, and Worker B “checks out” one of those tasks, the workflow task list on Worker A's screen gets automatically updated. The ajax system can refresh on a regular basis, such as every 15 seconds. This refresh rate should be something that is changeable by admins.
There also needs to be a link the worker can click to reject the task, so that it no longer appears in their workflow. If the worker also selects an option that says the task is a duplicate of another task, this task is permanently removed from the available workflow. But if the duplicate task option is not selected, the task can still appear in the workflow of other workers.
Once the worker checks out a task, he/she is given a fixed period of time in which to complete it (usually less than an hour). Again, the default period of time should be global, and it should be configurable by admins for all workflows, as well as by the manager who first established the workflow. If the worker does not complete the task within the designated time frame, the screen should update to show that the task has been returned to the pool of available tasks.
He is presented with a split screen. The left-hand part of the screen shows the original article in an iframe, which takes up roughly 60% of the screen. The right-hand part of the screen shows a TinyMCE or FCK editor window where he will write his abstract or article about the article on the left. The workflow's instructions (as set by the manager or admin who created the workflow) appear above the editor window, for easy reference. It also shows the amount of available time left for completing the task. This information is followed by a Title field and a Meta Description field for the blog post that will be created. The editor window appears next and offers the exact same standard tool set found in a WordPress installation for blog posts.
The name of the source article being reviewed automatically appears in the editor window as a link to the URL of the source article, and the keyword being promoted via the blog post also appears with a link to the customer's web site page that the blog post is supporting. So the worker is presented with an editing window that include the title of the article he is reviewing and the keyword for which he is writing. This way, he doesn't have to create the links; that task has been done for him already. All he has to do is use the editor to write the abstract or article around those links.
When the worker completes the writing assignment, he submits the post for publication.
Next, the pre-assigned editor for this workflow sees the task appear on his workflow page. He then sees the same split screen the first worker saws, where he can edit what was written as needed. Unlike the first worker, the editor gets a different submit button that publishes the post live on the blog associated with the workflow via WordPress's [url removed, login to view] connection. The editor also has the ability to schedule the blog. See Scheduling class.
Scheduling class – Allows blog entries created in the workflow process to be scheduled for WordPress publication by the second worker who does the editing. Scheduling suggestions are made by the system based on frequency parameters set in the Blogs class, but the editor can override these default entries on a per-task basis.
Reporting class – Available reports include:
1. Customer report, showing work completed (# of posts, costs) for each blog we manage for the customer, for a selected time period.
2. Worker report, showing breakdown, by worker, of work completed, cost per task, total cost, and amount paid, for a selected time period.
3. Report that creates .csv file for submission to PayPal mass payments, for a selected time period.
Other requirements –
1. All MySQL queries must utilize the sprintf and mysql_real_escape_string functions built into PHP to block SQL injection attacks.
2. Minimum screen size of user's monitor is assumed to be able to display at least 1024 x 768 resolution.
3. Applicants can sign up for a worker account on their own, with email verification. Once signed up and verified, they can select one task only from any available workflow that has been assigned to worker pools. This becomes their “tryout” where they can demonstrate their ability to write abstracts. Once they've “tried out” by completing a task, they get a message stating that their work will be reviewed and that an administrator will get in touch should we be interested in hiring them on a more permanent basis. No other tasks are offered to them until their account is upgraded to worker status or higher.
4. I get full rights to the source code you create.
5. The source code is the main "deliverable". I will install it on our server after it has been tested. If you need me to provide a test server upon which you can develop the code, please let me know before making your offer to work on the project.
6. In order for you to be accepted for the project, I must see a sample of your PHP/MySQL coding that shows your ability to write simple, well-documented code, broken into appropriate classes, functions, and include files. I don't care what the code does. I just want to evaluate how well you code.
7. To prove that you are reading this specification in full, please send me a private message that includes the words "blue heron" separate from your bid.
8. If there are libraries you want to use that are not generally included in a "standard" PHP installation, please check them with me first.
9. No low-ball or "placeholder" bids will be considered. Your bid on scriptlance is considered final.
10. I will pay special attention to bids that include shorter time frames for project completion.
11. I prefer to use escrow payment system.
Please contact me with any questions you might have.