== Please only apply if ==
- you can work at least 30 hours a week
- you can work during 9am-1pm PST timeframe (the rest of the time you could work on your own schedule)
- you are independent contractor
- you have experience being a lead developer on non-trivial projects
== To apply ==
Respond with either a quote on how much the prototype described in the following lines would cost, or with questions that you need to ask before giving such estimate. All responses without either a quote or a specific question ("can we talk on Skype?" is NOT a specific question) will be IGNORED
== Initial task ==
We need an API that will power the mobile app used to bookmark websites and group them into groups called 'clustirs'. You would start by creating a very simplified version of such API in your favorite PHP framework, that would support the following 4 methods over JSON:
Create a Clustir
This method will add/create a new clustir in the database when given the following:
Inputs:
• Clustir Name
• Clustir Description
• Owner Id
• Subdomain
• Icon
• Privacy (Public/Private)
• Topic Id (folder/location where clustir will reside)
Outputs:
• Clustir id
• Subdomain (returns the same subdomain entered if this subdomain is unique)
• Date Clustir was created
Add object to a clustir
When using this method, there are two scenarios:
- you're adding an object to an existing clustir
- the clustir doesn't exist yet, so you have to call the other method "Create a clustir" before adding an object
This means “Clustir id” (wherethat object will be "connected to") is required for an object to be created.
Inputs:
• Clustir id
• Object Title
• Object Type (website, app, post, photo, audio, video, post, book, Q&A)
• Object URL (for websites, and apps, posts, photos, audios and videos, books, Q&A found online)
• Object File (for posts, photos, audios, videos, and Q&A uploaded from the phone/browser).
• Object Description
• Optimized for Mobile (boolean value whether website is mobile-optimized)
Outputs:
• Object id
• Date Object was created
Search/List existing clustirs
This method will display a list of public clustirs and relevant information to each one.
Inputs:
• Search String
• Token (only authorized/logged in users can perform search)
• Scope (all clustirs, person's clustirs)
• Sorting (alphabetical by name, chronological by most recent date, numerical by most number of objects)
Outputs:
• Clustir Name
• Description
• Clustir's Subdomain
• Owner
Retrieve Objects from Clustir
This method lists all objects (and pertinent data for each) belonging to a clustir. Output is a multi-dimensional array/nested JSON:
Inputs:
• Clustir id
• Auth Token (if clustir is public, auth tokens can be from any registered user, otherwise, if it's private, only the owner's auth token is accepted)
Outputs:
• Object id
• Object Name
• Object Description
• Object Type
• Object Icon
• Number of Comments
• Number of Likes
• Popularity