Skip to content
ximanta edited this page Apr 7, 2017 · 8 revisions

Zynla Logo

Quenching thirsty minds

Introduction

Zynla is an online collaborative information sharing and learning platform. Zynla is a place where you can find the Webs best answers from friends, experts, and communities all within the topics you love.

Objective

To create a collaborative platform harnessing the power of technological innovation to usher in a paradigm shift in learning.

Background

Based on research, one primary design problem of learning platforms is its solitary nature. Learning take the form of an isolated interaction among the user and the underlying platform. Due to this drawback, learning platforms lack in movement, action, or change, especially in an undesirable or uninteresting way. Such platforms overlook the dynamic nature of knowledge delivery and the experience of subject matter experts, which is useful for offering a more accurate solutions. The second inherent problem is one-size-fits-all search engines that play a pivotal role in learning. means that irrespective of having different preferences, users get the same results when they use the same query.

Zynla is a first of its kind collaborative learning platform that you can ask, search, and answer questions as a team - a team spread out globally.

And if we have missed to mention, Zynla is also a way to make friends.

Goals

  • Minimize time to find relevant answers
  • Take advantage of diverse experience and expertise levels of community members on a subject matter
  • Take advantage of similarity and repetition of queries of communities as a source of recommendations
  • Leverage the power of social networking in the learning space
  • Contribute knowledge for free to the world

Use Cases

  • Health/medicine: We needed to find information about iron deficiency and hypokalemia
  • Academic projects: We are looking for reference footage and images for a school project
  • Travel: We are planning a trip to Alaska and all the details that go into it for a group of 10 of us
  • Shopping: We are looking for a used car
  • Entertainment: We are searching for music on YouTube and lyrics
  • Home/family: We are searching for a line of descent traced continuously from an ancestor (genealogy)
  • Finance: We are researching different kinds of e-portfolios
  • Hotels/Restaurants: We are searching for local hotels and restaurants
  • Social events: We are planning a wedding
  • Technology: We are looking for printer parts for our business operation

Features

Zynla arranges everything under the sun under high-level categories, such as Technology, Entertainment, Sports, Art, and Photography. Categories contains topics, and each topic can contain zero-or-more subtopics. In short, the entire knowledge graph of Zynla is composed of interconnected tree of nodes. You move down the tree for more specific topics and laterally for related topics.

Zynla uses the concept of Card. A card is created when a user asks a question under a topic. But, under the hood, there's lots more happening. We would cover the internals moving ahead.

Features included in this release of Zynla:

  • Select categories of your interest and expertise
  • Get Card feeds arranged at your home page based on your preferences
  • Ask a question on a topic to create a Card.
  • Answer the question of a Card.
  • Select other questions to which your answer applies
  • Search Cards under topics and subtopics
  • Accept one or more answers of your Card
  • Follow and Un follow Cards
  • Follow and Un follow topics
  • Follow and Un follow users
  • Like or dislike a Card
  • Report a Card for violation
  • Send invite to a user to follow a card
  • Send invite to a user to follow a topic
  • Manage your profile

Technology Stack

Zynla is built on top of the Mongo-Express-ReactJS-Node (MERN) stack with Neo4J as the graph database. Our application is based on the n-tier application architecture.

Presentation The front-end of our application is a Single Page Application (SPA) developed using ReactJS. As we are using ReactJS, we have a highly modular component-based architecture. Our UI make use of a large amount of data – be it user data or any data required for the functionality of the application. We have taken full advantage of React’s one-way data flow to implement state management capability of data for the UI components.

Middleware: We used NodeJS as the server-side platform and Express as the Web framework on top of it. Our application is data-centric and performs a considerable amount of database read-writes. The single threaded event loop of NodeJS backed by event-based asynchronous support of NodeJS made lots of difference in terms of database I/O related performance.

Microservice: Microservice is one interesting part of the product that changed how we look at applications from architectural design point of view.

During development and testing we were making lots of changes in the Search service of our application. We tried to make it more efficient and constantly measured its performance through load testing of the route. And then refactoring the search algorithm and database queries. Very quickly, we realised that Search is one service that will continuously evolve, and get optimized in future releases too. Also keeping the scalability factor in mind, it became apparent that we cannot run the Search service on our HTTP server. We cannot afford to stop our HTTP server each time the Search service is updated. This is where Seneca Microservice steps in.

By moving the Search Service out of the HTTP server, we could solve two primary challenges. :

  • First, if any change in business logic happens, we can monitor the new implementation in production, and if working as expected, we can completely switch to the new Seneca Microservice, and discard the old one– all without any server downtime.
  • Secondly. If we experience high user load at peak hours, we can start up multiple Seneca instances to parallelly keep serving Search requests.

Data Storage:

Zynla have different data storage requirements. We could not found a fit-for-all technology that address all the data storage requirements of Zynla.

We took ahead the idea of Polygot Persistence that any decent sized enterprise will have a variety of different data storage technologies for different kinds of data. We concluded that picking the right databases for the different requirements may be more productive than trying to fit all storage requirements of Zynla into a single data store.

We used:

  • MongoDB to store user information as JSON documents.
  • Neo4J to store our graph ontology divided into Concept and Intent graph.
  • Redis to store the concepts and intents from Neo4J when the application starts.

Backlog

  • Suggested question algorithm should be enhanced.
  • Unfollow user and a topic
  • Unfollow cards in landing page.
  • Drag and drop issue should be solved (Known bug)
  • Validation should be done in posting a question to ensure the question is in correct domain.
  • Login with Instagram is not provided with emalid.
  • The verification code send to email should be expire after specific period, say 5 minutes.
  • User should be able to Modify the categories which he selected at the time of signup
  • User should upload his/her image from local machine
  • User should unfollow a person and topic
  • Zukti integration

Meaning of Zynla: Zynla is word without meaning that has the potential of creating huge impact, when associated with a meaning.

Clone this wiki locally