2026-07-26 12:31:51 +02:00
2026-07-26 01:58:22 +02:00
2024-09-06 18:42:36 +02:00
2026-07-26 01:58:22 +02:00
2026-07-26 01:58:22 +02:00
2026-07-26 01:58:22 +02:00
2024-07-07 12:39:27 +02:00
2024-08-12 20:43:10 +02:00
2026-07-26 02:35:21 +02:00
2024-07-07 12:39:27 +02:00
2024-11-28 21:34:44 +01:00
2024-07-07 12:39:27 +02:00
2026-07-26 01:58:22 +02:00
2026-07-26 12:31:51 +02:00
2026-07-26 02:35:21 +02:00
2026-07-26 12:31:51 +02:00
2026-07-26 12:31:51 +02:00
2026-07-26 02:35:21 +02:00
2025-06-05 21:59:23 +02:00

cnapp

The mobile app for Chateau Neuf using React and Expo.

📚 Expo Documentation

Install

Use mise to install Node.

mise trust
mise install
npm install
cp env-example .env.local

Development

Install Expo Go to run the app on your phone.

npm run start

Scripts

  • npm run start - Start Expo development server on port 19001
  • npm run android - Run app in Android emulator
  • npm run ios - Run app in iOS simulator (requires macOS)
  • npm run web - Run app in web browser
  • npm run lint - Check code with ESLint
  • npm run format - Fix code formatting with ESLint
  • npm run check-types - Run TypeScript type checking
  • npm test - Run the test suite
  • npm run test:watch - Run the test suite in watch mode

History

This is a fork of dusken-client with some history, code and binary blobs related to React Native functionality filtered out before commit 7f6b2c21.

TODO

  • add functionality needed to pass new store requirements
    • privacy policy
    • delete my account
    • ???
  • test in android emulator? (npm run android)
  • test in ios emulator? (npm run ios, requires macOS)
  • use Expo Application Services to build and submit app to stores
  • replace redux (redux v5 + redux-thunk, hand-written actions and the deprecated createStore): nearly everything in the store is server state (user data) plus one auth token, so drop redux for TanStack Query for fetching/caching, with the token in React context + AsyncStorage — replaces src/reducers.ts, the fetch thunks in src/api.ts and the isFetching*/error flags
  • replace moment (maintenance mode) with date-fns
  • replace unmaintained UI packages:
    • react-native-confetti (last release 2017, mocked out in tests)
    • react-native-simple-radio-button (react-native-ui-lib already ships RadioButton/RadioGroup)
  • migrate ESLint 8 + airbnb config (both EOL) to ESLint 9 flat config or eslint-config-expo
  • follow-ups from the Expo SDK 54 upgrade:
    • decide on Sentry: @sentry/react-native is installed but never initialized (see the commented-out init in index.ts), and its config plugin (now applied via app.json) warns about missing organization/project at every build — either finish the setup or drop the dependency
    • verify Android UI on a device/emulator: edge-to-edge is now always enabled and can no longer be disabled
    • try the React Compiler (enabled by default in new SDK 54 projects, opt-in for existing ones via "experiments": { "reactCompiler": true } in app.json)
    • add an iOS 26 liquid glass icon: a .icon file made with Apple's Icon Composer, referenced from ios.icon (old icon remains as fallback for older iOS); optionally play with expo-glass-effect
    • consider remote build caching (now stable) so npm run android/ios can download a cached build instead of compiling locally when the native fingerprint is unchanged
  • add Apple Pay for membership payments: either natively in the payment sheet (register the merchant ID merchant.no.neuf.chateau + Apple Pay certificate, set merchantIdentifier in the @stripe/stripe-react-native plugin config, pass applePay to initPaymentSheet, new iOS build), or for free by moving payment to a Stripe-hosted Checkout page in the browser (needs a backend Checkout Session endpoint and a return deep link)
  • add Google Pay for membership payments: either natively in the payment sheet (enableGooglePay: true in the plugin config, pass googlePay to initPaymentSheet, request production access in the Google Pay & Wallet Console, new Android build), or for free via the same Stripe-hosted Checkout page as for Apple Pay
S
Description
2024 - d.d Rewrite av Chateau Neuf appen for iOS og Android.
Readme
2.9 MiB
0 Stars 9 Watchers 0 Forks
Languages
TypeScript 96.8%
JavaScript 3.2%