PokeDex IRL is an open-source application that identifies real-world animals, insects, and sea life from images and generates creative, Pokédex-style entries using AI and LangGraph agents. It features a modern React UI and a robust FastAPI backend.
- Image Upload & Validation: Upload images of animals, insects, or sea life for instant identification.
 - AI-Powered Identification: Uses advanced LLMs and LangChain agents to identify creatures and generate detailed, Pokédex-style entries.
 - REST API: FastAPI-based backend with endpoints for image upload, creature CRUD, search and identification.
 - Database Storage: Stores creature data in SQLite using SQLModel/SQLAlchemy.
 - Modern Web UI: Vite/React TypeScript frontend for a seamless Pokédex experience.
 - Extensible Agents: Modular agent architecture for scanning and explanation, powered by LangGraph and LangChain.
 
- Backend: Python 3.12+, FastAPI, SQLModel, SQLAlchemy, Pydantic, Uvicorn, Loguru, LangChain, LangGraph
 - Frontend: React 19+, TypeScript, Vite
 - Database: SQLite
 - AI/LLM: OpenAI-compatible LLMs (configurable)
 - Containerization: Docker, Docker Compose
 
pokedex-irl/
├── docker/                  # Docker-related files
│   ├── nginx.conf           # Nginx config for reverse proxy
│   └── start.sh             # Entrypoint script for Docker container
├── pokedex-service/         # FastAPI backend, AI/LLM logic, database, API
│   ├── src/pokedex/
│   │   ├── agent/           # LangChain/LangGraph agents (scanner, explainer)
│   │   ├── creature/        # Creature models, CRUD, dependencies, utils
│   │   ├── config.py        # App configuration
│   │   ├── database.py      # DB setup and session
│   │   ├── llm.py           # LLM integration
│   │   └── main.py          # FastAPI app entrypoint
│   ├── pokedex.db           # SQLite database
│   └── pyproject.toml       # Python project config & dependencies
├── pokedex-ui/              # Vite/React TypeScript frontend
│   ├── src/
│   │   ├── App.tsx, CreatureList.tsx, CreatureCard.tsx, NavBar.tsx, ScanPopup.tsx, ...
│   └── package.json, vite.config.ts, tsconfig.json, ...
├── screenshots/             # Project screenshots
├── docker-compose.yml       # Docker Compose setup for backend + frontend
├── Dockerfile               # Multi-stage Dockerfile for building and running the app
├── .env.example             # Example environment variables
├── static/uploads/          # Uploaded images
├── README.md                # This file
└── LICENSE                  # Apache 2.0 License
- Python 3.12+
 - Node.js 18+
 
cd pokedex-service
python -m venv venv
source venv/bin/activate  # On Windows: .\venv\Scripts\activate
pip install .
# Or, for development:
pip install -e .[test]Create required directories:
mkdir -p static/uploadsRun the development server:
uvicorn src.pokedex.main:app --reloadAPI Documentation:
- Swagger UI: http://localhost:8000/api/v1/docs
 - ReDoc: http://localhost:8000/api/v1/redoc
 
cd pokedex-ui
npm install
npm run devOpen http://localhost:5173 in your browser.
Pokedex IRL can be run in a single Docker container using Docker Compose.
Ensure Docker and Docker Compose are installed. Modify the docker-compose.yml with your environment variables as needed (or create a .env file).
Then run:
docker-compose up --build -dThis will start both the backend (FastAPI) and frontend (Vite/React) services in a single container. The application will be accessible at http://localhost:8080.
- Start the backend and frontend servers as above.
 - Open the frontend in your browser (default: http://localhost:5173).
 - Upload an image to receive a Pokédex-style entry and detailed explanation.
 
POST /api/v1/creature/identify— Upload an image to identify a creature and generate a Pokédex entry.GET /api/v1/creature/— List all creatures in the database.GET /api/v1/creature/{id}— Get details for a specific creature.GET /api/v1/creature/search— Search creatures by name or description.
See Swagger UI for full API details.
Environment variables can be set in a .env file in pokedex-service/ (see src/pokedex/config.py for all options):
MODEL_NAME,MODEL_API_KEY,MODEL_ENDPOINT— LLM configurationIMAGE_MODEL_NAME,IMAGE_MODEL_ENDPOINT,IMAGE_MODEL_API_KEY— Image model config
Contributions are welcome! Please open issues or pull requests for bug fixes, features, or improvements.
Apache License 2.0 — See LICENSE for details.