Giter Club home page Giter Club logo

chainreactapp2023's Introduction

The official App for #ChainReact2023

This is the home for the official app of Chain React 2023, the only React Native focused conference in the USA, hosted by Infinite Red. This event happened May 17-19, 2023, in Portland, Oregon.

branding-banner

Download the App

Download on the App Store Get it on Google Play

Building app

Pre-reqs

  1. brew install fastlane
  2. npm install -g eas-cli or yarn global add eas-cli (v3.1.1 is the latest as of this edit)

Note: The steps below will have to be run when either of the following happen:

  1. Fresh app checkout
  2. After pulling main, and either package.json, app.json, or eas.json files have updates

iOS Simulator

  1. yarn build:local:ios
  2. double click newly created *.tar.gz file in build\ directory of project
  3. you'll now see a ChainReactApp2023.app file in the root of your project > drag and drop this file to your simulator
  4. yarn start
  5. i > app should now open and build

Android Emulator

  1. yarn build:local:android
  2. APK will be generated in the build\ directory of the project
  3. Drag and drop this file to your emulator or sideload to Android device of choice
  4. yarn start
  5. a > app will open on the emulator or connected device (use adb devices to see if properly connected)

Running on devices

In order to run on an iOS device, you'll need to add your device to EAS.

  1. Run eas device:create and follow the prompts.
  2. Enter your UDID or use the web URL option
  3. Make sure to give the device a descriptive name (e.g. Jamon's iPhone 12)

Development mode

Great for developing on device for testing features like screenreader support

Android

  1. Follow emulator directions above
  2. Instead of dragging build to emulator, use adb install to install on connected device

iOS

  1. Run yarn build:dev:device
  2. Select iOS (you don't need to run the build through EAS server for Android, just follow the steps above)
  3. Make sure your device is included in the provisioning profile when asked.
  4. Wait for EAS build to complete. Find you build at https://expo.dev/accounts/infinitered/projects/ChainReactApp2023/builds
  5. Install via QR Code
  6. Run yarn start in your terminal.
  7. Scan the QR code that comes up in the terminal output with your device. This should connect your phone app installation to the metro server running on your computer.
  8. Good to go!

If you'd prefer to do local builds rather than waiting for EAS servers, you can use the local option:

  1. Run yarn build:dev:device:local
  2. Select platform
  3. Make sure your device is included in the provisioning provile (you will be prompted for this)
  4. Wait for the build to complete and locate it under /build.
  5. Ensure your device is connected to your machine via USB cable
  6. Open XCode (no need to have any particular project open, just the landing screen is fine). Go to 'Window' > 'Devices and Simulators' and select your device.
  7. Drag the .ipa file from finder into the XCode window onto the "Installed Apps" section.

Internal Distribution (Release Mode)

This is for distributing the app to internal testers to run on their devices. The app is in release mode, so this isn't ideal for active development

  1. Run yarn build:preview
  2. Choose "All" or a specific platform
  3. If iOS or All is chosen, make sure your iOS device is included in the provisioning profile when asked.
  4. Wait for EAS build to complete. Find you build at https://expo.dev/accounts/infinitered/projects/ChainReactApp2023/builds
  5. Install via QR Code (make sure you don't have any development builds already installed)
  6. You're good to go!

Moving to your own Expo account

If you'd like to fork this repo and use it on your own Expo account to be able to leverage builds on your own devices, you'll need to do the following:

  1. Fork this repo
  2. yarn install
  3. Head to the expo.dev projects dashboard: https://expo.dev/accounts/{username}/projects (Be sure to update {username} with your Expo username)
  4. Click on Create a Project
  5. In /app.config.ts update the following values from your newly generated project found at https://expo.dev/accounts/{username}/projects/{slug}:
    1. owner
    2. plugins.expo-updates.username (same as owner)
    3. slug
    4. extra.eas.projectId
    5. ios.bundleIdentifier (your Apple Bundle ID)
    6. android.package (your Android Package Name)
  6. Follow above steps for building app on either simulator/emulator or device on your platform of choice
  7. Happy Coding!

E2E Tests

Maestro Installation

The easiest way to install Maestro is via homebrew:

brew install maestro
brew tap facebook/fb
brew install facebook/fb/idb-companion

See Maestro's documentation for other installation instructions.

Run flows

Flows currently run against an iOS 15.5 simulator dev client

  1. yarn start
  2. In a separate terminal, execute a flow maestro test .maestro/

Publishing updates OTA

Pre-reqs

  • A preview or production build of the application on a device

Notes

  • Only make JavaScript changes OTA
  • Any native code changes, app.config.ts or Expo SDK update will require a store publish

Steps

  1. Make the necessary JavaScript changes
    a. For a preview build, this can just be done locally (with uncommitted changes) or from another git branch
    b. For a production, you'll likely be in some release candidate branch or main branch after things have been QA'd
  2. Create the EAS update branch eas update --branch [update branch name] --message "info about the update"
    • This packages up the current project code and uploads it as a package to EAS as an update
  3. Determine the update channel where the update branch should be applied. By default, any build profile name in eas.json is created as a channel in addition to the specified channel property a. For a preview build, you can use the preview channel
  4. Point the update channel to the specific update branch eas channel:edit [channel name] --branch [branch name]
    • This tells a build on that update channel to now look for updates available on that branch name
  5. Restart the app twice to receive the update (on the first, the app will download any available updates - then apply it on the second)

Example

There is a preview build of version 1.0 out in the wild, lacking a new feature or bug fix.

git checkout -b feat/my-new-feature
# make some changes to code
git commit -a -m "feature complete"
eas update --branch preview --message "added new feature"
# from a device with the preview build, open the app to grab the update, and reload it to use the new feature

Dev Testing

From an expo-dev-client, you can open the Extensions tab and load any published update to QA the package that would be published OTA.

chainreactapp2023's People

Contributors

frankcalise avatar jamonholmgren avatar jonmajorc avatar joshuayoes avatar kateinkim avatar leonskim avatar mazenchami avatar morganick avatar robinheinze avatar silasjmatson 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  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  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  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chainreactapp2023's Issues

Pull to Refresh?

Does the app schedule do pull to refresh? I don't seem to see any indicator.

IF not... how could I update the schedule?

Explore: Listed items should be a carousel

I think there was a miscommunication: these shouldn't be in a list form. They should be in a carousel. So Food & Drink is a swipe left/right carousel to see different spots. Same for the other categories.

IMG_0034

Info -- IR team doesn't have a description

On the Info Tab, it says "Hosted by the Infinite Red team" and a photo of us, but there's no info on who we are, what we do, anything. We could be a conf organizing team for all it says there. So I'd like an IR blurb there.

image

Schedule pulldown gesture not completing automatically each time app is started

Steps to reproduce:

  • Upon opening the app and tapping "See the schedule", "Wed" is selected and no spinner appears
  • Pulldown on the schedule to refresh and the spinner begins animating
  • The schedule doesn't snap back up after the pulldown gesture is completed
  • The spinner never stops animating
  • Switch to other days in the bottom tab and repeat these steps. The same issue occurs.
  • Select the Venues tab to load that screen
  • Tap the Schedule tab to reload the schedule screen
  • Now the pulldown works correctly and snaps back up as expected when the gesture is completed.
  • Close the app completely via swipe up
  • Restart the app
  • The same issue occurs as described above.

iPhone 13 Pro Max
iOS 16.4.1

Venue OVERLOAD with Sponsors

Why are the sponsors listed in the Venue tab?

Probably should have subsections in Info. Info needs organization.

[Android] Pressing into a talk detail seems to lag

From the schedule screen, tap a schedule card. It seems to hang in the pressed state for a short period of time before loading into the Talk Detail. Maybe this comes from a network request (or several) being kicked off pre navigating?

Venue Button - Directness

Little nit on the UI. When I click "Venue" I get "Conference and workshops venue" title.

That's A and B. But the address shown is B then A. Meaning it shows the workshop address.

ALSO: Will this show the correct one on the correct dates?

I'd suggest a more direct UI, perhaps it's a bad spot for that cute slider.

Constant Welcomes

every time I close and open the app, I see the welcome message. Can we skip that if it hasn't changed and go straight to schedule?

Credits

Add on to the Info stack.

"Thank you to everybody who worked on the app this year" (same as "Thanks to this year's sponsors")
unordered list w/ bullet points

Format:

  • Frank Calise
    (what Frank did)
  • Mazen Chami
    (what Mazen did)
    ...

Gant Laborde—organizer of Chain React
Justin Huskey—co-organizer of Chain React & App Design
Jamon Holmgren—co-organizer of Chain React & App Development
Jenna Fucci—Designer (web, app, and print)
Simran Sachdeva—CFP Committee & Workshop Assistant
Darin Wilson—CFP Committee
Josh Yoes—CFP Committee & App Development
Kate Kim—CFP Committee & App Development
Robin Heinze—App Lead, and IR Table
Nick Morgan—App Development
Mazen Chami—App Development
Frank Calise—App Development
Leon Kim—App Development
Silas Matson—App Development
Jon Major Condon—App Development
Yulian Glukhenko—App Development

App Testers:
Bryan Sterns
Derek Greenberg
Dan Edwards
Jed Bartausky
Ellie Croce

Refresh loader stuck on schedules

The refresh loader gets stuck and doesn't go away. Even when I backgrounded the app it didn't go away 🤔
IMG_9D8EC817FDF8-1

stuck-refresh-loader.mov

Welcome -- doesn't say what Chain React is

On the Welcome screen, it doesn't say what Chain React is. Probably should say something about "the biggest and best React Native conference in the USA" or something.

image

[Android] White flash upon navigating sometimes

  1. From the Schedule Screen, navigate into a talk detail.

  2. Swipe back (I'm on a Pixel 4, so it's a gesture based back, but I'm guessing you could use the back button hardware wise too) and you'll notice as the modal goes away there is a white flash.

screen-20230420-093719.mp4

This can also be seen in other places such as:

  1. Navigate to the Info tab
  2. Press Contact Us
  3. Navigate back

Venues: Update the sort order

Hey @mazenchami

I have a very custom sort order that I need for the "Venues" tab.

I need it to be:

  1. The Armory
  2. The Afterparty
  3. The Hotel

Is it possible to do that? I couldn't find a way to do it in the CMS.

IMG_0028

Workshops Disclaimer

We added a disclaimer over the schedule for the workshop day. Please add a warning/disclaimer above the workshops in the schedule that you must have a workshop ticket to attend that day.

image

Add secondary speakers

Talks that have multiple speakers should have the additional speakers.

e.g. The AWS talk has 2 speakers, and only shows one of them in drilldown.
image

Sneaky Data Issues: Missing Social Links

e.g. Kadi Kraman doesn't have her correct github/linkedin/website.

I get that the data might not be there yet? HOWEVER, this makes it very difficult to identify who is and who is not populated with data in the app. Would be good to not show the icons if the links are not active. Also, some people might not end up having personal websites etc. I want to make sure we can catch these in the app.

TL:DR; hide socials if they aren't populated.

Welcome Screen

  1. I would love to remove "Allow Notifications" on the first load. I think once the user taps on "See schedule" it should prompt them upon first viewing the schedule.

IMG_0023

  1. Here's the content for the Welcome screen:

Welcome to Chain React!

Welcome to the 4th annual React Native Conference! This app is your official companion for all things Chain React.

You can do it all in the app: View the schedule, find directions to the afterparty, or even recommendations to grab food. It's all here in the app!

Let's Get Started </>

CMS suggestion: Lunch Break copy

I suggest changing this copy used for lunch breaks
"Both vegetarian and vegan options will be available for anyone with dietary restrictions."

To this:
"Vegetarian, vegan, and gluten-free options will be available."

Why?

  1. There's no need to explain that these options are for anyone with dietary restrictions. Also, there are other dietary restrictions not covered by our catering plan, including kosher, shellfish, dairy, nut, and more.
  2. Yes, we will have gluten-free options! That will be welcome news to many attendees.

`Breaks` Cards

Have cards be clickable

on "card" screen, Justin will provide image and text should match website

`Trivia` Card

  1. not clickable
  2. replace "TALK" with "TRIVIA SHOW"
  3. add in blurb (currently "More details soon")—this is the description but should be placed in the "title" section of the card
  4. 4 images should appear

Infinispin - not sure

Did a pull to refresh and it doesn't seem to want to time out.

RPReplay_Final1681840001.MP4

I can't select text on my iPhone (Improvement???)

I noticed I cannot select any text within the app. From time to time, I find myself selecting text to copy and paste into my "app of choice." The best and most frequent example is copying text to paste into Google Maps. From my knowledge, still today, you cannot make Google Maps the Default map app (booooooo... although Apple Maps is getting a lot better 😅 🤷‍♂️ )

Multi-scroll Width Issue - Multi Speakers

When you go to panelists - it looks like that's it. 1 person. You have to stare for a while before you notice the small bar on the right, and realize you should swipe.

image

Second photo should be more prominent to make swipe obvious.

Info/Contact: Changes to headlines

Change: "Email Us" to "Have Questions? Send Us a Message"

Change: "Reporting an Incident" to "Report an Incident"

Please change both of the purple headlines to the same heading style below so they're just like the "thanks to this year's sponsors" one.

IMG_0030

Screenshot 2023-04-12 at 5 09 30 PM

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.