2024-07-18

Building a React Native PSL App: Part 1 - Project Overview and Tools

It's finally here! Welcome to Part 1 of our exciting series on building a React Native PSL App. In this post, we'll explore what we're going to build, the tools we'll use, and why we've chosen them. Let's dive in!

What We're Building

We're creating a comprehensive soccer app that includes live scores, match details, player statistics, standings, and a news feed. The design is sleek, modern, and user-friendly, perfect for soccer enthusiasts who want to stay up-to-date with their favorite teams and players.

Design Inspiration

As a frontend developer, I always recommend using existing designs as inspiration. For this project, we're using a fantastic community design from Figma. You can find it here:

Football Fantasy App (Community) on Figma

Using community designs is an excellent way for upcoming frontend developers to practice and build their portfolios. It allows you to focus on implementation while working with professional-grade designs.

# React Native PSL App Development Plan

## UI Kit and Styling

- Recommended UI Kit: React Native Elements

- Provides customizable UI components

- Easy to theme and style

- Styling Solution: Tailwind CSS for React Native

- Use `tailwind-rn` package for Tailwind support in React Native

## Key npm Packages

1. Navigation:

- `@react-navigation/native`

- `@react-navigation/stack`

2. Data Fetching and State Management

  1. React Query
    • Package: @tanstack/react-query
  2. State Management:
    • @reduxjs/toolkit (for global app state)
    • react-redux

3. Charts and Graphs:

- `react-native-chart-kit`

4. Icons:

- `react-native-vector-icons`

5. Form Handling:

- `react-hook-form`

6. Data Fetching:

- `axios`

7. Date and Time:

- `moment`

## Authentication

- Use kinde Authentication for user management

# npm
npm i @kinde-oss/react-native-sdk-0-7x

## App Structure

1. Authentication Screens

- Login

- Registration

2. Main Screens

- LiveScore (Home)

- Match Details

- Player Statistics

- Standings

- News Feed

3. Components

- MatchCard

- PlayerCard

- StandingsTable

- StatisticsChart

- NewsItem

## Data Management

- Use Redux for global state management

- Implement API calls using Axios

- Store sensitive data using `react-native-keychain`

## CI/CD

- Use Fastlane for automated builds and deployments

- Integrate with GitHub Actions for continuous integration

## Performance Considerations

- Implement lazy loading for images

- Use FlatList for efficient list rendering

- Optimize Redux store structure

## Accessibility

- Ensure proper use of accessibility labels

- Test with VoiceOver and TalkBack