You have chosen to sponsor your bid up to a maximum amount of .
"ShareIt" is the codename for a simple image sharing service and API. The images are posted from several mobile and web apps, in a similar fashion to Instagram. The web app saves the image, then generates a short URL which you can email to other people so they can view the image. This Freelancer project encompasses only the Web API for user login and uploading, and four simple web views.
2. LOGIN DETAILS
Images may be uploaded by several different mobile and web apps. If the user is not logged in, a mobile app will either attempt to log in or create a new user. We prefer OAuth, but any relatively secure method is fine.
2a. When creating a new user, the mobile app will present two pieces of information: a Name and an email address. The web app should return a success code, and then send a verification email to the email address. If the user does not click the link in the verification email within 48 hours, the account should be deleted. When the user clicks the verification link, it should store the date of verification in the database.
3. UPLOAD DETAILS
Once the user is authenticated, an app may upload an image at any time. There are two workflows: Web App and Mobile App. Both types of apps will upload the following fields to the Web API:
1. Item name
2. The picture, either JPEG or PNG
3. A text description (may be JSON)
4. The MIME type of the text description
3a. The Web API should generate a unique six character string using the letters A-Z, a-z and 0-9 (for example, "gK5e9Z"
3b. If the picture is larger than 700x700 pixels, the Web API should shrink it to fit within 700x700. If the image is not JPEG, it should compress it to JPEG at 70% quality. The Web API should rename the image using the unique name, and put it in a subdirectory, for example:
3c. The Web API should also resize the image to fill a 128x128px square, to create a thumbnail of the image. It should store this with the same unique name:
3d. The Web API should store all of the information provided by the client app (with the exception of the picture) along with the current date.
The Web API should return the following to the client:
1. Success / error code
2. If successful, the timestamp of the upload
3. If successful, a short URL using the unique string (like http://example.com/gK5e9Z)
4. "WEB VIEWS" DETAILS
ShareIt should present four simple web views. I have provided a PDF containing wireframes for each of the four Web Views, as well as HTML templates for each page. You can use these templates directly—please do not bother styling the pages with CSS. We will take care of designing and styling the pages.
4a. Screen #1 ("Item Landing Page").
URL: http://example.com/gK5e9Z (item's unique string)
• Clicking the Share button should cause the ShareIt back end to send an email to that user encouraging them to visit the current page. It should also increment a value for that item which indicates the number of times it has been Shared.
4b. Screen #2 ("Login page").
This is a very simple form with an entry for the email and password to a ShareIt account. The "Forget?" button should send the user an email with a link to reset their password. It should not send them their password in cleartext.
4c. Screen #4 ("My Account" page)
This page lets you change your Name, upload a new Profile picture, and reset your password. The profile picture should be resized to fill a 128x128 px square, and stored using the user's ID, such as:
We would prefer to use PHP and MySQL. I have included suggested table setups for MySQL.
We are not in a rush, but the sooner the better.