Cultural Survival — a project overview

Blueprint
Blueprint
Published in
8 min readMar 20, 2023

--

Cultural Survival advocates for Indigenous Peoples’ rights and supports Indigenous communities’ self-determination, cultures and political resilience since 1972.

Cultural Survival envisions a future that respects and honors Indigenous Peoples’ inherent rights and dynamic cultures, deeply and richly interwoven in lands, languages, spiritual traditions, and artistic expression, rooted in self-determination and self-governance.

‘Advancing Indigenous Peoples’ Rights & Cultures Worldwide Since 1972'

Blueprint’s mission with Cultural Survival is to advance the accessibility for two of its key programs: radio content and grants.

  • Radio content brings Indigenous communities the latest information on Indigenous Peoples’ rights and how they are being implemented around the world. Their content is offered in various Indigenous languages, and consists of public service announcements, reports on international rights, and the strategies that Indigenous communities are using to make their rights a reality.
  • Grants are offered to groups as a means to fund grassroots organizations, collectives, and traditional governments. The grants include the Indigenous Community Media Fund for radio stations and media outlets, as well as the Keepers of the Earth Fund for community advocacy and development projects. Each grant includes information on the application deadline, eligibility, amount of funding, and how to apply.

The Problem 👩‍🏫

Currently, Cultural Survival distributes its radio programs through physical USB sticks. These radio programs have been distributed to over 1200 Indigenous community radio stations, across 55 countries, and in 140 languages to provide access to radio and podcast content for people in remote locations. However, this distribution is neither effective nor efficient as USB sticks are only produced once a year and the process of distributing the sticks is quite expensive.

Additionally, Cultural Survival features a catalog of grant programs that is difficult for applicants to navigate. Their website only displays a description of their past and ongoing grant partners, which doesn’t include the grant application itself. While they use a Google Form to track responses, this option is limiting as it doesn’t allow applicants to track grant progress.

Ultimately, Cultural Survival’s biggest pain point is reaching Indigenous communities.

The Solution 💡

Blueprint is partnering with Cultural Survival to build an multilingual mobile app that features its radio programs and enables potential grantees to apply for grants. These features will work both offline and online; The idea is to limit the amount of internet connection required by syncing to the app whenever a user is online. The app will allow users to search, download, and listen to podcasts in their chosen language, aiming to replace Cultural Survival’s current method of distributing podcasts via USBs.

Audience 👏

There are two main users involved in this mobile app:

  1. Indigenous communities are the primary users of the app, many of which are non-English speaking. They will be able to listen and download audio, curate a library, and view grant listings.
  2. Cultural Survival admin: The Cultural Survival staff who provide the resources related to radio content and grants. Their abilities on the mobile app are the same as end users, but with the addition of adding, removing, and editing grants.

Features 🆕

There are three main features of this app:

  1. Radio and Podcast Feed: End users will be able to listen, search, and filter through all radio and podcast audio within the app, and then download the library for offline use.
  2. Grant Information Feed: The available grants and information about how to qualify and how to apply will be listed.
  3. Multilingual Capability: English and Spanish language options will be provided, as well as other languages if development time permits.

Technical Overview and Challenge 😅

We are working with Firebase, React Native, and Expo packages.

Firebase + React logo

Our Tech Stack Journey 💫

Many of Blueprint projects are React apps with a Firebase backend because these frameworks streamline our developer experience as students. We’ve had a roundabout journey to settling on these frameworks for the Cultural Survival project too, but learned a lot along the way!

While Cultural Survival currently distributes their radio programs through SoundCloud, audio is not available offline unless you pay for their service. To get around this, we decided to host a Firebase Storage bucket and use a scraper to periodically copy Cultural Survival’s SoundCloud audio into this bucket.

Initially, we added Redux for state management. However, it turned out that with the massive scope of the project, MongoDB might be a simpler framework to use.

An Exploration into MongoDB and Realm 🧗‍♀️

While the offline functionality requirement led us to consider MongoDB and Realm, we realized these frameworks weren’t necessary in the end.

In the fall, we pivoted to using Realm and MongoDB since there was a decent amount of online documentation claiming it is the best choice for offline syncing. However, we reasoned early on in the spring semester that our project may not actually need any offline syncing. After meeting with our point of contact and revisiting project requirements, we realized that administrators would be the only users providing data. In other words, we actually don’t need to track and sync any personal information; This meant that we didn’t need to enable offline syncing for end users!

With Realm and MongoDB no longer relevant, this discovery helped cut a lot down a lot of the project scope that we originally thought was necessary.

For any curious developers, another big reason Realm wasn’t ideal is that it presented many issues during development and deployment. Realm is not supported on Expo Go, a framework commonly used for mobile development that abstracts all iOS and Android native logic away and lets developers build features from the get go. If we had gone down the Realm route, we would’ve been most likely limited to an Android-only app. Since we didn’t find many recent and reliable use cases of Realm and MongoDB Android apps, sticking to Firebase in a React Native Expo Go project was in our best interest. 😅

Design! 🖌

Aside from development, the true magic behind this project can be attributed to our designer, Esther! Shown below is a peek at the home and grant screens. Even though offline syncing isn’t required, we still plan to detect when a user is offline and disable some app functionality, like searching for content as seen on the right.

(left to right) Home tab, Grants tab, offline message handling

Next Steps 🚶

With two months left in the semester, there are a few more steps we plan to take. Our main priority is completing the rest of our statement of work — including full access to radio content and grants.

Looking forward, we plan to integrate multilingual capability. Given the unreliability of Google Translate for some languages, we’re opting to store translations locally. Our plan is to put all static text into a table so it can be changed corresponding to the desired language.

In addition to our custom audio scraper, we also want to handle the addition of new content. Currently, Cultural Survival maintains a RSS feed that provides all the metadata regarding each piece of content. Each time Cultural Survival provides us with a new SoundCloud link, we download it and upload that data into the Google Cloud storage provider. Then, Google Cloud will return a link for that data, which we include into the metadata in our Firebase, the app. Our current plan is to run a recurring CRON job once a week that accesses the RSS feed, but ideally we would like to update whenever Cultural Survival updates their database. We don’t know if this is technically feasible yet, but we will find out!

Key Takeaways 🔑

As the journey of our final deliverable nears the end, we would like to take the time to thank Cultural Survival for partnering with us and providing us with both an amazing learning experience and the opportunity to help Indigenous communities on a global scale!

While we are not done yet, we’d like to share a few key takeaways we have learned so far:

  • Be Sure of What is Necessary Before Development: Oftentimes, we found ourselves ‘over-developing’ or working on features that ended up being scratched. Take the time to take a step back, reevaluate, and make decisions with the big picture in mind.
  • Communicate: We found it incredibly important that everyone knew what was going on for the entire project. This might falter at times because each developer is assigned their own tasks, so it is easy to fall into tunnel vision. However, putting your individual work into the context of the project is how everything in the project aligns and comes together.
  • Personal Growth: While the intuitive thought is to separate work and personal life, we learned that we have to consider what is going on in each other’s lives. In doing so, we found ourselves not only working as a team of colleagues, but a team of friends ❤.

“Last semester, my project leader crafted the environment to be very open. Questions, asking for help, and feedback was encouraged. Each member was included in the project and we were given ownership over each of our tasks. There was an emphasis on integrating new developers (5/6 of us were new!), and coupled with work sessions and spending so much time with these people, I ended up feeling a lot more comfortable and now have the confidence to take on the role of project leader this semester. I plan to do the same this semester and pave this experience forward so that I can continue to foster an environment of inclusion and mentorship.” — David (Project Lead, Spring ‘23)

The Team 💛

alphabetical by first name

Project Leads: David Qing (Spring ‘23), Sofia Howard-Jimenez (Fall ‘22)

Designer: Esther Lee

Developers: Alvaro Ortiz, Akshay Thakur, Emily Sunaryo, Kevin Cai, Miha Bhaskaran, Pragya Kallanagoudar

(left to right, top to bottom) Kevin, Pragya, David, Alvaro, Sofia, Akshay (in spirit), Emily, Miha, Esther

Github

mobile 📲 + audio scraper 🎧

This article was written by Blueprint external member Sarah Peng. If you have any questions or clarifications, email sarah.peng (at) berkeley.edu.

--

--

Blueprint
Blueprint

A team of students dedicated to building beautiful software for nonprofits and bridging the gap between technology and social good. www.calblueprint.org