Back to Programs

End user applications

Oppia Foundation

Free platform for interactive, tutor-like lessons

angularapache beamfrontendgoogle app enginejavascriptpythontypescript

Participation history

11 GSoC years

2026

7 projects

Official year page

1.3. Re-design the topic page

This project focuses on redesigning the Oppia Topic Page to make it more intuitive and easier for learners to navigate. Currently, lessons are...

3.1. Improve acceptance test infrastructure

This project aims to improve Oppia’s acceptance test infrastructure by migrating existing tests from Puppeteer to Playwright to enhance stability,...

1.2. Learner assessments

Learners are currently recognized for progress at the individual lesson (exploration) level, but there is no structured way to celebrate or assess...

Support for Lesson Progress Study Guides and Worked Examples

The Oppia Android app is missing three features that the web platform already has. Learners have no idea how far they are in a lesson, revision cards...

1.1. Web user feedback

Currently, Oppia’s feedback system is disjointed. Users can only submit lesson-specific feedback through the lesson player, which does not allow for...

Extend translation infrastructure to exploration metadata and skills

Currently, Oppia translates non-user-generated content via translatewiki and some user-generated content via the contributor dashboard. This project...

Streamlining Release Automation

Oppia Android's release process currently relies on a 17-page manual document that release coordinators follow step-by-step, covering everything from...

2025

6 projects

Official year page

Lesson Player Redesign

Oppia's Exploration Player has several issues affecting the learning experience. Learners struggle to distinguish between hints and solutions, and...

Acceptance Tests

In order to streamline releases, we are planning to ensure that all critical user journeys (CUJs) on the Oppia web application are covered by...

Android lint infrastructure and fixes

The Android build ecosystem includes a robust linting tool designed to detect Android-specific issues that general-purpose linters may overlook....

Clean up the structure for study guides and worked examples

Currently, the study guides are made of a single long monolithic content field which makes it hard for the learners to focus and difficult for the...

Flashbacks

The current app experience can be frustrating for learners who are redirected to earlier concepts for revision after making a mistake, as they must...

Platform Parameters Dashboard

The Platform Parameters Dashboard project aims to enhance Oppia Android's developer options by introducing a user interface for managing platform...

2024

7 projects

Official year page

Make CI and pre-push hooks more efficient.

Currently, Oppia has a pre-push hook which runs frontend unit tests on all files and lacks any backend unit tests in the pre-push hook which can lead...

Add Compelling Parent-Teacher, Volunteer, About Pages

Oppia's current Volunteer, Parent-Teacher and About pages currently lack the engagement and clarity needed to effectively convert visitors into...

4.1. Code coverage support and enforcement

This project entails introducing support for measuring code coverage for all Kotlin files in the Android codebase with Bazel, with any support gaps...

Infrastructure and navigation for multiple classrooms

Oppia currently features a classroom page for Math lessons, which is prominently accessible via the home page, navigation bar, community library, and...

Enhancing Software Quality through Acceptance Testing in Oppia.

The Oppia development team is looking to enhance the quality of their software by implementing Acceptance Testing on the develop branch. The problem...

Multiple Classrooms Support

The app is currently limited to displaying a single list of basic numeracy topics. Together, these topics comprise what we call a 'classroom'. With...

Improvements to the exploration editor page

Currently, for trivial changes to lessons in Oppia, lesson creators cannot update translations in a convenient manner, it is a very tedious and...

2023

5 projects

Official year page

Improvement to translation reviewer experience

Presently, reviewing translations is a tedious task for translation reviewers, mainly due to the current workflow of the contributor dashboard. This...

Contributor Dashboard Admin Stats Table

A redesign of the admin page for the contributor dashboard. The new design will include a table view of all contributors, with important statistics...

Improve Accessibility

With this proposal, my aim is to make Oppia's learner-facing pages more accessible by by learners having any form of disability. My suggested method...

Serial Chapter Launch

The aim of the project is to implement launching of chapters incrementally and sequentially, to avoid the large time gap when publishing a topic as a...

Dockerize Oppia

The objective of this project is to streamline the installation of Oppia's development server by utilizing Docker to containerize the application....

2022

14 projects

Official year page

Learner Diagnostic Tests

Each learner that comes onto Oppia’s platform has a different level of experience and comprehension within a given subject and some of them have...

GSoC 2022 Proposal -- Fix validation errors (HITESH TOMAR)

In this proposal, I have proposed a fix for some validation issues that have been accumulated. I will be using beam jobs to solve these validation...

Interactive Onboarding Flow

The current onboarding workflow that the Oppia Android app offers is not intuitive enough. Users get confused or spend more time than necessary...

Helping learners when they get stuck.

'Helping learners when they get stuck' aims to implement numerous improvements to make the core learner experience more adaptive, effective and...

Contributor Recognition Infrastructure

This proposal focuses on building a system that shows users their “impact”, modeled using points for completing tasks that ultimately provide value...

Improve Frontend Type System

Oppia frontend codebase is fully typed, but our typing doesn’t yet pass strict TypeScript checks. This means that variable assignment, procedure...

Blog Integration

Oppia.org's blog is currently hosted on "Medium." I'd want to have the blogging interface on Oppia.org, so it's integrated with the rest of the site....

Learner Group MVP

The aim of the project is to make it possible for teachers, tutors, and parents to support students who are using Oppia to learn. To solve this we...

Making the Contributor Dashboard UI Responsive

The Oppia Contributor Dashboard allows users to submit suggestions for translations and practice questions, which are then reviewed and...

Improving the lesson creation experience [part(a) + part(b)]

The aim of this project is to provide two enhancements to the exploration editor page (for creating lessons) for lesson creators: (a) Development of...

Celebrating learners' accomplishments

This project is centered around enhancing the experience of playing through explorations -- Oppia's lessons, which are the primary means of learning...

Make backend code typed

Last year oppia introduced python typing using MyPy (static type checker) in the backend codebase, but currently more than half of the backend...

Migrate the exploration editor page to Angular, and move the entire frontend to the Angular CLI

The goal of this project is to migrate the exploration editor page from angularJs to angular. Users will be able to experience faster page...

Migrate Away From Protractor

The Angular team plans to halt Protractor development at the end of 2022. The aim of this project is to set up the WebdriverIO with Github Actions,...

2021

18 projects

Official year page

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...

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...

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...

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,...

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...

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...

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...

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....

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...

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...

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...

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...

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...

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...

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...

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...

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...

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...

2020

12 projects

Official year page

Frontend testing of controllers and directives

Increase unit tests coverage of AngularJS and Angular 2+ frontend controllers and directives to 100%.

Revamping Math Interactions

This project aims to add three new math-based interactions. They will replace the current math interaction which is buggy and provides only one rule...

Support tablet interfaces for Oppia android application

A lot of parents tend to buy their kids tablet devices to help them learn new things through educational apps. Oppia is one of them, but it doesn't...

Make Oppiabot More Useful

Oppia uses a bot to interact with developers when issues and pull requests are made. This Project aims at improving the functionalities of the bot,...

Android Interactions

In this project i will be focusing on adding some more type of interactions which will result usage of android app along with them i will adding one...

Fix the linter and implement all lint checks

The Oppia development workflow uses lint checks to help detect style errors before they reach the review phase. This project aims to refactor the...

Add SVG Editor to RTE

Diagrams and figures aid in learning and understanding concepts better. Giving creators the ability to draw images for the lessons would allow...

Analytics Support

The projects aims at incorporating Firebase Analytics and Crashlytics into Oppia's Android application to send usage data to a central location while...

Generating SVG images for math expressions

This project aims to introduce SVG rendering for all LaTeX expressions in explorations, so that MathJax can be removed as a dependency from the...

Ensure that Oppia is Fully Accessible

This project will improve Oppias ability to support users with physical, visual, or hearing disabilities. It aims to fix any issue caught by audits...

Solve all typescript and webpack issues in the codebase

The aim of this project is to complete all remaining typescript and webpack tasks in order to ensure a smooth development workflow. In particular: ...

Editor Page Redesigns

The aim of this project is to redesign the topic, exploration, story and skill editor pages so they are more visually appealing and work better on...

2019

4 projects

Official year page

Static Serving

Currently, Oppia is serverside rendered using the jinja templating engine. This poses some performance issues since each time a page is being loaded,...

Review tests and other improvements to the questions framework

This project aims to add review tests and improve the current question framework. After this project, review tests will be shown after going through...

Improve back-end test coverage and upgrade it to support Python 3

This project aims to improve backend test coverage to 100%, and then migrate the backend codebase to be simultaneously compatible with both Python 2...

Asking students why they picked a particular answer

A feature to the lesson player that allows students to explain how they arrived at a (wrong) answer. The aim of this feature is to encourage...

2018

7 projects

Official year page

Rich Text Editor Upgrade

The aim of this project is to upgrade Oppia’s Rich Text Editor (RTE), which authors use to create lesson content. The current RTE, based on...

Generalized Review System

This project aims to introduce a system to introduce a suggestion-review system which would allow the community to contribute to the content on...

New Interactions project.

This project aims at implementing two new interactions- Number with Units and Drag and Drop Sorting interactions. It will create a new learner...

Lesson Translation Dashboard

A lesson translation dashboard for oppia's audio translators. This dashboard will help audio translators to do translation in a much better way....

Add Functionality for Skills

This proposal aims to add a new Skills construct at a global level that would replace the existing refresher explorations method that is employed for...

Improving the development workflow

The project, improving the development workflow, emphasizes on the following aspects: Reducing the reviewer time by automating lint checks and tests...

Visualizing Learner Playthroughs

The aim of this project is to provide lesson creators a tool for visualizing how learners play through their explorations. In particular, it would be...

2017

3 projects

Official year page

Integrating and applying machine learning to the code interaction

The aim of this project is to create necessary infrastructure so that machine learning algorithms can be efficiently trained and prediction can be...

Learner Dashboard

The primary goal of this project is to engage the learners in a long term learning relationship with Oppia by providing them with their personal...

SiteWide ACL Refactor

The project is about replacing the current pseudo Role based Access Control System of oppia and replace it with Action based Access Control System