RN-WALLET is a full-stack expense tracking application consisting of a React Native (Expo) mobile app, a Node.js + Express backend, and a dedicated ML microservice for automatic transaction categorization. The project focuses on real-world authentication, clean API architecture, custom analytics, and ML-driven automation.
Before ML integration:
- Transactions required manual category selection
- Auto-categorization unavailable
RN-WALLET.mp4
After ML integration:
- Transactions automatically assigned a category if not selected
- ML service fallback ensures robust assignment for unknown inputs
- Real-time transaction creation and backend rendering
RN-WALLETV.1.mp4
AnalyticsPageD.mp4
The mobile app is built using Expo Router and Clerk authentication.
-
Email + OTP authentication (Clerk)
-
Secure session storage
-
Transaction dashboard (Income, Expense, Balance)
-
Analytics Dashboard with charts:
- Income vs Expense (Bar)
- Monthly trends (Line)
- Category-wise spending (Pie)
-
Add transaction with optional category
- If not provided, category is predicted via ML service
-
Custom hooks for API & state management
-
Android & iOS support
-
React Native - Cross-platform mobile app development
-
Expo - Fast development, build, and deployment
-
Expo Router - File-based navigation
-
Clerk (Expo SDK) - Secure user authentication
-
react-native-chart-kit – Chart rendering
-
react-native-svg – SVG support for charts
Folder:
mobile/
The backend exposes REST APIs for transaction management, analytics summaries, and ML integration.
-
Express.js REST API
-
PostgreSQL (Neon) for persistent storage
-
Redis (Upstash) for caching & rate limiting
-
Clerk-based user authentication & JWT validation
-
ML Service Integration
- Predicts transaction category if not provided
- Fallback logic assigns
"Other"if prediction fails - Cached results reduce repeated ML calls
-
Clean MVC-style architecture
-
Node.js & Express.js
-
PostgreSQL (Neon) – Cloud-hosted relational database
-
Redis (Upstash) – Caching and session optimization
-
Clerk Authentication – Backend auth & JWT verification
-
ML Microservice – Auto expense category prediction
-
Render – Backend & ML services deployment
Folder:
backend/
## System Architecture
Mobile App (Expo / React Native)
|
v
Node.js Backend (Auth, DB, Business Logic)
|
v
ML Microservice (FastAPI + NLP Model)
- Python
- FastAPI
- Scikit-learn
- Joblib
- Uvicorn
RN-WALLET includes a custom analytics engine that transforms raw transaction data into meaningful insights.
- Monthly transaction filtering
- Income, expense & balance aggregation
- Category-wise spending analysis
- Chart-based visualization using reusable components
This logic powers the Analytics Dashboard in the mobile app.
A separate ML microservice is responsible for automatic transaction categorization.
- Python-based service
- Trained text classification model
- Predicts category from transaction title
- Integrated via backend API
📁 Folder: ml-service/
RN-WALLET/
├── backend/ # Express + PostgreSQL API
├── mobile/ # Expo React Native App
├── ml-service
├── README.md # Project overview
└── LICENSE
Each folder (backend and mobile) has its own README with setup instructions.
Clone the repo and follow the respective README based on what you want to run.
Important notes regarding ML service:
- The ML service is hosted separately and connected via an environment variable (
ML_API_URL). - Transactions without categories will automatically get categorized by the ML service.
- Fallback logic ensures “Other” is assigned if prediction fails.
Ankit Dimri
📍 Dehradun, India
This project demonstrates modern mobile development, secure authentication, scalable backend design, custom analytics, and ML-powered automation in a production-style architecture.










