What gets synced
Only two files are synced to Google Drive:decks.json— all deck and card dataquiz_sessions.json— active quiz session progress
updated_at timestamp wins.
Synced files live in the hidden Drive AppData folder. They are not visible in the normal Google Drive file browser and cannot be accessed by other apps or people viewing your Drive.
End users (official build)
The official release includes embedded OAuth credentials. No Google Cloud setup is required. When you click Sign in with Google in the app, it opens a browser window for you to authorize access. After authorization, atoken.json file is saved locally and used for all future sync requests.
Developer setup (custom Google Cloud project)
If you want to use your own Google Cloud project — for example, when building from source or distributing a fork — follow these steps to create and configure your own credentials.Create a Google Cloud project
Go to console.cloud.google.com and create a new project. Give it a descriptive name like
flashcard-sync.Enable the Google Drive API
In the left menu, go to APIs & Services → Library. Search for Google Drive API and click Enable.
Configure the OAuth Consent Screen
Go to APIs & Services → OAuth Consent Screen.
- Choose Internal if your Google Workspace organization will use the app, or External for personal use.
- For External apps in testing, add your own email address as a test user.
- Fill in the required app name and contact fields and save.
Create an OAuth Client ID credential
Go to APIs & Services → Credentials → Create Credentials → OAuth Client ID.
- Set the application type to Desktop app.
- Give it a name and click Create.
Download and place the credentials file
Click Download JSON on the credential you just created. Rename the downloaded file to
credentials.json and place it in the project root directory (the same folder as app.py or the .exe).The app checks for credentials.json first and uses it instead of the embedded credentials if it is present.File reference
| File | Purpose | Created by |
|---|---|---|
credentials.json | OAuth client configuration from Google Cloud Console | You (manual step) |
token.json | Stored OAuth token after first sign-in | App (automatic) |
decks.json and settings.json.
Revoking access
To disconnect the app from your Google account:- Click Sign out in the app. This deletes your local
token.json. - To fully revoke access, go to myaccount.google.com/permissions and remove the app from your authorized applications.
What happens if sync fails
What happens if sync fails
The sync service handles intermittent connection issues gracefully. If a sync request fails, the app continues working locally and retries on the next sync trigger. Local data is never overwritten by a failed sync.
Using the mobile app with Drive sync
Using the mobile app with Drive sync
The Android app also supports Google Drive sync using its own OAuth flow (
expo-auth-session). The same decks.json and quiz_sessions.json files are read and written, so data is shared between desktop and mobile as long as both are signed in to the same Google account.Gemini API keys
Add and manage API keys for AI scanning.
Data storage
Understand how data is stored locally.