A collection of custom applications for Flipper Zero.
| App | Description | Version | Category |
|---|---|---|---|
| Big Clock | Bedside/tableside clock with adjustable brightness (0-100%) | 1.3 | Tools |
| Reality Clock | Real dimensional stability monitor using CC1101 multi-band RSSI analysis | 4.1 | Tools |
- Python 3.10+
- Poetry (recommended) or pip
- Flipper Zero device
# Clone the repository
git clone https://github.com/Eris-Margeta/flipper-apps.git
cd flipper-apps
# Install dependencies with Poetry
poetry install
# Navigate to an app and build
cd apps/big-clock
poetry run ufbt
# Build and install to connected Flipper Zero
poetry run ufbt launchAlternative: Using pip
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install ufbt
pip install ufbt
# Build and run
cd apps/big-clock
ufbt launchcd apps/<app-name>
poetry run ufbt # Build only
poetry run ufbt launch # Build + install + run on FlipperThe compiled .fap file will be in dist/.
This project includes just command recipes for convenient building and installation.
# macOS
brew install just
# Linux
cargo install just
# or: apt install just
# Windows
choco install just| Command | Description |
|---|---|
just install-all |
Install all apps to Flipper (excludes _template) |
just install <app> |
Install a specific app by folder name |
just build-all |
Build all apps without installing |
just build <app> |
Build a specific app |
just clean-all |
Clean all build artifacts |
just clean <app> |
Clean a specific app's build artifacts |
just list |
List available apps |
(there's a bug on just install all; it requires adding a wait time before a person manually exits each app on the flipper device before another installation starts. TODO: add later)
# Install all apps to your Flipper
just install-all
# Install only the big-clock app
just install big-clock
# Build without installing
just build reality-clock
# See available apps
just listIf you're using a virtualenv or global pip install instead of Poetry, use justfile.python:
# Activate your virtualenv first, then:
just -f justfile.python install-all
just -f justfile.python install big-clock| Justfile | Uses | When to Use |
|---|---|---|
justfile (default) |
poetry run python -m ufbt |
Poetry users (recommended) |
justfile.python |
python3 -m ufbt |
Virtualenv or global pip users |
See docs/DEVELOPMENT_TIPS.md for lessons learned, including:
- Flicker-free brightness control - The NightStand Clock approach
- Always-on backlight - Proper use of notification sequences
- Rolling buffers - Stable sensor readings
- Hardware access - SubGHz radio, temperature sensor
- Code organization - Recommended patterns
-
Copy the template:
cp -r apps/_template apps/your-app-name
-
Update files:
application.fam- Set uniqueappid,name, versionapp.c- Implement your appREADME.md- Document your app (see README requirements below)VERSION- Set version number
-
Create icon and screenshots
-
Build and test:
cd apps/your-app-name poetry run ufbt launch
See CONTRIBUTING.md for detailed guidelines.
For Flipper App Catalog submission, individual app READMEs must follow these rules:
| Rule | Description |
|---|---|
| Max heading level: 2 | Only use # (H1) and ## (H2) headings. Level 3+ (###, ####) are forbidden. |
| Single H1 | Use one # heading for the app title only |
| Flat structure | Organize content under ## sections without nesting |
This is a requirement for PRs to the flipper-application-catalog.
flipper-apps/
├── .github/workflows/ # CI configuration
├── apps/
│ ├── _template/ # Template for new apps
│ ├── big-clock/ # Big Clock application
│ └── reality-clock/ # Reality Dimension Clock (experimental)
├── docs/
│ ├── PUBLISHING.md # Catalog publishing guide
│ └── DEVELOPMENT_TIPS.md # Tips & tricks for app development
├── justfile # Just commands (Poetry)
├── justfile.python # Just commands (Python/pip)
├── CONTRIBUTING.md # Contribution guidelines
├── SECURITY.md # Security policy
├── LICENSE # MIT License
└── README.md # This file
Each app contains:
apps/<app-name>/
├── application.fam # App manifest
├── *.c / *.h # Source files
├── README.md # Documentation
├── changelog.md # Version history
├── VERSION # Version number
├── icon.png # 10x10px 1-bit icon
└── screenshots/ # qFlipper screenshots
Follow this workflow to develop and submit apps to the official Flipper App Catalog.
┌─────────────────────────────────────────────────────────────────────────┐
│ 1. DEVELOP Create feature branch, implement your app │
│ ↓ │
│ 2. PR TO MAIN Open PR, CI runs automatically to validate build │
│ ↓ │
│ 3. MERGE After review, merge to main branch │
│ ↓ │
│ 4. TAG Create version tag: git tag appname-v1.0 │
│ ↓ │
│ 5. PUSH TAG Push tag: git push origin appname-v1.0 │
│ ↓ │
│ 6. RELEASE GitHub Action builds app, creates release with .fap │
│ ↓ │
│ 7. SUBMIT PR to flipper-application-catalog with commit hash │
└─────────────────────────────────────────────────────────────────────────┘
1. Develop on a feature branch
git checkout -b feat/my-new-app
# ... develop your app ...2. Open PR to main
- CI workflow runs automatically on PRs
- Validates build, checks file structure, verifies version consistency
- Green CI = safe to merge
3. Merge to main
- After code review and CI passes, merge your PR
- Your code is now on the stable
mainbranch
4-5. Create and push a version tag
git checkout main
git pull origin main
git tag reality-clock-v4.0 # App-specific tag
git push origin reality-clock-v4.06. GitHub Release is created automatically
- Release workflow triggers on tag push
- Builds the app and uploads
.fapfile as release asset - Release notes generated automatically
7. Submit to Flipper App Catalog
# Get the commit hash from main
git rev-parse HEADThen submit a PR to flipper-application-catalog with your manifest.yml pointing to that commit hash.
The Flipper App Catalog clones your repo at the specific commit hash in your manifest. That commit must be on a public, stable branch (main). If you reference a commit from a feature branch that gets deleted or rebased, the catalog build will break.
This monorepo supports two release types that can coexist:
| Release Type | Purpose | Example Tags |
|---|---|---|
| App-specific | Individual app updates | reality-clock-v4.0, big-clock-v1.2-beta |
| Monorepo bundle | Coordinated stable release | v2026.01, v1.0.0 |
Recommended workflow:
reality-clock-v4.0 # Stable release of reality-clock
reality-clock-v4.1-beta # Beta testing new features
reality-clock-v4.1 # Promote beta to stable
v2026.02 # Stable bundle (all apps known-good)
App-specific releases:
<app-folder-name>-v<version>[-prerelease]
Examples:
reality-clock-v4.0 # Stable release
reality-clock-v4.1-beta # Beta release
reality-clock-v4.1-rc1 # Release candidate
big-clock-v1.2-alpha # Alpha release
big-clock-v1.2-nightly # Nightly build
Monorepo releases:
v<version>[-prerelease]
Examples:
v2026.01 # January 2026 stable bundle
v1.0.0 # Semantic version stable
v2026.02-beta # Beta bundle
The release workflow validates that your tag matches the VERSION file:
Tag: reality-clock-v4.0
VERSION file: 4.0
✅ Match - release proceeds
Tag: reality-clock-v4.1
VERSION file: 4.0
❌ Mismatch - release fails
Before tagging, always update:
apps/<app>/VERSION- The version numberapps/<app>/application.fam- Thefap_versionfieldapps/<app>/changelog.md- Document changes
Adding these suffixes marks the release as a pre-release on GitHub:
| Suffix | Meaning |
|---|---|
-alpha |
Early development, unstable |
-beta |
Feature complete, testing |
-rc1, -rc2 |
Release candidate |
-dev |
Development snapshot |
-nightly |
Automated nightly build |
Pre-releases are clearly marked with
# 1. Update version files
echo "4.1" > apps/reality-clock/VERSION
# Also update application.fam fap_version="4.1"
# 2. Commit changes
git add .
git commit -m "Bump reality-clock to v4.1"
# 3. Create and push tag
git tag reality-clock-v4.1
git push origin main
git push origin reality-clock-v4.1
# 4. GitHub Actions creates the release automaticallySee docs/PUBLISHING.md for detailed manifest.yml setup and catalog requirements.
Contributions are welcome! Please read CONTRIBUTING.md before submitting a pull request.
For security concerns, see SECURITY.md.
This project is licensed under the MIT License - see LICENSE for details.
Eris Margeta (@Eris-Margeta)
- Flipper Devices for the hardware and SDK
- Flipper Zero Firmware
- @nymda for the NightStand Clock brightness approach