A React Native app that identifies cars from photos. Take a picture or upload one from your library, and it tells you the make, model, year, fuel type, body type, and detailed specs like engine size, transmission, and fuel economy.
| Quick Demo |
|---|
- You pick or take a photo
- The server sends it to Claude Vision, which identifies the car
- The server then hits the API Ninjas cars database for detailed specs
- Results come back to the app
Previous scans are saved locally so you can browse through them.
App
- Expo (React Native, TypeScript)
- React Navigation
- AsyncStorage for scan history
Server
- Node.js / Express
- Claude Vision API (car identification)
- API Ninjas Cars API (specs lookup)
WhatCarIsIt/
src/
constants/ API base URL and image quality setting
screens/ HomeScreen, ResultScreen, HistoryScreen
services/ Claude and API Ninjas fetch wrappers
styles/ StyleSheet files per screen
types/ car.ts (interfaces), navigation.ts (route types)
utils/ mpg conversion, history read/write
server/
src/
routes/ /api/identify and /api/specs
index.ts Express app entry point
assets/ App icons and splash screen
App.tsx Navigation stack
- Node.js
- Expo Go on your phone
- An Anthropic API key
- A free API Ninjas key
npm installcd server && npm installCreate server/.env:
ANTHROPIC_API_KEY=your_key_here
API_NINJAS_KEY=your_key_here
Create .env in the project root:
EXPO_PUBLIC_API_BASE_URL=http://YOUR_LOCAL_IP:3000
Replace YOUR_LOCAL_IP with your machine's local IP (e.g. 192.168.1.10). Your phone and computer need to be on the same Wi-Fi network.
Start the server:
cd server && npm startStart the app in a separate terminal:
npx expo start --clearScan the QR code with Expo Go.
The server is set up to deploy to Railway. Point it at the server/ folder as the root directory and add ANTHROPIC_API_KEY and API_NINJAS_KEY as environment variables in the Railway dashboard.
Once deployed, update .env in the app:
EXPO_PUBLIC_API_BASE_URL=https://your-app.railway.app
- Year identification is intentionally conservative. If Claude is not confident about the year from the photo alone, it returns "Unknown" rather than guessing.
- Tyre/tread specs are not included. These depend on what the owner fitted, not the factory spec, so they would require a separate close-up photo of the tyre sidewall.
- API keys in
.envfiles are git-ignored. Do not commit them.