Skip to content

elvisthebuilder/OffReel

Repository files navigation

OffReel — Immersive Offline Video Vault & Feed

OffReel Website Latest Release Discord Server

OffReel is a beautiful, offline-first mobile app that turns your phone's local video gallery into a dynamic, zero-latency vertical feed. Experience your own personal videos with the same fluid, continuous swipe mechanics as modern social platforms—with 100% privacy, zero algorithms, and zero ads.


Features You'll Love

  • Vertical Reels-Style Feed: Swipe up or down to scroll chronologically through your video gallery in a smooth, continuous vertical layout.
  • Absolute Privacy & 100% Offline: No accounts, no login, and no internet required. Your private personal videos never leave the glass of your phone.
  • Immersive Gestures: Long-press anywhere on the screen to instantly pause the video and hide all UI overlays for a distraction-free "clean" view. Long-press on the right edge to fast-forward.
  • Double-Tap to Favorite: Love a memory? Quickly double-tap anywhere on the screen to add it to your favorites with a beautiful physical vibration (haptics) and a cinematic heart burst effect.
  • Aspect Ratio Control: Switch instantly between Fill Frame (Cover) to immerse yourself in the action, or Original View (Contain) to see the full format. Tap the floating icon on paused videos or change it in the full-screen settings modal.
  • Flexible Synchronization Engines:
    • Live OS Gallery (Auto-Sync): Automatically scan and sync new videos from your device's camera roll seamlessly in the background.
    • Custom Vault (Manual Mode): Handpick exactly which videos you want to include in your OffReel feed through a secure grid with built-in selection locks.
  • Glassmorphic Actions: A beautiful floating panel at the bottom of the feed lets you instantly favorite items, share videos natively to other apps, or view local file details.
  • High-End Aesthetic Skeletons: Gorgeous, smooth shimmering screens ensure the app feels premium and alive even when initializing your media vault.

How to Download & Install (Android)

OffReel is currently distributed as a standalone, zero-bloat Android package (.APK) for maximum control and privacy.

  1. Download the APK: Visit our Official Landing Page or download the latest compiled .apk package directly from our GitHub Releases Page.
  2. Allow Unknown Sources: If your phone prompts you about installing applications from "Unknown Sources" or your web browser, tap Settings in the prompt and enable "Allow from this source".
  3. Install: Tap the downloaded .apk file and tap Install in the native Android dialog.
  4. Grant Permissions: Upon launching OffReel, permit the app to access your media files so it can securely populate your offline feed.

User Manual & Controls

OffReel features highly intuitive gestures and a simple settings hub designed to keep you in complete control:

Gesture / Action Action Performed
Swipe Up / Down Seamlessly navigates to the next or previous video in your vault.
Single Tap Pauses or resumes playback. While paused, a play icon overlay will appear.
Double Tap Favorites the active video, triggering a physical haptic pulse and heart explosion.
Long Press (Left/Center) Pauses the video and hides all UI elements for an immersive view. Resumes on release.
Long Press (Right Edge) Fast-forwards the video playback. Normal speed resumes on release.
Progress Bar Tap or drag the progress bar at the bottom to seek and scrub through the video.
Pill Menu (Bottom) Tap Heart to favorite, Paper Plane to share, and Ellipsis (...) to view file names.
Gear Icon (Top Right) Opens the full-screen Vault Settings dashboard.

Vault Settings Overview

Open settings by tapping the gear icon at the top right of your screen:

  • Display Ratio: Set whether videos default to Fill Frame or Original View.
  • Sync Engine: Toggle between Live OS Gallery (auto-sync) and Custom Vault (manual selection).
  • Danger Zone: Click Reset & Wipe Global Vault to clear your favorites, reset default ratios, and start fresh.

Troubleshooting Common Issues

  • Video is blank, black, or hanging? Hardware video decoders can occasionally hang on raw device files. Simply open Settings (gear icon) and tap "Refresh Media Bridge". This will instantly reset the local media decoders and restore your feed immediately.
  • Want to add more manual videos? If you're using Custom Vault mode, you'll see a white + button under the gear icon on the top right. Tap it to select new videos from your device.
  • How do I clear my cache? OffReel automatically runs a silent media cache purge on every cold boot to prevent temporary frame buffers from bloating your device storage. If you want to clear your saved vault metadata, open settings, scroll to the bottom, and tap "Reset & Wipe Global Vault". Your physical video files in your phone's gallery will never be deleted.

Community

Join our active Discord community to talk with the creator, share your feedback, report issues, and help shape our feature roadmap!

Join the OffReel Discord Server

Want to contribute code? Read the Contributing Guide to get started.


For Developers (Optional)

If you are a developer looking to build the application from source code:

  1. Clone the repository and install dependencies: pnpm install.
  2. Start the local server: pnpm start.
  3. To trigger standalone APK builds using EAS: pnpm exec eas build --profile preview --platform android.

Code Quality Tooling

OffReel uses ESLint and Prettier to enforce consistent code style and catch bugs early. These run automatically over the entire src/ directory.

Tools

Tool Purpose
ESLint v8 (eslint-config-universe/native) Enforces React Native best practices, React Hooks rules, import ordering, and unused variable detection
Prettier Ensures uniform code formatting (single quotes, trailing commas, 100-char line width)
eslint-plugin-react-hooks Catches missing useEffect dependencies and other hook violations

Configuration Files

File Description
.eslintrc.js ESLint rules and preset configuration
.prettierrc Prettier formatting preferences
.eslintignore Excludes node_modules/, android/, ios/, .expo/ from linting

Available Scripts

# Scan the entire codebase for lint violations
pnpm lint

# Auto-format all files according to Prettier rules
pnpm format

# Auto-fix all lint issues that can be resolved automatically
pnpm exec eslint . --fix

Key Rules Enforced

  • No unused variables or imports — dead code is flagged immediately.
  • React Hooks exhaustive deps — missing useEffect dependencies are warned about to prevent stale closure bugs.
  • Import ordering — third-party packages must come before local imports.
  • No duplicate imports — the same module cannot be imported twice.
  • Consistent formatting — Prettier enforces a single canonical style.

Note: When a stable Animated ref (e.g. videoOpacity, posterOpacity) is used inside a useEffect, it is intentionally excluded from the dependency array with an // eslint-disable-next-line comment and an explanatory note. useRef values never change identity so adding them would cause no benefit and misleading re-runs.


Developed by elvisthebuilder

About

Watch all your videos like you're online. Zero algorithms. 100% offline.

Topics

Resources

Contributing

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors