This repository houses the React Native (Expo) mobile frontend for the Montenegro Expense Tracker (RET) system. It is designed specificially for Android to scan standard Montenegrin fiscal QR codes, automatically categorize the spent items via AI, and visualize monthly spending patterns.
- QR Code Scanner: Built-in camera integration to quickly scan the URL encoded in Montenegrin fiscal receipts.
- Smart Dashboard: A dynamic dashboard that automatically calculates your monthly spending, splitting expenses up by category.
- Intelligent Navigation: The month timeline only lets you cycle through months where actual data exists — no dead scrolling.
- Full CRUD Support:
- Tap any invoice to expand its items.
- Edit store names, item names, prices, and quantities right on the phone.
- Delete individual items or entire receipts.
- Category Filtering: Tapping on an expense category (e.g. "Groceries") automatically filters the dashboard to show exactly which receipts contributed to that total.
- Framework: React Native with Expo (SDK 55)
- Routing: Expo Router (File-based routing via
app/directory) - Networking:
axiosfor fast communication with the Spring Boot API backend. - Icons:
@expo/vector-icons(FontAwesome). - Camera:
expo-camera
Because the server runs on a VPS and is protected by a custom API Key Gateway, this app requires a .env file to successfully communicate with the backend.
Create a .env file in the root of this project:
# Address of your Spring Boot VPS backend (replace YOUR_VPS_IP)
EXPO_PUBLIC_API_URL=http://YOUR_VPS_IP:8080
# Security Key for accessing the API
EXPO_PUBLIC_MOBILE_API_KEY=your_super_secret_mobile_keyNote: Because we use the
EXPO_PUBLIC_prefix, Expo will automatically bundle these secrets into your standalone APK during the EAS build process.
To run the application in a web browser or via Expo Go on your phone:
- Install dependencies:
npm install
- Start the Metro bundler (clearing the cache ensures your
.envis loaded):npx expo start --clear
- Scan the QR code displayed in your terminal using the Expo Go app on your Android device (ensure your phone is on the same Wi-Fi network as your PC).
To compile this project into a standalone .apk that you can install directly onto your Android device without needing Expo Go:
- Ensure EAS CLI is installed:
npm install -g eas-cli - Login to your Expo account:
eas login - Upload your
.envsecrets to Expo's secure cloud:eas secret:create --name EXPO_PUBLIC_API_URL --value http://YOUR_VPS_IP:8080 --type string --force eas secret:create --name EXPO_PUBLIC_MOBILE_API_KEY --value your_super_secret_mobile_key --type string --force
- Start the cloud build process:
eas build --platform android --profile preview
- Wait for the build to finish (usually ~10 minutes) and download the generated
.apkfile to your phone!