Giter Club home page Giter Club logo

appjs24-workflows-workshop-lessons's Introduction

expo sdk

Expo

Expo SDK version Chat or ask a question License: MIT Downloads

Try Expo in the Browser  •  Read the Documentation  •  Learn more on our blog  •  Request a feature

Follow us on

Expo on X   Expo on GitHub   Expo on Reddit   Expo on LinkedIn   Expo on LinkedIn

Introduction

Expo is an open-source platform for making universal native apps that run on Android, iOS, and the web. It includes a universal runtime and libraries that let you build native apps by writing React and JavaScript.

This repository includes the Expo SDK, Modules API, Go app, CLI, Router, documentation, and various other supporting tools. Expo Application Services (EAS) is a platform of hosted services that are deeply integrated with Expo open source tools. EAS helps you build, ship, and iterate on your app as an individual or a team.

Read the Expo Community Guidelines before interacting in the repository. Thank you for helping keep the Expo community open and welcoming!

Table of contents

📚 Documentation

Learn about building and deploying universal apps in our official docs!

🗺 Project Layout

  • packages All the source code for Expo modules, if you want to edit a library or just see how it works this is where you'll find it.
  • apps This is where you can find Expo projects which are linked to the development modules. You'll do most of your testing in here.
  • apps/expo-go This is where you can find the source code for Expo Go.
  • apps/expo-go/ios/Exponent.xcworkspace is the Xcode workspace. When developing iOS, always open this instead of Exponent.xcodeproj because the workspace also loads the CocoaPods dependencies.
  • docs The source code for https://docs.expo.dev
  • templates The template projects you get when you run npx create-expo-app
  • react-native-lab This is our fork of react-native used to build Expo Go.
  • guides In-depth tutorials for advanced topics like contributing to the client.
  • tools contain build and configuration tools.
  • template-files contains templates for files that require private keys. They are populated using the keys in template-files/keys.json.
  • template-files/ios/dependencies.json specifies the CocoaPods dependencies of the app.

🏅 Badges

Let everyone know your app can be run instantly in the Expo Go app!

runs with Expo Go

runs with Expo Go

[![runs with Expo Go](https://img.shields.io/badge/Runs%20with%20Expo%20Go-000.svg?style=flat-square&logo=EXPO&labelColor=f3f3f3&logoColor=000)](https://expo.dev/client)

[![runs with Expo Go](https://img.shields.io/badge/Runs%20with%20Expo%20Go-4630EB.svg?style=flat-square&logo=EXPO&labelColor=f3f3f3&logoColor=000)](https://expo.dev/client)

👏 Contributing

If you like Expo and want to help make it better then check out our contributing guide! Check out the CLI package to work on the Expo CLI.

❓ FAQ

If you have questions about Expo and want answers, then check out our Frequently Asked Questions!

If you still have questions you can ask them on our Discord and Forums or X @expo.

💙 The Team

Curious about who makes Expo? Here are our team members!

License

The Expo source code is made available under the MIT license. Some of the dependencies are licensed differently, with the BSD license, for example.

Star the Expo repo on GitHub to support the project

appjs24-workflows-workshop-lessons's People

Contributors

amandeepmittal avatar keith-kurak avatar tchayen avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

appjs24-workflows-workshop-lessons's Issues

Module 3 first pass (in progress)

  • would like to include the bundle ID switching in here, as well, it's a really key app variant scenario
  • IMO I'd kind of like them to still create a 'production-ish' profile, so iOS and android users don't have to use different profiles.
  • Let's have them update their package.json commands to include the IS_DEV variable just like the docs
  • Changing name based on variant means we really should start with a different app name, like "Art Museum". This will have to be tested throughout
  • Build production with the updates screen, and then have them update it on their own, seems more realistic

Module 4 first pass

  • fingerprint commands need cwd in there (e.g., ./)
  • fingerprint demo: automatically adds config plugin, even though we don't need it, and this changes the fingerprint. Let's remove the config plugin for now and compare
  • copy text - add expander
  • custom icon code - missing quote
  • need to rethink the fingerprint exercise - don't really need to commit it, just to view the changes

Module 6 first pass (in progress)

  • make app group ID based on bundle ID, so its separate from dev and prod // actually, just make it really easy to copy
  • hardcoded project names are almost certainly out of date
  • Fix janky swift UI (e.g., what's the difference between snapshot and timeline)
  • Update to account for share code
  • Copy over the full modules content
  • I think the swift file should be in files folder?

Module 5 first pass

  • will need to clarify that we're removing the dangerous mod from the root of the config plugin when making the real thing
  • copy diff stuff
  • Android: update java path to include full package name path
  • Android: add note about how it derives package name path
  • ios: "search for widget" is wrong, it's based off of app name
  • clarify that we should return config at the end of the config plugins
  • Android: actually failed to find main application once, but only once
  • iOS: add note about doing this on a simulator so we can avoid signing for now
  • iOS: add notes in case they do want to run it on a device
  • iOS clarify all code is added inside the dangerous mode, before returning the config
  • iOS: add comments with divider before every section so it makes sense when you copy it
  • iOS: move proj file write addition to earlier to se can do some early testing
  • Some note about using right-click Format Document a lot
  • Add the widget files somewhere in case somebody needs to copy them
  • make sure this works with the "dev" app variant

Module 1 first pass

Starter template items:

  • Let's make local mode the default and remove API routes, they don't really do anything here.
  • make slugs, project names match the workshop repo name

Module items:

  • for first exercise, they can copy over entire screen file and wire it up, will feel more like they're building a whole feature
  • Share sheet doesn't let you share to photo album on first go with just sharing the URL, thinking it might once we're sharing a file ref, need to see...
  • When adding the cropper in Expo Go, I actually get the error as soon as I try reloading, I don't even have to try to use the picker
  • Updating the crop() function ... I was tempted to just copy the code, but that function is already there, so maybe needs a little extra clarity.
  • useState has wrong type, should be like:
import ImagePicker, { Image as ImageType } from "react-native-image-crop-picker";
// ...
  const [croppedImage, setCroppedImage] = useState<ImageType | null>(null);
  • the code for getting the cropped image to display will be different, as you need image.path or something like that
  • Disable button should be gray-500 to not match backdrop
  • iOS sharing drops a ton of console garbage but still seems to work

Module 2 first pass

  • image marker outputs a path, while cropper outputs an object. Need to update module 1 code to use a path all-around in order to make it easier to add module 2 code
  • I like doing the PR preview in the PR itself, since you would have a PR to introduce the workflow
  • make running on a device optional in case people don't want to switch. It's a little convoluted
  • Add steps for setting up EXPO_TOKEN
  • can't open the updates URL on the simulator without being able to send a QR code. My workaround is to teach them how to manually construct URL's
  • Not gitignoring the native files earlier makes this kind of bad, because you end up pushing all those native library files, so I think we should go back and gitignore them
  • I ran into issues because I hadn't forked "for my own purposes". We should make notes about either a) selecting this option in Github Desktop, or b) how to do this in VS Code git ("Branch From...")

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.