Skip to content

Repository files navigation

๐Ÿงช DarkroomPro

A professional desktop application for calculating precise film development parameters with scientifically accurate timing, temperature compensation, and dilution ratios for over 428 film/developer combinations.

Platform Support License Built with

๐Ÿ“ธ App Preview

DarkroomPro Application Screenshot

DarkroomPro's intuitive interface showing film selection, developer options, temperature compensation, and built-in development timer.

๐ŸŽฏ Key Features

  • 46 Film Stocks - Comprehensive database of B&W, color negative, and slide films
  • 18+ Developers - Popular developers with precise dilution ratios
  • 428 Combinations - Tested film/developer pairings with accurate data
  • Temperature Compensation - Per-developer curves sourced from manufacturer charts (15-30ยฐC)
  • Push/Pull Processing - Accurate calculations for ยฑ3 stops
  • Multi-Step Timer - Auto, Buffer and Manual step transitions with a customizable step editor
  • Agitation Reminders - Chimes and prompts for the published agitation schedule
  • Darkroom Mode - Safelight theme, focus display, agitation chimes and screen wake-lock in one toggle
  • Built-in Timer - Integrated countdown with audio alerts
  • Export Functionality - Save calculations as JSON, CSV, or PDF
  • Cross-Platform - Native apps for macOS, Windows, and Linux

โœจ Features

๐Ÿ“Š Comprehensive Database

  • 46 Film Stocks: Complete database of B&W, color negative, and slide films
  • 18+ Developers: Popular developers with precise dilution ratios
  • 428 Combinations: Tested film/developer pairings with accurate data
  • Manufacturer Grouping: Films organized by brand for easy selection

๐Ÿงฎ Advanced Calculations

  • Temperature Compensation: Per-developer curves for all B&W developers, derived from Kodak and Ilford temperature charts, with a sourced global fallback
  • Push/Pull Processing: Accurate calculations for ยฑ3 stops exposure compensation
  • Dilution Calculator: Optimal developer-to-water ratios with precise measurements
  • Type-Safe Calculations: Rust-powered calculation engine for guaranteed accuracy

โฑ๏ธ Professional Timer

  • Multi-Step Process Timer: The developer step is timed from the calculation; add your own bleach, blix, fixer, stabilizer or rinse steps and enter their times from your kit instructions
  • Transition Modes: Auto-advance, Buffer (custom 1-60s prep window) or Manual start
  • Agitation Reminders: Cue chimes and on-screen prompts from each combination's agitation schedule
  • Step Editor: Add, reorder, remove or retime steps per film/developer; times are saved automatically
  • Darkroom Mode: One toggle for the red safelight theme, fullscreen focus display, wake-lock and chimes
  • Audio Alerts: Step changes, agitation cues and completion tones

๐Ÿ“ค Export & Sharing

  • Multiple Formats: Export calculations as JSON, CSV, or PDF reports
  • Timestamped Reports: Professional calculation summaries
  • Database Export: Complete film/developer database summaries

๐Ÿ–ฅ๏ธ Cross-Platform

  • Desktop Apps: Native installers for Windows, macOS, and Linux
  • Web Version: Browser-based version for any platform
  • Responsive Design: Optimized for desktop and tablet use

๐Ÿ—๏ธ Architecture

Hybrid Rust-JavaScript Design

  • Rust Backend: Type-safe calculation engine with comprehensive error handling
  • JavaScript Frontend: Responsive UI with smooth interactions
  • Smart Bridge: Automatic detection of desktop vs web environment
  • Graceful Fallback: Uses Rust when available, JavaScript otherwise

Tech Stack

  • Frontend: Vanilla JavaScript, HTML5, CSS3 with Inter font
  • Backend: Rust with Tauri framework
  • Database: Structured JSON with comprehensive validation
  • Calculations: Decimal precision arithmetic for accurate results
  • Build System: Cargo + Tauri for cross-platform compilation

๐Ÿ“ฅ Installation

Desktop Apps (Recommended)

Note: Release builds are unsigned. On macOS, right-click the app and choose Open the first time you launch it; on Windows, SmartScreen may ask you to confirm.

macOS

  1. Download DarkroomPro_1.2.0_universal.dmg from Releases
  2. Open the DMG file
  3. Drag DarkroomPro to Applications folder
  4. Launch from Applications or Launchpad

Windows

  1. Download DarkroomPro_1.2.0_x64_en-US.msi from Releases
  2. Run the installer
  3. Follow installation wizard
  4. Launch from Start Menu or Desktop

Linux

  1. Download DarkroomPro_1.2.0_amd64.deb (Debian/Ubuntu), DarkroomPro-1.2.0-1.x86_64.rpm (RedHat/Fedora), or DarkroomPro_1.2.0_amd64.AppImage (portable)
  2. Install using your package manager:
    # Debian/Ubuntu
    sudo dpkg -i DarkroomPro_1.2.0_amd64.deb
    
    # RedHat/Fedora
    sudo rpm -i DarkroomPro-1.2.0-1.x86_64.rpm
  3. Launch from applications menu

๐Ÿš€ Quick Start

  1. Select your film stock from the categorized dropdown
  2. Choose your developer (filtered based on film compatibility)
  3. Set your temperature (B&W: 15-30ยฐC with automatic compensation; colour kits with a published time/temperature table โ€” Tetenal, CineStill, Unicolor โ€” can be run at lower temperatures, otherwise use the fixed kit temperature)
  4. Adjust push/pull if needed (ยฑ3 stops)
  5. Set solution volume (100-2000ml)
  6. Calculate and get precise development time and dilution
  7. Start the timer and develop with confidence!
  8. Export results for your records

๐Ÿ› ๏ธ Development

Prerequisites

  • Node.js 18+ - JavaScript runtime
  • Rust 1.70+ - For Tauri backend compilation
  • Platform-specific tools:
    • macOS: Xcode Command Line Tools
    • Windows: Microsoft C++ Build Tools
    • Linux: build-essential, libwebkit2gtk-4.1-dev, libssl-dev

Setup

# Clone repository
git clone https://github.com/Panolix/DarkroomPro.git
cd DarkroomPro

# Install dependencies
npm install

# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Development Commands

Web Development

# Start web development server
npm run web:dev
# Opens at http://localhost:8000

Desktop Development

# Start desktop app in development mode
npm run tauri:dev
# Hot-reloads both frontend and backend

Building

# Build web version
npm run build

# Build desktop app for current platform
npm run tauri:build

# Build for specific platform (cross-compilation)
npm run tauri:build -- --target x86_64-pc-windows-msvc

Project Structure

DarkroomPro/
โ”œโ”€โ”€ src-tauri/           # Rust backend
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ main.rs      # Tauri app entry point
โ”‚   โ”‚   โ”œโ”€โ”€ models.rs    # Data structures
โ”‚   โ”‚   โ”œโ”€โ”€ calculator.rs # Calculation engine
โ”‚   โ”‚   โ”œโ”€โ”€ database.rs  # Database management
โ”‚   โ”‚   โ””โ”€โ”€ export.rs    # Export functionality
โ”‚   โ”œโ”€โ”€ Cargo.toml       # Rust dependencies
โ”‚   โ””โ”€โ”€ tauri.conf.json  # Tauri configuration
โ”œโ”€โ”€ dist/                # Built web assets
โ”œโ”€โ”€ *.js                 # Frontend JavaScript
โ”œโ”€โ”€ *.css                # Styling
โ”œโ”€โ”€ *.html               # HTML templates
โ””โ”€โ”€ complete_database.json # Film/developer database

๐Ÿงช Database

The application includes a comprehensive database of film stocks and developers:

Film Stocks (46)

  • Black & White: Kodak Tri-X, Ilford HP5+, Fujifilm Acros, etc.
  • Color Negative: Kodak Portra, Fujifilm Pro 400H, Cinestill 800T, etc.
  • Slide Film: Kodak Ektachrome, Fujifilm Velvia, Provia, etc.

Developers (18)

  • B&W: D-76, HC-110, Rodinal, Xtol, etc.
  • Color: C-41 kits, E-6 kits
  • Specialized: Push/pull optimized formulations

Data Provenance

Every film/developer combination carries a source, source_url, and verified_date field. Black & white base times and push/pull values are researched from the Massive Dev Chart (which aggregates manufacturer-published times and curated user data); where a combination was re-sourced, the source_url points at the exact chart query used. Push/pull values are taken from the chart's published exposure-index rows for that film/dilution; when no reliable row exists the field is left empty and the app falls back to the Massive Dev Chart push guideline (separate factors for standard developers, compensating developers and T-Max films), so no values are fabricated. Color (C-41/E-6) push and pull times follow the process tables in the database. The database is validated by automated tests (cargo test) that check key resolution, source coverage, and time monotonicity.

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Adding Film/Developer Data

  • Edit complete_database.json with new entries
  • Follow existing data structure
  • Include accurate development times and dilutions
  • Test with the application before submitting

๐Ÿ“„ License

This project is licensed under CC BY-NC-SA 4.0 - free for personal and educational use. Commercial use requires permission.

๐Ÿ‘จโ€๐Ÿ’ป Author

Panagiotis Smponias

๐Ÿ™ Acknowledgments

  • Film development data compiled from the Massive Dev Chart, manufacturer specifications (Kodak, Ilford, Fujifilm technical publications), the Film Photography Project, and community darkroom testing
  • Community testing and feedback from analog photography enthusiasts
  • Built with Tauri - Rust-powered desktop apps
  • UI styled with Inter font family, bundled with the app under the SIL Open Font License

Perfect companion for analog photographers seeking precision in their darkroom workflow.

About

DarkroomPro - a precision film development calculator for B&W, C-41 and E-6: 428 film/developer combinations, sourced development times, temperature compensation, push/pull and a built-in darkroom timer with agitation cues.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages