83 lines
3.1 KiB
Markdown
83 lines
3.1 KiB
Markdown
# 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](https://reactnative.dev/) (v0.85.3) & [Expo](https://expo.dev/) (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:
|
|
```bash
|
|
git clone <repository-url>
|
|
cd Schnappix
|
|
```
|
|
|
|
2. Install dependencies:
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
3. Prebuild the native Android project (required due to custom native plugins):
|
|
```bash
|
|
npx expo prebuild --platform android
|
|
```
|
|
|
|
4. Run the app on an Android device or emulator:
|
|
```bash
|
|
npm run android
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```text
|
|
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](LICENSE) file for more information.
|