Code Monkey home page Code Monkey logo

droidconke2023reactnative's Introduction

droidconKE2023ReactNative

React Native App for Kenya's 4th Android Developer Conference - droidcon to be held in Nairobi from November 8-10th 2023.

Run the published app on your phone

Download the Expo Go Android / iOS app and scan this QR code to run the app on your phone.

Production app

Development app

Tech Stack

Dependencies

Features

  • Authentication
  • Home
  • About
  • Sponsors
  • Sessions
  • Speakers
  • Feed
  • Feedback

Designs

This is the link to app designs: Light Theme: https://xd.adobe.com/view/dd5d0245-b92b-4678-9d4a-48b3a6f48191-880e/ Dark Theme: https://xd.adobe.com/view/5ec235b6-c3c6-49a9-b783-1f1303deb1a8-0b91/

Contributing

Contributions are always welcome!

See CONTRIBUTING.md for ways to get started.

droidconke2023reactnative's People

Contributors

antosan avatar brianwachira avatar gmwaniki avatar kharioki avatar mog-rn avatar patrick-web avatar shyrynaz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

droidconke2023reactnative's Issues

Session Page

Is your feature request related to a problem? Please describe.
Implement the session/[session].tsx page

Describe the solution you'd like
should show details of the event session: speaker name, title of session, description, level, speaker's twitter handle, and a floating action button to share the session info

Additional context
Screenshot 2023-06-08 at 19 21 21

Sessions Page + Sessions List

Is your feature request related to a problem? Please describe.
In the sessions/index.tsx implement a list that displays all sessions

Describe the solution you'd like

  • should render a Days component
    • on the left render clickable text components each displaying a day
    • on the right a switch component as shown in the design
  • clicking on the header icons should set the list state to either collapsed or not
  • clicking on the filter button on the header should open a modal component

Notes

  • Session card component should be either the small card that displays time, title, description, venue, and a favorite icon button
  • session card can also be a full card as seen on the home page, with image and speaker avatars too

Additional context

  • the list should either be collapsible or not which is controlled by the buttons in the header

collapsed: -

Screenshot 2023-06-08 at 04 32 30

not collapsed:-

Screenshot 2023-06-08 at 04 33 20

Session Page Actions

Is your feature request related to a problem? Please describe.
The session page as implemented now has some pending actions.

Describe the solution you'd like

  1. Implement bookmark session functionality. When the star icon is pressed, add the session to users bookmarked sessions. in the sessions page when my sessions are toggled this session should be visible
Screenshot 2023-07-04 at 15 38 38
  1. Implement share button functionality for when the share button is pressed
Screenshot 2023-07-04 at 15 39 13
  1. Implement a navigate to twitter for when twitter handle is clicked.

Remove Auth Flow

Is your feature request related to a problem? Please describe.
Since we will not be adding Google signing for the upcoming event, we need to remove the authentication flow from the headers without removing the components as we shall implement the signing at a later date

Describe the solution you'd like
Current
Screenshot 2023-10-13 at 00 47 00

expected
Screenshot 2023-10-13 at 00 47 31

Additional context
Remember only to edit the headers. do not delete the components with the login icon

Filter Modal

Is your feature request related to a problem? Please describe.
Implement a modal component as shown below

Describe the solution you'd like

  • should allow the user to set level, topic, rooms, and session type filters
  • clicking the filter button should close the modal and set the filters on the sessions page
  • clicking cancel should close the modal

Additional context
Screenshot 2023-06-08 at 04 50 43

Create Routing

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

  • Add routing

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Sessions List

Is your feature request related to a problem? Please describe.

  • Implement a Cards list that displays sessions in a horizontal, scrollable list.
  • As shown in the design

Describe the solution you'd like
A clear and concise description of what you want to happen.

  • limit the list size to 5 sessions
  • order sessions by recent first
  • add a Link to [session] page when the session title is pressed
  • handle text if the session title is long
  • Clicking View All should navigate to sessions

Additional context

  • consider whether to use ScrollView or FlatList. Explain in PR
  • add tests for the component

Add theming - light and dark mode

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

  • Add light mode and dark mode.

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Speakers Page and <SpeakerCard />

Is your feature request related to a problem? Please describe.
Implement the [speakers] page to display a grid view of the <SpeakerCard /> component

Describe the solution you'd like

  • each speaker card should display an Image of the speaker, name, description, and session buttons
  • clicking the session button should navigate to the [session] page

Additional context
Screenshot 2023-06-08 at 05 18 24

Implement Google Signin

Is your feature request related to a problem? Please describe.
Implement google sign in functionality to be called when a user clicks on the sign in with google button

Describe the solution you'd like

  • consider using @react-native-google-signin/google-signin is a great library that provides smooth authentication with google while supporting modern react native architecture
  • in also provides a GoogleSigninButton component ready to use. remember to use the right colors as per theme

Additional context

  • PS - ofcourse this will require Google auth configuration with firebase

Speaker Page

Is your feature request related to a problem? Please describe.
Implement the [speaker] page to display information about the speaker or organizing team member

Describe the solution you'd like

  • should display an image, speaker/organizer badge, name of speaker/organizer, bio and twitter handle at the bottom

Additional context

Screenshot 2023-06-08 at 05 10 00

Speakers list

Is your feature request related to a problem? Please describe.

  • Implement a list that displays speaker images and names as seen on the design

Describe the solution you'd like

  • limit the speakers to 15
  • add a link to [speaker] page when the image is pressed
  • handle text if the speaker name is long and center it
  • each image should have a border as seen in the designs

Additional context

  • add tests for the list component
  • consider creating a reusable user card component

[BUG] Cannot GO_BACK after navigating to the Session Details screen

Describe the bug

After pressing the session card on the home screen or the sessions screen, we are navigated to the session details screen. However, pressing the back arrow at the top left corner of the session details screen does not work and instead throws this error The action 'GO_BACK' was not handled by any navigator.

To Reproduce

  1. While on the home screen under the sessions section, tap on one of the cards
  2. You should be navigated to the session details screen
  3. Tap the back arrow at the top left corner of the session details screen
  4. See error

Expected behavior

Tapping the back arrow should navigate you to the screen you came from

Screenshots

Simulator.Screen.Recording.-.iPhone.14.-.2023-10-15.at.06.13.39.mp4

cc. @kharioki @brianwachira

Kiswahili translation

Is your feature request related to a problem? Please describe.
Make the app multilingual

Describe the solution you'd like
Add a Kiswahili translation

Describe alternatives you've considered

Additional context

Create header component

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

  • Create reusable header component(s).

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Video Player Component

Is your feature request related to a problem? Please describe.
Implement a video player component as seen in this design

Describe the solution you'd like

  • Hint: use expo-av to implement the video player with hidden controls
  • consider adding a fullscreen player

Add Fonts and Typography

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

  • Add fonts to the project and typography

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Sessions Card & Sessions List Reusable on Home Screen and Sessions Screen

Is your feature request related to a problem? Please describe.

  • Create a Sessions Card and Sessions List component reusable on Home Screen and Sessions Screen

Describe the solution you'd like

  • On Home Screen the Sessions Card and Sessions List renders this way
    image

  • On Sessions Screen the Sessions Card and Sessions List renders this way
    image

  • When you press the 2 dashes button on header of Sessions Screen, it renders Sessions Card and Sessions List this way
    image

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.
This issue will enhance #19

Feedback page and Feedback sent modal

Is your feature request related to a problem? Please describe.
Implement the feedback.tsx page as seen in design

  • and the <FeedbackSentModal /> modal that displays once you send feedback as seen below

Describe the solution you'd like

  • feedback page should include a reactions component, a textarea, and button
  • Clicking on the Okay button should close modal

Additional context

Screenshot 2023-06-08 at 05 29 37

Set up eslint and prettier to match with stylesheet guide requirements

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Create reusable button components

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

  • Create button components that will be used.

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Loading component not timing out on all screens

Describe the bug
The loading component on all the screens are not timing out and letting the components with the content appear. This occurs after I open the app the second time.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'home'
  2. Scroll down to 'after video'
  3. See error

Expected behavior
The relevant components should load below the video on home

Smartphone (please complete the following information):

  • Device: [Redmi Note Pro 10]
  • OS: [e.g. Android 13]

About Page

Is your feature request related to a problem? Please describe.
Implement the about page as seen in the design

Describe the solution you'd like

  • should display an image, description, and a grid view of the organizing team, and an organizers card
  • consider reusing the image component that was used in the <SpeakersList /> component if it has been implemented
  • clicking on the team member image should navigate to the [speaker] page

Sponsors and Organizers Cards

Is your feature request related to a problem? Please describe.
In the <SponsorsCard /> and <OrganizersCard /> components:

  • implement a card that displays the event sponsors
  • render logo images of sponsors/organizers and use necessary flex-wrap to handle displaying many sponsors in one card
  • cards should have good paddings

Describe the solution you'd like
Screenshot 2023-06-08 at 04 11 21

Additional context

  • write unit tests for these cards

App redesign?

Hello Guys. Can I create a new design for the app to be more visually appealing? Start off by a figma design maybe...

Main Page

Is your feature request related to a problem? Please describe.
Bringing it all together now:

  • Should display VideoPlayer component
  • Sessions list component
  • Speakers list component
  • Sponsors card
  • Organizers card

Additional context
Should be done as the other features are implemented

Feed page with feed list

Is your feature request related to a problem? Please describe.

  • Implement a feed list view of feeds as seen in the design
  • the list should be implemented in the <FeedsList /> component and import the component in the feed/index.tsx page

Describe the solution you'd like

  • order the feeds to the most recent first
  • write tests for the list component

Important

  • clicking on the share button on each feed should open the bottom sheet and pass params to the bottom sheet
  • only implement this part if you’re comfortable working with bottom sheet navigation

Additional context
Screenshot 2023-06-08 at 04 22 52

Not logged-in header and <GoogleSignInModal />

Is your feature request related to a problem? Please describe.
Display logo on the left and an icon button on the right

  • Clicking the icon button should open the Google sign-in modal

Describe the solution you'd like

  • Implement the sign-in with Google modal logic

Additional context
Screenshot 2023-06-08 at 05 36 44

[BUG] Login button on Feed screen does not open login modal

Describe the bug

When logged out and on the login screen, pressing the login button on the top right of the screen does not open the login modal.

To Reproduce

Steps to reproduce the behavior:

  1. While logged out, go to the Feed tab
  2. Press on the login button on the top right of the screen
  3. The login modal will not open

Expected behavior

The login modal should open

Screenshots

photo_2023-10-07 15 27 57

Additional context

We need to expose the GoogleSignInModal on the Feed screen.

cc. @kharioki @brianwachira

Session Not Found Screen

Is your feature request related to a problem? Please describe.
In some cases, we may have a broken slug field from session. Since we are using the slug to fetch session data, this may/will throw errors.

Describe the solution you'd like
Implement a Session Not Found view/screen for this.

Additional context

  • you can add a redirect to either the home or sessions page

Set up routing

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

  • Set up routing using Expo Router. This includes the screens Home screen, Home screen ( when not logged in ), About screen, Bio screen, Feed screen, Feedback Screen, Sessions screen, Session Details screen, Speakers screen

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Add mock data

Is your feature request related to a problem? Please describe.
To test and display these components, we need some mock data.

Additional context

  • this can be dummy data, or seeded data copied from the db

API integration and Setup Tanstack Query

Is your feature request related to a problem? Please describe.
Up until now we've been working with and displaying mock data. We need to connect to the droidcon API and access the live data

Describe the solution you'd like

  • Define API URLs and slugs in the constants.ts file
  • use Tansatck Query to implement data fetching

Additional context

  • use react content loader to implement skeleton loaders

Splash Screen page

Is your feature request related to a problem? Please describe.
Implement splash screen view

  • consider the theme context and display a relevant splash image

Additional context

  • light theme
Screenshot 2023-06-08 at 05 43 52
  • dark theme
Screenshot 2023-06-08 at 05 44 34

MainContainer should handle views with nested flatlist

Is your feature request related to a problem? Please describe.
The main container as of now has a nested scrollview that enables every screen to be scrollable. However certain screens like feed/index.tsx will require the main component to be a flatlist with methods that allow for pull to refresh

Additional context

  • We can do it two ways, either handle scrollable props on main container or create a new container that does not have a scrollview child

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.