SnapShot

SnapShot - Photo Management Application

Overview

SnapShot is a comprehensive photo management application that combines a web-based camera interface with cloud storage integration. It provides real-time photo capture, local storage, and automatic synchronization with Immich (a self-hosted photo management service).

Features

Web Interface

Backend API

Architecture

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Web Frontend  │───▶│   Backend API   │───▶│  Immich Cloud   │
│                 │    │                 │    │                 │
│ • Camera Feed   │    │ • File Storage  │    │ • Asset Upload  │
│ • Filters       │    │ • API Endpoints │    │ • Album Mgmt    │
│ • Gallery       │    │ • Cloud Sync    │    │ • Backup        │
└─────────────────┘    └─────────────────┘    └─────────────────┘

System Requirements

Runtime Environment

Dependencies

Installation & Setup

1. Environment Configuration

Create a .env file with the following variables:

IMMICH_BASE_URL=https://your-immich-instance.com/api
IMMICH_API_KEY=your-immich-api-key
IMMICH_ALBUM_ID=your-target-album-id

2. Directory Structure

The application expects the following structure:

project-root/
├── photos/                 # Auto-created photo storage
├── public/                 # Web interface files
│   ├── index.html         # Main interface
│   ├── styles.css         # Styling
│   ├── script.js          # Frontend logic
│   ├── SnapShotLogo.png   # Application logo
│   └── qr-code.svg        # Gallery QR code
├── index.js               # Main server file
├── package.json           # Dependencies
└── .env                   # Environment variables

3. Dependencies Installation

The application requires the following packages:

4. Starting the Application

  1. Install dependencies
  2. Configure environment variables
  3. Start the server (default port: 3000)
  4. Access the web interface at http://localhost:3000

API Documentation

See API_DOCUMENTATION.md for complete API reference.

Quick API Overview

Method Endpoint Description
GET / Web interface
GET /photos List all photos
GET /photos/{filename} Access specific photo
POST /photos Save new photo
DELETE /photos/{filename} Delete photo

Web Interface Features

Camera Controls

Photo Management

Mobile Support

Integration Details

Immich Cloud Storage

The application automatically integrates with Immich for:

  1. Asset Upload: Photos are uploaded as assets
  2. Metadata: Includes device ID, timestamps, and file info
  3. Album Assignment: Automatic addition to specified album
  4. Backup: Redundant cloud storage for safety

Security & Privacy

Data Protection

Privacy Features

Configuration Options

Timer Settings

Filter Options

File Management

Troubleshooting

Common Issues

  1. Camera Access Denied
    • Check browser permissions
    • Ensure HTTPS for remote access
    • Verify camera device availability
  2. Upload Failures
    • Verify Immich API credentials
    • Check network connectivity
    • Confirm album ID exists
  3. Storage Issues
    • Ensure write permissions on photos directory
    • Check available disk space
    • Verify file system access

Error Responses

All API errors return JSON format:

{
  "error": "Error description"
}

Debug Mode

Check server logs for detailed error information and upload status.

Browser Compatibility

Supported Browsers

Required Features

Performance Considerations

Optimization Features

Resource Usage

Contributing

Development Setup

  1. Clone repository
  2. Install dependencies
  3. Configure test environment
  4. Run development server

Code Structure

License

[Specify your license here]

Support

For issues, questions, or contributions: