Assignment
Web Developer
If you have directly landed here, and have questions about this whole “assignment” thing, you may read this first!
The purpose of this programming challenge is to check if you can write quality code.
Programming Challenges
Twitter-Timeline Challenge
Note: If you’re not able to obtain a developer account within the stipulated time then please attempt the video-encoding Challenge.
We have divided the assignment into 3 parts to help define the objectives for each accurately. It is necessary to complete all parts in order to complete the challenge.
Part-1: User Timeline
- Start ➞ User visits your script page.
- The user will be asked to connect using his Twitter account using Twitter Auth.
- After authentication, your script will pull the latest 10 tweets from his “home” timeline.
- 10 tweets will be displayed using a pure CSS and Plain JS slideshow.
Part-2: Followers Timeline
- Below the slideshow (in step#4 from part-1), display a list of 10 followers (you can take any 10, random followers).
- Also, display a search followers box. Add auto-suggest support. That means as soon as the user starts typing, his followers will start showing up.
- When the user will click on a follower name, 10 tweets from that follower’s user timeline will be displayed in the same slider, without a page refresh (use AJAX).
Part-3: Download Followers
- There will be a download button to download all followers of any user (we will input user @handler).
- The download can be performed in one of the following formats i.e. You choose the format you want. It would act as an advantage if you give the option to download the followers in all the following formats: google-spreadsheet, pdf, and XML formats.
- For the Google-spreadsheet export feature, your app-user must have a Google account. Your app should ask for permission to create a spreadsheet on the user’s Google Drive.
- Once the user clicks the download button (after choosing the option) all followers of the specified user should be downloaded.
Please note that we are aware of Twitter API limits for retrieving tweets/follower’s data although you have to overcome these by thinking outside the box like we do at rtCamp.
Video Encoding Challenge
This is more like building your own YouTube. ?
Please create an interactive JavaScript/React app which has:
- Upload: Option to upload video in any format. Since videos are large, the uploader should show progress.
- Convert: On successful upload video, the server-side (PHP) process should encode video into mp4 format in the background. Basically, after the video upload is complete, a user will simply close the browser. But when they come back later they should see video available in multiple formats. You can use FFMPEG to encode videos.
- Thumbnail: For videos that are successfully converted, display thumbnails like YouTube homepage shows. Once anyone hovers on thumbnails, a small GIF should play automatically so people can see the content of the video without watching the entire video.
- Watermark: For uploaded video — a user can provide watermark text — give an option for the user to specify text — and use user-provided text to add that in the video as watermark.
- Transformer: Give option for a user to rotate video 90, 180, or 270 degrees in clockwise as well as anti-clockwise format.
Submission Guidelines
Before you begin, please note down our common submission guidelines applicable to your challenge.
- Web Hosting ➞ For all the coding challenges below, you will need a web host to showcase your working demo. You can use free web hosting for your demo. Microsoft Azure, Google Cloud, Amazon AWS – all offer a free trial plan. You can use any of these cloud providers or simply any free web hosting.
- UI Framework ➞ Use Twitter Bootstrap for the frontend user interface. If you’re good at CSS then don’t use bootstrap or any other CSS framework and mention that in the assignment(this will be considered as a plus point). Make sure what you create looks nice!
- Responsive ➞ Your code must work on mobile devices like iPhone/Android nicely. They should support swipe and other gestures wherever possible.
- Code Organisation ➞ Use Git and GitHub from the start of your challenge. All 3rd party codes, libraries must be inside the lib folder. No unwanted files e.g. IDE files, temporary files should be committed on git-repo. (Hint: Write a nice .gitignore)
- Coding Standard ➞ You can use PHP Code Sniffer and JSHint on localhost. Additionally, you can configure scrutinizer-ci so your code quality can be seen easily.
- Unit Testing ➞ You should use the PHPUnit testing library. You should integrate Travis or any other CI to run points 4 and 5. This will be considered as a plus point and would be given priority in sorting.
- GitHub Readme ➞ Write a nice GitHub Readme using markdown syntax. Make sure you include demo links, links to libraries, and CI badge used in the readme.
All above is a must. Failure to meet any of the above guidelines will result in disqualification.
Have Questions?
We request you to read FAQ here first.
You can use this Github discussion forum to ask questions.