Skip to content
/ CVDex Public

Mobile Pokedex made in Flutter where users scan Pokemon images and store their entries like a real Pokedex.

License

Notifications You must be signed in to change notification settings

Noodulz/CVDex

Repository files navigation

CVDex

Flutter Dart PyTorch Firebase Android Android Studio

CVDEX is a Flutter-based Pokédex app that lets users scan Pokémon images in real life, leveraging a PyTorch model, Firebase integration, and a clean UI inspired by the original Pokédex. Users can build their digital Pokédex while enjoying a gamified experience.

Pidgey Vaporeon

How to Contribute

Prerequisites

Android SDK (>= 34), Android Studio (>= Ladybug version 2024.2), Android emulators, Python 3 (>= 3.6), PyTorch 2.x, Gradle, latest Flutter version (>= 3.24.5), Java JDK 17 or higher (21 recommended)

Starting the Server

To run the PyTorch model server, navigate to models/, install all dependencies with pip install -r requirements.txt, and then run python3 src/server.py which loads the model from Kaggle on a Flask server ready for handling requests.

Building for Android

Before every build and testing every change, run flutter clean before flutter pub get and then flutter build apk. After the APK is built, launch an emulator of your choice by checking flutter emulators and then flutter emulators --launch <emulator id>. After the emulator is launched, install the APK into the emulator with adb install build/app/outputs/flutter-apk/app-release.apk. Then once that's done the app can be launched automatically with adb shell monkey -p com.example.cvdex 1.

Building for Web

When cloning, be sure to run flutter pub get before flutter run with any additional parameters. For chrome the parameters should be -d chrome after flutter run. Note that for Chrome as far as we know, camera integration is not yet enabled so photo uploads will happen by prompting the file explorer instead. To compile a release, run flutter build web --release, navigate to build/web and spin up a web server with python3 -m http.server 8000 (npm http-server also works).