Mobile Application for Regional Healthcare Non-Profit
A React Native mobile application built with Expo that provides secure, real-time notifications and content access for coalition members. The app integrates AWS Lambda for email processing, Firebase for push notifications, and implements secure authentication.
The Challenge
The coalition needed a secure, efficient way to distribute important updates and content to its members. Traditional email communication wasn't meeting their needs for immediate notification delivery and secure content access. The solution needed to handle both push notifications and provide consistent access to protected content on their website without the need to re-authenticate each time.
The app needed to integrate with existing email systems, provide push notifications, and offer a seamless user experience while ensuring that only authenticated members could access sensitive information.
Architecture and Technology Stack
The application was built using React Native and Expo. The backend infrastructure combines AWS Lambda for email processing with Firebase for notifications storage and user management, and API endpoints.
Email Processing and Push Notifications
One of the most interesting parts of this project was the limitations of the organization's existing notification system and how to work within those constraints. They had a system in place which only allowed them to send emails to their members. This meant that I had to get creative with how we could send the push notifications to mobile users.
The AWS Lambda function uses IMAP to monitor a dedicated email inbox on a CRON job. When new messages arrive from authorized senders email address, the function processes them and stores the content in Firebase and sends push notifications to the users via the Expo Push notification service API. The system handles both plain text and HTML content for rendering more complex notifications in the notification log of the app.
Storing the notification content in Firebase allows us to send information well beyond the amount typically allowed in a push notification. Both iPhone and Android each have character limits to their push notifications, but Firebase allows us to store the full content of the message in the notification log of the app and cache it locally for offline viewing.
User Authentication and Security
Access to protected content is controlled through a password-based system using a Firebase Cloud Function to verify the user's entered password.
User sessions are managed through React Context providers, ensuring a consistent authentication state across the application. The system includes automatic token refresh and session persistence.
Content Delivery and Caching
A custom preloader system ensures smooth content delivery by maintaining authentication state across WebView instances to interact with the organization's protected content on their website. To accomplish this, POST request containing the correct password and wordpress site URL is sent when the previous authentication cookie expires, meaning users do not have to continually enter the password like they would if they were accessing the website directly.
Project Outcomes
The application successfully provides coalition members with secure, real-time access to important updates and protected content. The combination of AWS Lambda for email processing and Firebase for push notifications creates a reliable and scalable communication system.
The app maintains high security standards while providing a seamless user experience, demonstrating the effectiveness of combining React Native, Expo, AWS Lambda, and Firebase for secure mobile applications.