TicketSofort is a mobile application designed for displaying tickets bought from some German public transport companies, specifically TickEOS (currently only SaarVV). The app allows users to display their tickets immediately upon opening the app without having to do any additional steps (after first logging in once) and supports displaying the security features of the ticket.
- Display ticket immediately after opening the app.
- Show security features of the ticket.
- Should in theory support all TickEOS-based public transport associations, but currently only SaarVV is supported.
- Supports both iOS and Android platforms.
- Built using React Native and Expo.
- Utilizes Expo's EAS build service for creating builds.
To get started with the development of this app, follow these steps:
-
Clone the repository:
git clone <repository-url> cd ticketsofort
-
Install dependencies:
bun install
-
Start the development server:
bun start
This will start the Expo development server and open the app in the Expo Go app for your platform.
TicketSofort uses Expo's EAS build service to create builds for both iOS and Android. To build the app, follow these steps:
-
Login to Expo:
eas login
-
Configure the build: Ensure that the
eas.json
file is correctly configured for your build environment. -
Run the build:
eas build --platform <ios|android>
app.json
: Configuration file for the app.eas.json
: Configuration file for EAS build service.assets/
: Directory containing images and other assets.src/
: Directory containing the source code of the app.components/
: Directory containing React components.app/
: Directory containing the expo-router entrypointsconstants/
: Directory containing constants used throughout the app.services/
: Directory containing services used throughout the app.utils/
: Directory containing utility functions.types.ts
: Typescript and Zod types used throughout the app.
- Implement settings encryption and (optionally) user authentication.
- Add support for more public transport companies.
- Add unit and integration tests. lol.
- Web support. Would have to proxy requests through a server to avoid CORS issues. Not sure about this one.
- Purchasing tickets through the app or route-finding. The DB app is very good at those things.
We are using a prerelease version of expo-sensors
to avoid having to ask for the "Motion" permission on iOS which we don't need but a fix for which is only just being tested.
The problem is that expo-screen-orientation doesn't correctly report the upside down portrait orientation on iOS. This has been a known issue in the library but I doubt it will be addressed very soon. If there is a workaround, I'd be happy to hear it. But since this likely only affects iPad users and I have never actually had to prove the functioning of the gyro logo, I'm not too worried about it.
This project is licensed under the MIT License. See the LICENSE file for details.
Contributions are welcome! Please open an issue or submit a pull request for any changes.
For any inquiries or support, please open a GitHub issue