This is an Expo project created with create-expo-app.
-
Install dependencies
npm install
-
Start the app
npx expo start
In the output, you'll find options to open the app in a
- development build
- Android emulator
- iOS simulator
- Expo Go, a limited sandbox for trying out app development with Expo
You can start developing by editing the files inside the app directory. This project uses file-based routing.
The app uses environment variables for API tokens and other sensitive information. Create a .env file in the root directory of the project and add the following variables:
API_TOKEN=your-api-token
USERNAME=your-username
OPENAI_API_KEY=your-openai-api-key
The app supports three AI providers:
- Ollama
- ChatGPT
You can switch between providers by setting the CURRENT_PROVIDER variable in the constants.js file.
This is an Expo-based mobile application for expense management that integrates with Kimai timesheet system and AI-powered image analysis for automated expense entry.
- Frontend Framework: Expo (React Native)
- Language: JavaScript
- AI Integration: Multi-provider support (Ollama, ChatGPT, Claude)
- External APIs: Kimai timesheet API
- File-based Routing: Expo Router
- Kimai Integration: Direct integration with Kimai timesheet system for expense tracking
- AI-Powered OCR: Automatically extracts expense details from receipt images
- Multi-AI Provider Support: Flexible configuration to use different AI services
- Expense Management: Track expenses with categories, dates, and amounts
The AI service processes receipt/invoice images through the following flow:
- User captures or uploads an expense receipt image
- Image is converted to base64 format
- AI service sends the image to configured provider (Ollama/ChatGPT/Claude)
- AI extracts structured data: date, category, description, and amount
- Extracted data is returned in JSON format for further processing
The application connects to Kimai timesheet system to:
- Fetch expense categories
- Submit expense entries
- Retrieve customer and project data
- Manage activities and timesheets
Authentication is handled via custom headers:
X-AUTH-USER: UsernameX-AUTH-TOKEN: API token
The app supports three AI providers with a unified interface:
Ollama (Local/Self-hosted):
- Uses ngrok tunnel for remote access
- Model: llama3.2-vision
ChatGPT:
- OpenAI API integration
- Model: gpt-4-turbo
- Vision capabilities for image analysis
- Image Capture → Base64 Encoding
- AI Analysis → Structured JSON extraction
- Data Validation → Category mapping and formatting
- Kimai Submission → Expense entry creation
Switch AI providers by updating AI_CONFIG.CURRENT_PROVIDER in utils/constants.js:
CURRENT_PROVIDER: AI_PROVIDERS.CHATGPT // or OLLAMA, CLAUDE