Gender equality is something every single one of our team members are passionate about, especially in the technology industry where women are a minority. Once we saw gender equality as one of the prompts for this hackathon, we knew this was our chance to empower women. We want to feel comfortable in our skin, and so we sought to unite women through something we can all have in common - our period. By providing menstruation resources, our app aims to support underrepresented groups, including not just women, but also transgender men and those experiencing homelessness.
What it does
codeRED is an Android app that allows users to request or provide sanitary products. At some point, we have all been in situations where we forget our period product essentials, not knowing where to get them or being too embarrassed to ask. Through kind strangers, users can anonymously request for a sanitary product (pads, tampons) or painkillers in these situations. This app also helps transgender men who are afraid to ask and the countless homeless individuals experiencing period poverty (the lack of basic female hygiene products).
By filling out a request form in the app, the user can easily ask for a product, and set a time, location, and an optional message for receiving it. This can be done completely anonymously and the user can even request a contactless exchange, such as leaving a tampon under the third stall of a Walmart washroom. Although we want to implement anonymity, we do recognize that safety is incredibly important. If the user chooses to meet up, there is a randomly generated codeword which is used to confirm the identity of the other user. If the person seems potentially dangerous, the user can ignore the codeword and walk away without consequence.
To help others when they are in need, there is a ‘Requests Near You' screen, which displays pending requests sent within the past 30 minutes, and that are within a one-kilometre radius. It is sorted by distance and time, and app notifications are sent to users within 200m, whenever a new request is added. If a user accepts the request, the sender will be notified and the request will be marked as completed!
Along with the providing and requesting of period products, codeRED has a “Learn” page providing educational resources on choosing sanitary products, menstrual health, and how to stay safe while using codeRED - in hopes of empowering women, transmen, and those suffering from homelessness to take control of their own health as well as fostering a supportive community.
How we built it
Three of our team members had ZERO experience in app development. We had never even heard of XML. We were only familiar with building websites. We took this hackathon as an opportunity to learn and that’s what we did! All of Friday was spent downloading Android Studio, reading documentation and debugging Gradle errors. We thought there was no way we would be able to finish our app with progress going so slowly. By the end of the day we had restarted once, and our progress was just the layout of our app in Figma and a bottom navigation bar that didn't function. Little did we know such slow progress did not mean we weren’t improving.
The next day, something just clicked. We were using all of the knowledge we had read up on from the previous day. We solved one error after the other and by the afternoon, we had most of our Figma designs coded in Android Studio. At the same time, we had connected our app to Firebase to store the requests sent in our app, as well as to read data stored in the cloud, to be shared among users. Finally, we connected the front-end and back-end using Java and the help of handy built-in Android libraries.
Building this app took a lot of patience and support from one another. Sometimes we would be spending upwards of 3 hours on one recurring error. That’s when another teammate would step in with encouragement and a new perspective on the problem! Through the power of teamwork, we assembled and created our first app this weekend!
Challenges we ran into
To be honest, the whole journey towards building an app was a challenge. Learning a completely new skill set in such a limited time period was quite the feat. However, it’s something we are all extremely *proud to say that we have overcome! * Some more specific features that were difficult to resolve were:
Sending out notifications to users within a specific radius: After some intense research and tutorial-watching, we tried to implement in-app notifications. At first, it only worked for Android versions below 8 and adjustments had to be made to make it work for all phones. Then, we attached it to Firebase to produce customized notification messages for users within a certain distance.
Making fragments for the bottom navigation bar: We used the bottom navigation bar template in Android Studio however the items all showed the same screen. Much like the notifications, we looked through a lot of documentation and watched a lot of Youtube tutorials. We kept running into errors trying to make fragments in order for each item to show different screens. Finally, after hours and multiple team members working on this, we were able to solve the errors.
Making cards to enhance user experience: Having never experimented with Android development before, learning how to make use of the libraries and learning all the styling and hierarchy properties available was a challenge. We wanted to use cards to easily group the information for users to quickly identify what requests they could respond to, along with adding some visual interest to the overall design of the page. With a lot of documentation reading and testing, we were able to slowly but surely learn how to go from just creating the cards to making them scrollable and styled with fades, shadows and gradients.
Filtering requests based on distance and time: Since all app data was stored in the Firebase Realtime Database, we needed to filter out irrelevant entries to avoid crowding the list of nearby requests. Using a custom Request Java object, we were able to store and retrieve information to be displayed in the UI. These properties also allowed us to filter and sort the entries by time, distance, and status. Looking back, it was also particularly tricky to figure out how to store and parse unconventional data types in a compatible format. Furthermore, we didn’t want to force users to authenticate themselves to use the app, and so we had to use a combination of local phone storage and cloud storage to make our features function properly. For instance, the request ID was stored in local storage to ensure the user wouldn’t receive notifications from their own changes.
Accomplishments that we’re proud of
We’re extremely proud of all the challenges we've overcome, especially considering our limited experience in Android Studio. It was a steep learning curve, but that makes it feels even more rewarding to try our finished app. In particular, we loved:
The UI/UX design is one of the best features of our app: We created multiple prototypes in Figma, testing different colour schemes, user flows and layouts to select the perfect design that would provide the best user experience! These features took a lot of time, dedication and passion to put together, which is why we’re extremely proud of it.
The bond we’ve built as a team: This is our second hackathon together as a team and this one was two times longer than the previous one. Designing and coding while group calling for the majority of the 48 hours, we have found creative ways to keep each other awake and motivated. At 1 am we had a stuffie show and tell. We’ve gotten to know and understand each other on a much deeper level!
What we’ve learned
How to make an Android app and code in XML are some of the big skills we’ve learned. On top of that a valuable lesson was that learning is a process that takes patience and dedication. The first day of the hackathon we couldn’t see any progress but in reality we made what you could call a breakthrough :). When learning, you can’t see the results right away like when you run code.
What's next for codeRED?
We would like to implement more security features such as having the option to link accounts to phone numbers. This would help with protecting recipients and deliverers from repeat offenders who may take advantage of the system, allowing for bans and a rating system.
To encourage more deliverers to take action, we could add incentives to contribute as well, such as a rewards system. This rewards system could be partnered up with companies such as Always, Tampax, or non-profits such as FemCare, who we can work with to promote equality.
Furthermore, we would like to publish the app to understand the process and also to get feedback from the public. We could then identify how to improve user features and code for future reference. We would also like to add additional educational content (ex. How to take care of yourself while menstruating).
With codeRED, we were inspired to serve the same basic sanitary needs to everyone, including social, sexual, and racial minorities. In the future, we might hope to monetize the app through ads, in which all of the revenue would be donated to organizations helping to combat period poverty worldwide.