Files
Schnappix/README.md
T

3.1 KiB

Schnappix

Schnappix is a tablet-optimized Photobooth application built with React Native and Expo. It provides a full-featured, interactive photo capturing experience, complete with external hardware support and an administrative interface.

Features

  • Photobooth Experience: Intuitive flow from start screen to countdown, photo capture, and final preview.
  • Multiple Photos & Collages: Capture single or multiple photos and review them in a generated collage.
  • Direct Printing: Built-in support for IPP (Internet Printing Protocol) network printers to instantly print captured moments.
  • Kiosk Mode: Custom native Android implementation to lock the tablet down to the Schnappix app, preventing users from exiting the photobooth.
  • USB Camera Support: Extends standard camera capabilities to support external USB cameras for higher quality photos.
  • Admin Dashboard: Secure administrative screen (protected by an admin password) to configure settings on the fly:
    • Countdown duration
    • Printer IP address
    • Kiosk mode toggle
    • Admin password changes
  • Offline Storage: Saves captured photos directly to the device's local storage and gallery.

Tech Stack

  • Framework: React Native (v0.85.3) & Expo (SDK 56)
  • Language: TypeScript
  • Key Libraries:
    • expo-camera: Camera interface
    • expo-media-library & expo-file-system: Photo storage
    • ipp-encoder: Network printing integration
    • react-native-view-shot: Capturing collages as images
    • Custom native Expo plugins (withKioskAdmin, withUsbCamera, withSettingsRepositories) for extended Android capabilities.

Getting Started

Prerequisites

  • Node.js (v18+)
  • npm or yarn
  • Expo CLI
  • Android Studio / Android SDK (for building the native Android app, as it uses custom native modules)

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd Schnappix
    
  2. Install dependencies:

    npm install
    
  3. Prebuild the native Android project (required due to custom native plugins):

    npx expo prebuild --platform android
    
  4. Run the app on an Android device or emulator:

    npm run android
    

Project Structure

Schnappix/
├── App.tsx                  # Main entry point and navigation logic
├── app.json                 # Expo configuration and plugin registration
├── plugins/                 # Custom Expo config plugins for Android features
├── modules/                 # Custom native modules (e.g., kiosk-mode)
└── src/
    ├── screens/             # UI Screens (Home, Camera, Preview, Admin)
    ├── services/            # Core logic (printer.ts, settings.ts, storage.ts)
    └── styles/              # Global styles and theme configurations

Configuration

When the app is first launched, you can access the Admin Dashboard from the Home screen. From here, you can define your hardware settings like the Printer's local IP address and adjust the capture countdown timer.

License

See the LICENSE file for more information.