<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Nathan Sisay</title>
    <description>The latest articles on Forem by Nathan Sisay (@nathan_sisay).</description>
    <link>https://forem.com/nathan_sisay</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3937186%2F672a0e05-bdba-474b-b20d-62d650451bf4.png</url>
      <title>Forem: Nathan Sisay</title>
      <link>https://forem.com/nathan_sisay</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nathan_sisay"/>
    <language>en</language>
    <item>
      <title>Strengthening Ride Matching, Notifications, and Schedule Management</title>
      <dc:creator>Nathan Sisay</dc:creator>
      <pubDate>Fri, 22 May 2026 03:17:59 +0000</pubDate>
      <link>https://forem.com/guslift/strengthening-ride-matching-notifications-and-schedule-management-27h7</link>
      <guid>https://forem.com/guslift/strengthening-ride-matching-notifications-and-schedule-management-27h7</guid>
      <description>&lt;p&gt;For our last week, focused on improving session persistence and preparing GusLift for broader platform support. This week, we continued improving the core ride-sharing experience by working on notifications, routing, schedule management, ride matching, and user interface consistency.&lt;/p&gt;

&lt;h1&gt;
  
  
  Improving Push Notifications
&lt;/h1&gt;

&lt;p&gt;One major focus this week was improving push notification support.&lt;/p&gt;

&lt;p&gt;Push notifications are important for a ride-sharing app because riders and drivers need to receive updates quickly. For example, a rider should know when a driver responds to a ride request, and a driver should know when there is activity related to a potential ride.&lt;/p&gt;

&lt;p&gt;To support this, the app was configured to work with Expo notifications and Firebase notification services for Android.&lt;/p&gt;

&lt;p&gt;On the backend, notification token handling was added so the app can store device push tokens. This allows the system to know where notifications should be sent when ride or matching events happen.&lt;/p&gt;

&lt;p&gt;The matching worker was also updated to support push notification behavior, helping connect real-time ride matching events with user-facing alerts.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why Notifications Matter
&lt;/h1&gt;

&lt;p&gt;Without notifications, users would need to constantly keep checking the app for updates.&lt;br&gt;
That would make the ride experience slower and less reliable.&lt;br&gt;
By adding notification support, GusLift can begin moving toward a more real-time experience where users are alerted when something important happens.&lt;/p&gt;

&lt;p&gt;This is important for matching riders and drivers, since timing matters when coordinating rides.&lt;/p&gt;

&lt;h1&gt;
  
  
  Improving Routing and Login Flow
&lt;/h1&gt;

&lt;p&gt;Another major area of work was improving how users move through the app after logging in.&lt;/p&gt;

&lt;p&gt;Several routing fixes were made so riders and drivers land on the correct screens based on their role and setup status.&lt;/p&gt;

&lt;p&gt;For riders, the app was updated so they consistently land on RiderHome instead of being sent to the older RequestRide screen. Older entry points to the previous request screen were removed or redirected.&lt;/p&gt;

&lt;p&gt;A new route helper was also added to centralize user routing logic. This makes the app easier to maintain because routing decisions are handled in one place instead of being scattered across multiple screens.&lt;/p&gt;

&lt;h1&gt;
  
  
  Improving Ride Matching Visibility
&lt;/h1&gt;

&lt;p&gt;This week also included improvements to the ride matching experience.&lt;/p&gt;

&lt;p&gt;The app now shows pending driver matches more clearly on rider home and scheduled rides screens. This helps riders understand when a match is waiting for action instead of hiding it deeper in the app.&lt;/p&gt;

&lt;p&gt;There were also fixes to prevent drivers from re-selecting riders who already rejected them.This makes the matching process feel more logical and prevents confusing repeat interactions between riders and drivers.&lt;/p&gt;

&lt;h1&gt;
  
  
  Updating Schedule Management
&lt;/h1&gt;

&lt;p&gt;Schedule management was another important improvement.&lt;br&gt;
The older change-schedule flow was replaced with a cleaner view and edit schedule experience. This gives both riders and drivers a better way to manage their availability and planned rides.&lt;br&gt;
The schedule screens were also connected more cleanly from the rider and driver home pages.&lt;/p&gt;

&lt;p&gt;This matters because scheduling is one of the core features of GusLift. Riders need to plan rides, and drivers need to manage when they are available.&lt;/p&gt;

&lt;h1&gt;
  
  
  Improving Time Display and Ride History
&lt;/h1&gt;

&lt;p&gt;Many commits focused on fixing time display issues.&lt;br&gt;
Waiting room times, manual ride times, and ride history display were updated so users see more accurate and consistent information.&lt;br&gt;
This is especially important for a ride-sharing app because incorrect time information can quickly make the experience confusing.&lt;br&gt;
Ride history was also improved so past ride information displays more reliably for users.&lt;/p&gt;

&lt;h1&gt;
  
  
  User Interface Improvements
&lt;/h1&gt;

&lt;p&gt;We also made a lot of visual and layout improvements.&lt;br&gt;
Rider screens were restyled for better color and layout consistency. Home screens and waiting room screens were updated to better match the app’s brand palette.&lt;br&gt;
Quick-action buttons were added to rider and driver hero cards, and a new logo was added to the homepage.&lt;br&gt;
These changes help the app feel more polished and easier to navigate.&lt;/p&gt;

&lt;h1&gt;
  
  
  Before deployment, we plan on:
&lt;/h1&gt;

&lt;p&gt;Testing push notifications across more devices&lt;br&gt;
Improving the full rider-driver matching flow&lt;br&gt;
In app chat functionality&lt;br&gt;
Connecting payment status more closely with ride status&lt;br&gt;
Continuing to clean up time and schedule logic&lt;br&gt;
Improving reliability of ride history and scheduled ride screens&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>mobile</category>
      <category>reactnative</category>
      <category>ui</category>
    </item>
    <item>
      <title>Stripe Payment and Processing</title>
      <dc:creator>Nathan Sisay</dc:creator>
      <pubDate>Mon, 18 May 2026 05:37:29 +0000</pubDate>
      <link>https://forem.com/guslift/stripe-payment-and-processing-3146</link>
      <guid>https://forem.com/guslift/stripe-payment-and-processing-3146</guid>
      <description>&lt;p&gt;Since GusLift is a ride-sharing platform, payments are an important part of the user experience. Riders need a simple and secure way to complete payment, while the backend needs a reliable way to track payment status for each ride. To begin this process, we integrated Stripe Checkout into the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing Stripe Checkout
&lt;/h2&gt;

&lt;p&gt;One of the biggest goals so far was to create a payment flow that could be tested safely during development.&lt;br&gt;
To do this, we added a backend route that creates a Stripe Checkout Session. When the mobile app requests a payment, the backend communicates with Stripe and receives a hosted checkout URL.&lt;br&gt;
The user can then open that Stripe-hosted page and complete the payment using a test card.&lt;br&gt;
This approach is useful because Stripe handles the secure payment form, card validation, and checkout experience. GusLift does not need to directly collect or store sensitive card information, which makes the implementation safer and easier to maintain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8291hw526c6v7vajagmu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8291hw526c6v7vajagmu.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting Payments to Rides
&lt;/h2&gt;

&lt;p&gt;Another important part of the payment system was making sure payments could be connected back to a specific ride.&lt;br&gt;
When a checkout session is created, GusLift can include ride information such as:&lt;br&gt;
-Ride ID&lt;br&gt;
-Rider ID&lt;br&gt;
-Ride label&lt;br&gt;
-Customer email&lt;br&gt;
-Payment amount&lt;/p&gt;

&lt;p&gt;This information allows the backend to keep track of which payment belongs to which ride.&lt;br&gt;
We also added support for storing payment records in a RidePayments table. This table keeps track of information such as the Stripe checkout session ID, payment intent ID, amount, currency, checkout URL, and payment status.&lt;br&gt;
This gives the app a clearer record of what happened during the payment process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handling Payment Status
&lt;/h2&gt;

&lt;p&gt;After a user finishes checkout, Stripe redirects them to a success page. GusLift then retrieves the checkout session details from Stripe and updates the payment record.&lt;br&gt;
If the payment was completed successfully, the record can be marked as paid. If checkout is canceled, the payment can be marked as canceled instead.&lt;br&gt;
Tracking these states is important because ride status and payment status are separate things.&lt;br&gt;
For example, a ride could be accepted, but the payment may still be pending. Keeping those states separate makes the system easier to reason about as the app grows.&lt;br&gt;
Building the Mobile Checkout Screen&lt;br&gt;
On the mobile side, we added a Stripe Demo Checkout screen.&lt;br&gt;
This screen checks whether the backend payment configuration is ready before allowing the user to continue. If Stripe is configured correctly, the user can tap a button to launch checkout.&lt;br&gt;
For the current development version, the checkout uses a fixed demo amount of $5.00.&lt;br&gt;
The mobile screen also supports passing ride-related information into the checkout flow, which helps prepare the app for real ride payments later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Stripe Matters
&lt;/h2&gt;

&lt;p&gt;Stripe is useful for GusLift because it allows us to build payment processing without needing to manage sensitive payment details ourselves.&lt;br&gt;
Instead of building a custom card form from scratch, we can use Stripe’s hosted checkout flow. This improves security, reduces complexity, and lets the team focus more on the ride-sharing experience.&lt;br&gt;
It also gives us a strong foundation for future payment features, such as authorizing payment when a rider confirms a driver and capturing payment after the ride is completed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some of the next milestones include:
&lt;/h2&gt;

&lt;p&gt;Connecting payment more directly to confirmed rides&lt;br&gt;
Improving success and cancel handling in the mobile app&lt;br&gt;
Adding webhook support for more reliable payment updates&lt;br&gt;
Moving from simple checkout payments toward authorization and capture&lt;br&gt;
Testing the full ride flow from request to completed payment&lt;/p&gt;

&lt;p&gt;By integrating Stripe Checkout, adding backend payment routes, and storing payment records, the app now has a basic but functional payment flow. While there is still more work to do before payments are production-ready, this is an important step toward making GusLift feel like a complete ride-sharing platform.&lt;/p&gt;

</description>
      <category>api</category>
      <category>backend</category>
      <category>mobile</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Stripe Payment Processing</title>
      <dc:creator>Nathan Sisay</dc:creator>
      <pubDate>Mon, 18 May 2026 05:32:20 +0000</pubDate>
      <link>https://forem.com/nathan_sisay/stripe-payment-processing-2nl5</link>
      <guid>https://forem.com/nathan_sisay/stripe-payment-processing-2nl5</guid>
      <description>&lt;p&gt;Since GusLift is a ride-sharing platform, payments are an important part of the user experience. Riders need a simple and secure way to complete payment, while the backend needs a reliable way to track payment status for each ride. To begin this process, we integrated Stripe Checkout into the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing Stripe Checkout
&lt;/h2&gt;

&lt;p&gt;One of the biggest goals so far was to create a payment flow that could be tested safely during development.&lt;br&gt;
To do this, we added a backend route that creates a Stripe Checkout Session. When the mobile app requests a payment, the backend communicates with Stripe and receives a hosted checkout URL.&lt;br&gt;
The user can then open that Stripe-hosted page and complete the payment using a test card.&lt;br&gt;
This approach is useful because Stripe handles the secure payment form, card validation, and checkout experience. GusLift does not need to directly collect or store sensitive card information, which makes the implementation safer and easier to maintain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8291hw526c6v7vajagmu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8291hw526c6v7vajagmu.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting Payments to Rides
&lt;/h2&gt;

&lt;p&gt;Another important part of the payment system was making sure payments could be connected back to a specific ride.&lt;br&gt;
When a checkout session is created, GusLift can include ride information such as:&lt;br&gt;
-Ride ID&lt;br&gt;
-Rider ID&lt;br&gt;
-Ride label&lt;br&gt;
-Customer email&lt;br&gt;
-Payment amount&lt;/p&gt;

&lt;p&gt;This information allows the backend to keep track of which payment belongs to which ride.&lt;br&gt;
We also added support for storing payment records in a RidePayments table. This table keeps track of information such as the Stripe checkout session ID, payment intent ID, amount, currency, checkout URL, and payment status.&lt;br&gt;
This gives the app a clearer record of what happened during the payment process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handling Payment Status
&lt;/h2&gt;

&lt;p&gt;After a user finishes checkout, Stripe redirects them to a success page. GusLift then retrieves the checkout session details from Stripe and updates the payment record.&lt;br&gt;
If the payment was completed successfully, the record can be marked as paid. If checkout is canceled, the payment can be marked as canceled instead.&lt;br&gt;
Tracking these states is important because ride status and payment status are separate things.&lt;br&gt;
For example, a ride could be accepted, but the payment may still be pending. Keeping those states separate makes the system easier to reason about as the app grows.&lt;br&gt;
Building the Mobile Checkout Screen&lt;br&gt;
On the mobile side, we added a Stripe Demo Checkout screen.&lt;br&gt;
This screen checks whether the backend payment configuration is ready before allowing the user to continue. If Stripe is configured correctly, the user can tap a button to launch checkout.&lt;br&gt;
For the current development version, the checkout uses a fixed demo amount of $5.00.&lt;br&gt;
The mobile screen also supports passing ride-related information into the checkout flow, which helps prepare the app for real ride payments later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Stripe Matters
&lt;/h2&gt;

&lt;p&gt;Stripe is useful for GusLift because it allows us to build payment processing without needing to manage sensitive payment details ourselves.&lt;br&gt;
Instead of building a custom card form from scratch, we can use Stripe’s hosted checkout flow. This improves security, reduces complexity, and lets the team focus more on the ride-sharing experience.&lt;br&gt;
It also gives us a strong foundation for future payment features, such as authorizing payment when a rider confirms a driver and capturing payment after the ride is completed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some of the next milestones include:
&lt;/h2&gt;

&lt;p&gt;Connecting payment more directly to confirmed rides&lt;br&gt;
Improving success and cancel handling in the mobile app&lt;br&gt;
Adding webhook support for more reliable payment updates&lt;br&gt;
Moving from simple checkout payments toward authorization and capture&lt;br&gt;
Testing the full ride flow from request to completed payment&lt;/p&gt;

&lt;p&gt;By integrating Stripe Checkout, adding backend payment routes, and storing payment records, the app now has a basic but functional payment flow. While there is still more work to do before payments are production-ready, this is an important step toward making GusLift feel like a complete ride-sharing platform.&lt;/p&gt;

</description>
      <category>api</category>
      <category>backend</category>
      <category>mobile</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Stripe Payment Processing</title>
      <dc:creator>Nathan Sisay</dc:creator>
      <pubDate>Mon, 18 May 2026 05:24:06 +0000</pubDate>
      <link>https://forem.com/nathan_sisay/stripe-payment-processing-1g2c</link>
      <guid>https://forem.com/nathan_sisay/stripe-payment-processing-1g2c</guid>
      <description>&lt;p&gt;Since GusLift is a ride-sharing platform, payments are an important part of the user experience. Riders need a simple and secure way to complete payment, while the backend needs a reliable way to track payment status for each ride. To begin this process, we integrated Stripe Checkout into the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing Stripe Checkout
&lt;/h2&gt;

&lt;p&gt;One of the biggest goals so far was to create a payment flow that could be tested safely during development.&lt;br&gt;
To do this, we added a backend route that creates a Stripe Checkout Session. When the mobile app requests a payment, the backend communicates with Stripe and receives a hosted checkout URL.&lt;br&gt;
The user can then open that Stripe-hosted page and complete the payment using a test card.&lt;br&gt;
This approach is useful because Stripe handles the secure payment form, card validation, and checkout experience. GusLift does not need to directly collect or store sensitive card information, which makes the implementation safer and easier to maintain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8291hw526c6v7vajagmu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8291hw526c6v7vajagmu.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting Payments to Rides
&lt;/h2&gt;

&lt;p&gt;Another important part of the payment system was making sure payments could be connected back to a specific ride.&lt;br&gt;
When a checkout session is created, GusLift can include ride information such as:&lt;br&gt;
-Ride ID&lt;br&gt;
-Rider ID&lt;br&gt;
-Ride label&lt;br&gt;
-Customer email&lt;br&gt;
-Payment amount&lt;/p&gt;

&lt;p&gt;This information allows the backend to keep track of which payment belongs to which ride.&lt;br&gt;
We also added support for storing payment records in a RidePayments table. This table keeps track of information such as the Stripe checkout session ID, payment intent ID, amount, currency, checkout URL, and payment status.&lt;br&gt;
This gives the app a clearer record of what happened during the payment process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handling Payment Status
&lt;/h2&gt;

&lt;p&gt;After a user finishes checkout, Stripe redirects them to a success page. GusLift then retrieves the checkout session details from Stripe and updates the payment record.&lt;br&gt;
If the payment was completed successfully, the record can be marked as paid. If checkout is canceled, the payment can be marked as canceled instead.&lt;br&gt;
Tracking these states is important because ride status and payment status are separate things.&lt;br&gt;
For example, a ride could be accepted, but the payment may still be pending. Keeping those states separate makes the system easier to reason about as the app grows.&lt;br&gt;
Building the Mobile Checkout Screen&lt;br&gt;
On the mobile side, we added a Stripe Demo Checkout screen.&lt;br&gt;
This screen checks whether the backend payment configuration is ready before allowing the user to continue. If Stripe is configured correctly, the user can tap a button to launch checkout.&lt;br&gt;
For the current development version, the checkout uses a fixed demo amount of $5.00.&lt;br&gt;
The mobile screen also supports passing ride-related information into the checkout flow, which helps prepare the app for real ride payments later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Stripe Matters
&lt;/h2&gt;

&lt;p&gt;Stripe is useful for GusLift because it allows us to build payment processing without needing to manage sensitive payment details ourselves.&lt;br&gt;
Instead of building a custom card form from scratch, we can use Stripe’s hosted checkout flow. This improves security, reduces complexity, and lets the team focus more on the ride-sharing experience.&lt;br&gt;
It also gives us a strong foundation for future payment features, such as authorizing payment when a rider confirms a driver and capturing payment after the ride is completed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some of the next milestones include:
&lt;/h2&gt;

&lt;p&gt;Connecting payment more directly to confirmed rides&lt;br&gt;
Improving success and cancel handling in the mobile app&lt;br&gt;
Adding webhook support for more reliable payment updates&lt;br&gt;
Moving from simple checkout payments toward authorization and capture&lt;br&gt;
Testing the full ride flow from request to completed payment&lt;/p&gt;

&lt;p&gt;By integrating Stripe Checkout, adding backend payment routes, and storing payment records, the app now has a basic but functional payment flow. While there is still more work to do before payments are production-ready, this is an important step toward making GusLift feel like a complete ride-sharing platform.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
