▲ 30 r/MARTA

I created a bus tracking app that supports both MARTA and the Atlanta Metro

Hey everyone. I wanted to share my bus tracking app that I created to support tracking MARTA buses/trains, and much more.

As a college student using my school’s bus tracking app, I was disappointed with it. Using my CS skills, I was able to a create bus tracking for it.

Now, I have released a new version that adds support for MARTA and other Atlanta Metro systems, like CobbLinc and Ride Gwinnett.

The app may be buggy with MARTA info since this is the first release. The app includes viewing ETAs, tracking buses, favorite routes/stop between system, and much more.

I’d love to hear your feedback. I hope the app is useful to you all! Thanks!

u/shafilalam — 7 days ago
▲ 171 r/Gwinnett

I created a bus tracking app that works with Ride Gwinnett

I’m a university student at UGA who lives in Lawerenceville. At UGA, I use the school and city buses, but the tracker app they used was hard to use and was buggy. As a CS major, I used my skills to create my own bus tracking app.

It turns out that when I added support for the Athens City buses, the same code could be used to add Ride Gwinnett support.

While I haven’t ridden Ride Gwinnett before, I wanted to share my app here.

I hope the app can be some help, and feel free to give me feedback!

u/shafilalam — 3 months ago
▲ 33 r/ShowMeYourApps+2 crossposts

Lessons learned getting my app (written in Flutter, not Swift) through App Store Review

I’m a university student and I rely on the university and city buses to get around. However, the official app was extremely buggy and many people complained about it. So, I decided to create my own bus/shuttle tracking app with my CS skills. 

It eventually scaled into a live tracker supporting over 1,000+ local transit agencies (universities, city buses, airports) that major apps usually don’t support.

Since it was my first major mobile project, I have a lot of takeaways from the Apple side of things, and I wanted to share my experience.

Skip to point 3 if you only care about my App Store rejections.

  1. Using Flutter instead of Swift

I built the app using Flutter simply because it was the first framework I learned. However, as the app grew, I realized I was spending most of my time writing native Swift code.

Integrating Apple Maps natively inside using Flutter native view required a lot of custom Swift bridging. I also built iOS Live Activities so users could track their bus from the lock screen, which meant more Swift. 

If I had to do it all over again, I would build it natively in Swift/SwiftUI. 

But I think this depends on a case-by-case basis.

  1. Designing a "Neutral" UI

 

Because I was using Flutter, I had to figure out how to make the UI look good on iOS. 

Instead of using Flutter’s Cupertino widgets, I designed a "neutral" UI by relying on custom widgets and blur.

For the App Store review, I was worried that the UI of the app would affect the review, but it didn’t.

In retrospect, there many apps that don’t utilize the iOS native look.

  1. The App Store Review (the main part)

Getting the app approved took weeks and it was a learning experience for me (since it was my first time)

Here is what I experienced:

  • My app had UI issues on a iPad, and not on a iPhone. I noticed Apple reviewers test on iPad, in addition to iPhone.
  • My app did not have a link to my support email and support website. 
  • My app did not have a way to delete user data, even though all the data was stored locally. I also created a data deletion page on my website telling users to delete in app.
  • My app did not show the App Store Terms of Condition when purchasing an IAP.
  • My app experienced a rare bug when pressing on a certain button in certain page. I fixed this by disabling the feature for the next review. I was able to fix the bug and re-enable the feature in a later update.

There may be more, but this the bulk of the rejections I remember.

I hope you all can learn from my experience, especially for those using a cross-platform like Flutter!

u/shafilalam — 3 months ago

I’m a university student and I rely on the university and city buses to get around. However, the official app was extremely buggy and many people complained about it. So, I decided to create my own bus/shuttle tracking app with my CS skills. 

I used Flutter to create this app because I wanted to support both iOS and Android using a single codebase. 

However, I wanted to create a UI that looked “neutral” for both iOS and Android. I didn’t want to rely on the default Material UI, especially for iOS. I also thought of using Cupertino widgets, but using both Material and Cupertino introduced complexity and the use of Platform.isIOS. I ended up creating my own custom widgets based on Material with BackdropFilter for a frosted glass look.

My first question:

What is your approach to building a unified design system in Flutter that feels at home on both iOS and Android? Do you strictly branch your UI based on Platform.isIOS, or do you build custom widgets?

To achieve a neutral look, I lean heavily on blur effects. However, using BackdropFilter over a live, moving map (especially while tracking a bus in real-time) is expensive.

My second question:

Do you use blur (via BackdropFilter) in your production apps? Do you consider it on lower-end Android devices, especially while the background (the map, in my case) is constantly updating?

I’ve noticed that BackdropFilter performance over native platform views has improved in recent Flutter versions, which is why I used it my app. However, I haven’t been able to test it on lower-end Android devices yet.

Thanks!

reddit.com
u/shafilalam — 4 months ago