Friendarin homepage

Friendarin is designed to make learning foreign languages as easy as possible. The users can learn English, Mandarin Chinese, and Russian. There are lessons, learning games, flashcards, quizzes and exercises for all different skill levels and have put together a large number of resources to ensure that the users can learn a language in a way that suits them.


Why Drupal was chosen: 

The requirements for this project were quite specific. The main goal was to build a website that could be easily maintained. New content will be added frequently so we needed a strong content management system in place. We at KnackForge offer a unique combination of creative web design with application expertise for developing Drupal based websites. So we chose Drupal to speed up the development by leveraging the potential of contrib modules likes quiz, course, commerce, etc.

Describe the project (goals, requirements and outcome): 


The goal of the project was to create a responsive website that allows the users to interactively learn foreign languages with ease.

Multilingual site

Friendarin is multi-lingual site, so switching between Languages should be made easier. For making Friendarin a complete multi-lingual site, we utilized the i18n(Internationalization) module. The client wanted to change Strings whenever necessary, so we used the Stringoverrides module, which allows to replace the existing Strings without much complexity.

Log In and Register

One of the main goals is to get the users registered at Friendarin. So it is necessary to have the registration page quite simple. To make things much more easier for the user, we have the Log-in and Registration forms put together in a single page.

Sign in and sign up

Courses and Quizzes

Friendarin is e-learning site with loads of study materials and exercises. We at KnackForge offer professional support for Quiz, so to add these exercises we made use of the Quiz module. The site required many different type of Quiz question types with specific requirement, so we made the required customization to the Quiz question types, so that users find it easy to take up the exercises.

Course and quiz

One of the major requirements of the site is to add the study materials and exercises within a sub-lesson, and these sub-lessons are added to their corresponding Lesson. Then these Lessons grouped as Courses. For this purpose, we made use of the Course module. To implement this, we have nested the course(sub-lesson) inside course(lessons). It is also important to show the Courses and Lessons in an intuitive way, so we implemented this functionality using the Views module. While showing the courses and lessons using Views, the courses and lessons are filtered according to the Language. The user should be able to select the Language, so Languages are shown using Views exposed filter. By default, views exposed filters are shown as Select boxes, but that was not the requirement from client, as the Language options were to be shown as Language flag icons.

Subscription and Checkout

Friendarin is completely free at present. But the users can access only some sample lessons without any Subscription. To add Subscriptions to the site, we made use of the Commerce module. The users won’t be pleased to go through a tedious Checkout process, so we made the Checkout process to be simple with just a click of the Subscription button in the Pricing page.


In the main menu, the user has access to Notifications dropdown box. The notification box is used to show information about newly added courses and lessons. It also shows information about the subscription plans and their validity. We also have a notification badge at the top of the notification icon, which displays count of unseen notification. The notification dropdown box had been implemented using a custom block. When the subscription validity is about to expire, then there is a notification shown to the user regarding the validity. This functionality is implemented through the Rules module.



One of the important goal of Friendarin is to be Responsive. The users will visit the website using a variety of devices, so the website has to adapt itself to different resolution of these devices. We created a sub-theme of Bootstrap to meet the requirements of the website and make it responsive.



The most important feature of any website is to load quickly. So to optimize optimize the site, we have set up Memcache. We also activated the default Drupal's cache, CSS and JavaScript aggregation, and turned on Views caching. We have also performed necessary load testing to ensure that our servers will withstand the anticipated traffic using ApacheBench loading testing.


Here is the list of some important functionality requirement and their method of implementation:

  • The website should be Multilingual, since it is Language learning website. The i18n(Internationalization) module was used to meet the requirement.
  • The users should be able to easily register and login to Friendarin. Each user should have a Accounts page where the user can see their quiz scores shown as per the language, subscription status of the user, and resume button for resuming from where they left last time,and edit their preferences of the website. These requirements were implemented by theming the User profile page.
  • A notification mail has to be sent to the user, when the user registers to Friendarin, and when the user subscribes to any plan in the website. For this purpose, we made use of the Rules and SMTP modules.
  • In the homepage, we have a two criteria search form for searching Courses based on the user native language and target language. So we created a custom search form for making the process of searching for courses easy to the users.
Why these modules/theme/distribution were chosen: 
  • Commerce module was used to create Subscription plans, so that users can subscribe to the plan they prefer and start accessing all the lessons for subscribed users
  • Course module is used for creating Lessons, which consists of learning material and exercises as Course objects
  • The Lessons are grouped together as Courses, so the Lesson needs to reference to the Course name under which they appear. For making this reference work, we are using the Entityreference module
  • We are using jPlayer module to play the audio files uploaded in the website
  • The lang_dropdown module is used to switch between the languages using a dropdown box
  • Memcache module is used for effectively caching the data
  • To create different types of exercises in a Lesson, we are using Quiz module
  • Rules module is used for creating certain actions when some event occurs
  • We utilize the SMTP module for sending notification mail to users
  • Friendarin is a responsive website, so we created a sub-theme of the popular Bootstrap theme


stratos’s picture

I wonted to look at your solution, because I am working right now on quiz module for my site, but it seems to your quizzes doesnt work.

Did you find any problem with bootstrap quiz theming?

Sivaji’s picture

@stratos, please write us at to see how we can help you.

Sivaji J.G,
Solution Architect, KnackForge, buy qualified Drupal Themes.

stratos’s picture

My problems are mainly related with many bugs in 7.5 version of quiz module, so I decided for stable 7.4 version and working on it.