JetScan is an android application that allows you to scan and save documents with ease and speed. With Features like auto edge detection, auto crop, and auto enhance, you can scan documents with just a few taps. (The app is still in development and needs more improvements 🚧)
- Java: 17
- Gradle: 8.7
- Kotlin: 1.9.0
- Android SDK: Min 23, Target 31
- Platform Support: Android
- Orientation: Portrait, Landscape
JetScan is built using MVVM architecture with Repository pattern. The project is divided into 3 main modules:
app: Contains the data and presentation logic.opencv: Contains the OpenCV library and JNI bindings.pdf: Contains the PDF generation logic.
To know more on the architecture and how new screens are constructed, refer to the Architecture document.
| Login | Register |
|---|---|
![]() |
![]() |
| Home | Scan |
|---|---|
![]() |
![]() |
| Scanner | Preview |
|---|---|
![]() |
![]() |
In order to view more screens in details, visit the Screens document.
In order to setup the project, please check with the Compatibility section and ensure you have the required tools installed. The project is dependent on Firebase for authentication and OCR.
git clone https://github.com/JetScan-Technologies/jetscan-androidAuthenication currently uses Firebase Auth. To setup Firebase Auth, follow the steps below:
- Go to the Firebase Console.
- Create a new project.
- Add an Android app to the project.
- Enable Email/Password in authentication in the Firebase Console.
- Download the
google-services.jsonfile and place it in theappdirectory.
The App also uses Google Sign-In. To setup Google Sign-In, follow the steps below:
- Go the Firebase project settings and enable Google Sign-In.
- Generate a SHA-1 key using the following command:
gradlew signingReport- Add the SHA-1 key to the Firebase Console.
- Redownload the
google-services.jsonfile and place it in theappdirectory. - Additionally, add
GOOGLE_CLIENT_IDin thelocal.propertiesfile.
To use the OCR functionality, you need to add a service account to the Firebase project. Follow the steps below:
- Go to the Firebase Console and create a new service account.
- Add
Document AI Adminstratorrole to the service account. - Download the service account key and place it in the
appdirectory and rename toservice-account.json. - Create a processor in the Document AI console and get the processor endpoint
- Seperate the base URL and endpoint and add it to the
local.propertiesfile in following way.
GCP_DOCUMENT_AI_BASE_URL=<base-url>
GCP_DOCUMENT_AI_ENDPOINT=<endpoint>To use pdf tools features, you need to add a backend url to local.properties.
JETSCAN_BACKEND_URL=<backend-url>Currently, the backend is not open sourced and is in development but the release app works properly.
Use the following command to build and run the project:
gradlew assembleDebugThe debug version of the app will be installed on the device.
To build a release version of the app, follow the steps below:
- Create a new keystore file using the following command:
keytool -genkey -v -keystore release-keystore -alias <alias-here> -keyalg RSA -keysize 2048 -validity 10000- Place the keystore file in the root directory of the project.
- Generate the SHA-1 key using the following command:
keytool -list -v -keystore release-keystore -alias <alias-here>-
Add the SHA-1 key to the Firebase Console and update the
google-services.jsonfile. -
Make a new file named
key.propertiesin theappdirectory. -
Add the following properties to the
key.propertiesfile:
storePassword=<store-password>
keyPassword=<key-password>
keyAlias=<key-alias>
storeFile=<keystore-file>- Build the release version using the following command:
gradlew assembleReleaseAs of now, the app doesn't relies only on Firebase for Auth and Crashlytics. It doesn't have any linting or testing setup.
JetScan is an open source project and is open to contributions. If you have any suggestions or improvements, feel free to create a pull request. If you encounter any issues, please create an issue in the repository.
- Add more document edit features like watermark, signature, text addition etc.
- Fix import pdf view and add more pdf features.
- Optimize the document recognition to work on all types of documents.
- More settings and a subscription model for the app.
- Translation and localization of the app.
- Add hints when user is first time using the app.
This project is licensed under the MIT License - see the LICENSE file for details.
For any queries or suggestions, feel free to reach out to at Email





