Skip to content

teemukostamo/native-ida-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IDA Radio fan app

A React Native mobile app for IDA Radio written in TypeScript. This is an unofficial, fan-made project, with the goal of teaching myself React Native and hopefully making a nice mobile app for IDA Radio in the process. IDA is an online community radio based in Tallinn & Helsinki, and they would appreciate any support.

Table of contents

  1. Prerequisites
  2. Getting Started
  3. Testing, Development And Deployment
  4. Issues & Contributing
  5. Usage & Design
  6. Data Fetching
  7. Live Stream & On-Demand

Prerequisites

  • Follow the React Native CLI quickstart instructions on setting up the development environment relevant to your development OS and target OS.

Getting started

  • Clone the repository
  • Run npm install to install dependencies
  • For OSX/IOS version, cd ios into the ios folder and run pod install
  • In the root folder run npx react-native start to start the develoment server
  • Run npx react-native run-ios to run the app in an iOS simulator
  • Run npx react-native run-android to run the app in an Android simulator
  • To run the app in a physical device, follow the instructions in React Native documentation relevant to your Development OS and mobile device.

Testing, Development and Deployment

  • Run npm run test to run tests. Tests written using Jest and React Native Testing Library.
  • The project uses Eslint and Prettier to maintain code quality. Pre-commit hook using Husky runs Eslint before commits.
  • Github Actions run tests on pull requests to develop and main branches
  • For now there is no deployment pipeline in place. In the future Github Actions will be used to
    • Deploy the app to beta environment whenever a feature branch is merged to develop branch.
    • Deploy the app to production environment whenever develop branch is merged to main branch.

Issues & Contributing

Some known issues are listed in the repo's Issues section. If you'd like to contribute, please fork the repository and create a feature branch based on develop branch. Pull requests are warmly welcome!

Usage & Design

The app aims to mimic the design of the mobile version of the Ida Radio website. Other features are heavily inspired by the excellent NTS Live application.

Live view

Live view

The live view shows the currently airing shows in Tallinn and Helsinki. If the studios are offline, the next program is shown. Pressing the play icon starts the audio streams and displays the now playing bar at the bottom of the view, above the navigation bar.

Schedule view

Schedule view

The schedule view displays the current week's program schedule. Pressing on a shows name takes the user to the shows own view, where a description and latest episodes are listed.

Explore view

Explore view

A view to explore shows and episodes. By default, the latest shows are displayed and shows are listed alphabetically. The user may filter shows by a search query, by genres or by channel (all/tallinn/helsinki). Pressing the play icon on an episode's card view opens the Mixcloud iframe player for on-demand listening.

My Ida view

My Ida view will host the user's favorite shows, episodes and play history. Saved items are stored in AsyncStorage. Pressing the User icon in the top right corner navigates to Account view.

Account

In Account view user may log in, create an account, change settings and view About Ida and About App sections.

Data Fetching

The app fetches the data on Ida Radio's programming schedule, shows and episodes from Ida Radio's website's API. Now playing and programming schedule data are fetched hourly using Fetch API. Lists of shows and episodes are fetched using React Query. Applying search filters alters the fetch query's endpoint accordingly.

Live stream & On-Demand

React Native Track Player is used to play the live broadcasts from Tallin and Helsinki. On-Demand shows are hosted in Mixcloud and played using an iframe in React Native Webview.