Official mobile app for Volksverpetzer (build with Expo + TypeScript).
-
Clone the repository:
git clone https://github.com/Volksverpetzer/vvp_app.git
-
Change into project directory:
cd vvp_app
-
Install dependencies:
pnpm install
-
Start development server:
pnpm start
The app expects a ./.env file in the project root for some minor configuration.
See .env.example for reference.
The app supports two variants — Volksverpetzer and Mimikama — selected via the APP environment variable (see app.config.ts).
src/helpers/AppImages.ts is the central registry for assets that differ between variants. Instead of importing image files directly in components, always go through AppImages:
import { AppImages } from "#/helpers/AppImages";
// Some AppImages entries can be null — guard before use (see table below)
if (!AppImages.loadingAnimation) return null;
<Image source={AppImages.loadingAnimation} ... />Available entries
| Key | Volksverpetzer asset path | Mimikama asset path |
|---|---|---|
shopButton |
assets/images/volksverpetzer/button_shop.webp |
assets/images/mimikama/button_shop.webp |
loadingAnimation |
assets/images/logo_animated.gif |
null |
Adding a new variant asset
-
Place the asset file(s) under
assets/images/. -
Import them in
AppImages.tsand add a new key using theisVolksverpetzerflag:import { isVolksverpetzer } from "#/config/variants"; import MimikamaMyAsset from "#assets/images/mimikama_my_asset.webp"; import VVPMyAsset from "#assets/images/my_asset.webp"; export const AppImages = { // ...existing keys myAsset: isVolksverpetzer ? VVPMyAsset : MimikamaMyAsset, } as const;
-
Use
AppImages.myAssetin your component. If a variant has no asset, usenulland guard against it in the component.
Icons are sourced from the Octicons icon set via @expo/vector-icons. Use the icon browser to find available icon names. Standard UI icons should go through src/components/Icons.tsx, while custom SVG icons (e.g. logos, place icons) are provided via src/components/SvgIcons.tsx.
For platform-specific runs:
pnpm iospnpm androidpnpm web
- Run tests:
pnpm test - Lint:
pnpm lint - Fix lint issues:
pnpm lint:fix - Check types and spelling:
pnpm check
Set up the WebStorm run configuration to attach its debugger to your running app:
- Go to Run | Edit Configurations....
- Click the + icon in the top left corner and select React Native from the list.
- Name the configuration (e.g., "Debug Expo Hermes").
- In the configuration settings:
- Ensure the "Hermes engine is enabled" checkbox is selected.
- Unselect the "Build and launch application" checkbox, as your app is already running from Step 1.
- Set the Bundler host to 127.0.0.1.
- Ensure the Bundler port is the one your Metro bundler is using (default is 8081, but Expo Go often uses 19000).
- In the "Before launch" section, you may want to remove the "Start React Native Bundler" task if you started it manually.
- Click OK to save the configuration.
Now, you can start the debugging session from within WebStorm:
- Set breakpoints in your code by clicking in the gutter next to the line numbers where you want execution to pause.
- Select your newly created "Debug Expo Hermes" configuration from the dropdown menu in the top-right corner of the IDE.
- Click the Debug (bug) button next to the Run button. The Debug tool window will open.
- On your physical device or emulator, open the Developer Menu (shake the device, press Ctrl + Cmd + Z on iOS simulator, or Ctrl + M on Android emulator).
- Select "Enable Local DevTools" or "Open JS Debugger" from the menu to connect the app to the WebStorm debugger session.
- Once connected, your breakpoints should be triggered, and you can inspect variables, the call stack, and step through your code in the WebStorm Debug tool window.
Download the latest release from GitHub (the APK), and run the following commands in the project root:
unzip -p vvp-app-XXXX.apk assets/app.manifest > app.manifestnpx expo export --dump-assetmapnpx expo-updates assets:verify -b app.manifest -a dist/assetmap.json -e dist/metadata.json -p android