Skip to content

Contributing

FestinBiju edited this page Mar 16, 2026 · 1 revision

Contributing

Thank you for your interest in contributing to Flipqlo! This page covers everything you need to build the project locally and submit a pull request.

For the full contribution guidelines (code style, branch naming, PR checklist), see CONTRIBUTING.md in the root of the repo.


Prerequisites

Windows (.scr)

Tool Version
.NET SDK 10.0 or later
Windows 10/11 SDK (included with Visual Studio)
Visual Studio 2022 Optional — dotnet CLI is sufficient

Android (.apk)

Tool Version
JDK 17 or later
Android Studio Latest stable
Android SDK API 35
Gradle 8.x (wrapper included)

Clone the Repo

git clone https://github.com/FestinBiju/Flipqlo.git
cd Flipqlo

Build: Windows

cd windows-src/Flipqlo
dotnet build

To produce a distributable self-contained .scr:

dotnet publish -c Release -r win-x64 --self-contained true \
  -p:PublishSingleFile=true \
  -p:IncludeNativeLibrariesForSelfExtract=true
# Then rename the output .exe to .scr

Build: Android

cd android-src
./gradlew assembleDebug          # Debug APK
./gradlew assembleRelease        # Release APK (needs signing config)

Output APK: android-src/app/build/outputs/apk/


Project Structure

Flipqlo/
├── windows-src/Flipqlo/       # WPF / C# screensaver
│   ├── Engine/                # ClockEngine, DesignTokens
│   ├── Rendering/             # FlipClockRenderer
│   ├── Native/                # Win32 P/Invoke helpers
│   └── ...
├── android-src/               # Kotlin / Android DreamService
│   └── app/src/main/java/com/flipqlo/screensaver/
├── shared/
│   └── design-tokens.json     # Shared colors, sizes, timings
└── docs/
    └── behavior-spec.md       # Clock animation spec

Submitting a Pull Request

  1. Fork the repository and create a branch: git checkout -b feat/your-feature
  2. Make your changes and test on the relevant platform(s).
  3. Push and open a PR against main.
  4. Fill in the PR template checklist.

A maintainer will review within a few days.

Clone this wiki locally