Skip to content

Jojocaster/do-you-app

Repository files navigation

Do!!You!!!World app

Official app for https://doyou.world/ , built with React Native, AirTime Pro's API & a lot of coffee.

Feel free to create issues here to report bugs / suggest features, I'll do my best to get back to you asap.

Bug tracker for non-GitHub users: Google Form

Table of contents

Features

  • Live Status tracker, running automatically in the background
  • See the list of upcoming shows (according to current timezone)
  • Allow radio to be played in the background & controlled from the notification centre & lockscreen
  • See today's track IDs (Beta)
  • Receive notifications when a show is live (Beta)
  • Control app volume separately from OS
  • Dark & light themes
  • Chat!

Screenshots

                       

               

Roadmap

  • UI & UX improvements
  • Add lint-staged to precommit
  • Add jest to prepush
  • Add animation when show is playing
  • Improve splash screen
  • 11:11
  • Support tablets
  • Better error management :)
  • Allow users to save tracks to favourites
  • Improve test coverage
  • Remove useless packages (e.g. styled-components)

Done

- Add "Events" tab - Fetch current track in background and update "now playing" - Trigger push notifications from server instead of polling data from client (using Lambda, CRON, S3 & expo-notifications)

  • Fetch live info in the background to send notifications when shows are live
  • Add volume control
  • Add Settings to manage alerts
  • Show correct times according to timezone
  • Embed chat
  • Handle light theme
  • Persist state in async store
  • iOS release
  • Display more information about tracks
  • Prevent app from going to sleep is chat is focused
  • Persist cookies from Minnit
  • Add "Archives" tab
  • Link track IDs to archives

Open to suggestions, feel free to post them here :)

Changelog

- Overall UI improvements
- Events added to Live screen
- Player logic improved
- Schedule fixed to support DST
- Tabs added to Track IDs
- Remote config fetched on app start
- Archives can now be saved as favourites 
- Default artwork updated
- Filters added to Archives
- Player now shows current show's artwork
- Users can now disable notifications for re-runs
- Layout improved
- Archives tracklists fixed
- Media Controls fixed - it now shows the current show, as opposed to the previous one
- "Random" button added to archives
- Push notifications implemented 🎉
- Status now fetched in background while playing in order to update "Now Playing"
- Animations removed temporarily to prevent memory leaks
- Archives v1 implemented 🎉
- Code cleaned up and optimised, reducing battery consumption
- Copy added to TrackIDs
- MoreScreen copy updated, now showing DoYouWorld's ko-fi
- Player now checks the show API for artwork to make lockscreen / controls more dynamic, reverts to default image if undefined 
- Battery saver added to settings
- Player now uses local state from RNTP
- Player state detection improved for both iOS & Android
- Multiple components memoized to improve perfs
- Track reset when resuming from pause to empty buffer
- Tests added
- GA code added to stream headers to recover stats
- General clean up
- State now persisted in AsyncStorage
- Light / dark theme implemented
- Player behaviour improved on both platforms 
- HTML characters escaped from shows names
- Volume control added - player can now manage volume separately from OS
- Manual refresh added to chat
- Chat auto-reload only triggered when process is killed in the background
- Tracks details added, new endpoint implemented
- Tracks screen made scrollable to support more items
- Settings improved
- Overall style improvements
- App & deployment config updated
- Chat view added
- Player behaviour improved on iOS
- Fix for player. It would sometimes lose the current track when the app was idle in the background for too long. 
- Current show / track logic improved
- Current show now highlighted in schedule
- Schedule now supports different timezones
- Code cleaned up and improved
- Notifications can now be sent when a show is live and can be turned on & off from the Settings.
- Current show's title grabbed from schedule in case `live-info` doesn't return the right name
- Player controls improved
- Minor fixes 

/!\ As this version is still a beta and not on the store just yet, Google may warn you about the app being "unsafe" - that is completely normal. Just "install anyway" and enjoy that perfect sound forever.

Known bugs

  • AirPlay keeps dropping: There is a known a bug on the library we're using to manage streams (described here). The bug seems to have been introduced on iOS 15.3 - we will update the app once this is sorted.

  • Google Cast: There is no current support for Google Cast. This might change in the future, but further work on the library mentioned above is needed before we can support it.

  • Notifications don't work properly: Notifications are currently in beta. We are using local notifications, which means that the app checks for live status and tries to notify users when a new show is live. However, Android tends to kill the process if the app is in the background. iOS can also be unpredictable and limit background processes to run only every 15 minutes. We will move to push notifications shortly, which should solve this issue.