A free, online learning platform for making quality education accessible to all

Oppia Foundation

Oppia's mission is to help anyone learn anything they want in an effective and enjoyable way.

By creating a set of free, high-quality, demonstrably effective lessons with the help of educators from around the world, Oppia aims to provide students with quality education — regardless of where they are or what traditional resources they have access to. We work to ensure every student, regardless of their situation, gets the education they deserve.

Our stack

Oppia develops on multiple platforms. We have the main website which includes backend in Python and Google Cloud platform and a frontend that is implemented in Angular 2+. Then we have an Android application that is still in its alpha phase. Lastly, we have Oppiabot which is written in probot framework (NodeJS) that helps us with our development flow.

lightbulb_outline View ideas list


  • angular
  • python
  • kotlin
  • css
  • typescript


  • Web
  • education
  • web
  • interactive
  • nonprofit
  • community
comment IRC Channel
email Mailing list
mail_outline Contact email

Oppia Foundation 2021 Projects

  • Ashutosh_Chauhan
    Angular Migration
    This project aims to introduce frontend routing in oppia using the angular router. This will replace the current backend routing system which uses...
  • Yash_Raj
    Developer Options Menu
    The project aims to introduce Developer Options to oppia-android. There are many instances when a developer needs to make some database related...
  • Farees Hussain
    End-to-End Testing Support
    End-to-End Testing Support Oppia Android's current testing corpus includes unit tests using the Robolectric testing framework & integration tests...
  • Nikhil Agarwal
    GSoC 2021 Proposal -- Implement schema validators for the handler params (Nikhil Agarwal)
    The project requires to build an architecture for validating args of handler class. After building the architecture, some of the handler class in the...
  • Arjun Gupta
    Implement feature flags & platform parameters
    This Project aims to help the developers in the Oppia Android team build features, solve issues and commit them into the develop branch without...
  • Apoorv Srivastava
    Implement lightweight checkpointing
    Oppia's lessons can require between 15 minutes and an hour of time depending on a number of factors from learners: understanding of the material,...
  • Aryaman Gupta
    Improve Exploration save flow: Syncing edits in the background
    This project enables the edits made by the creators in the exploration to sync in the background so that the two creators can easily work...
  • Eesha Arif
    Improve Frontend Type System
    Oppia uses Angular as the frontend framework with typescript as the primary language, hence this codebase is fully typed which implies that variable...
  • Mridul
    Improving Front-End Typed System
    The proposal shares product and technical design for the project idea "Improving Front-End Typed System" under Oppia-web. The current codebase...
  • Rijuta Singh
    Integrating the Oppia blog with Oppia.org
    Currently Oppia.org hosts its blog on a separate blogging site, "Medium". I would prefer to have the blogging interface directly on Oppia.org so that...
  • Abhay Garg
    Introduce Support for Displaying Copyright Licenses
    This project aims to introduce support for displaying the Copyright Licenses of the third-party Maven dependencies used to build the Oppia-Android...
  • Hardik Katehara
    Make backend code typed
    This project aims at adding strict static type checks to Oppia codebase. In this project, static type checking will be done with the help of Mypy....
  • Radesh Kumar
    Migrating AngularJS components and Writing Frontend Tests
    My most favorite thing about Oppia is its Test-Driven-Environment. All these tests (FE, BE, E2E, Lint) will ensure that no new error or bug will be...
  • Aditya-Dubey
    Move custom JS\TS lint checks to eslint
    The project aims to migrate all the JS\TS linter checks written in python using raw parsing algorithms and regex pattern checkers to custom eslint...
  • Krishita Jain
    Redesigning and Updating the Learner Dashboard Page.
    Oppia brings forth a platform to conduct comprehensive courses in the form of classrooms. A classroom contains many different topics in it. At...
  • Sparsh Agrawal
    Static Analysis Checks + Improvements
    One key part in ensuring a development team reaches optimal efficiency is by ensuring there are reasonable checks in place to avoid regressing...
  • Aishwary Saxena
    Write Frontend Tests
    This project aims to write frontend tests to fully cover each service, directive, and components in order to ensure that the quality of code...
  • Gangavarapu Praneeth
    Write Frontend Tests
    The purpose of unit tests is to validate that each unit of code is performing as expected. This ensures a bug-free experience for the users and that...