Skip to main content

Prerequisites

  • Windows (the build target is win-x64)
  • .NET 8 SDKdownload here
  • Node.js — used by the build script to read the version from package.json

Architecture overview

The desktop app is built with WPF on .NET 8 using an MVVM architecture. Key properties from the project file:
  • PublishSingleFile: bundles everything into one EXE
  • SelfContained: includes the .NET runtime — no installation required on the target machine
  • RuntimeIdentifier: targets win-x64
The published EXE is fully self-contained. Users do not need .NET installed to run it.

Run in development

cd appDotNet/FlashcardAI
dotnet run

Build a standalone EXE

1

Navigate to the appDotNet directory

cd appDotNet
2

Run the build script

build_exe.bat
The script runs:
dotnet publish FlashcardAI\FlashcardAI.csproj -c Release
This triggers a Release publish using the settings declared in FlashcardAI.csproj — single-file, self-contained, win-x64.
3

Locate the output

After the build completes, the script renames the output to include the version number. The final file is placed at:
appDotNet\FlashcardAI\bin\Release\net8.0-windows\win-x64\publish\FlashcardAI-DotNet-v<version>.exe
The publish directory opens automatically when the script finishes.

Project configuration (FlashcardAI.csproj)

<PropertyGroup>
  <OutputType>WinExe</OutputType>
  <TargetFramework>net8.0-windows</TargetFramework>
  <UseWPF>true</UseWPF>
  <PublishSingleFile>true</PublishSingleFile>
  <SelfContained>true</SelfContained>
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>
  <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
</PropertyGroup>
Key NuGet dependencies included in the build:
PackagePurpose
Google.Apis.Drive.v3Cloud Sync via Google Drive API
Google.Apis.Oauth2.v2OAuth 2.0 authentication
OpenCvSharp4Video frame extraction for AI OCR
PdfSharpCorePDF handling
SkiaSharpImage rendering

Google Drive credentials

The official release build includes embedded OAuth credentials, so Google Drive Cloud Sync works out of the box without any additional setup.
If you want to use your own Google Cloud project instead:
  1. Go to Google Cloud Console and create a project.
  2. Enable the Google Drive API.
  3. Configure the OAuth Consent Screen.
  4. Create an OAuth Client ID (Desktop App) under Credentials.
  5. Download the JSON file, rename it to credentials.json, and place it in the project root. The app will use this file if it exists, overriding the embedded credentials.

Build the Python app

Package the legacy Python desktop app as a standalone EXE

Build the Android app

Build the React Native app as a release APK

Build docs developers (and LLMs) love