Skip to content
/ Cura Public

Cura: AI-Powered Organization for Your Local Library.

Notifications You must be signed in to change notification settings

khuepm/Cura

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cura Photo Manager

A desktop photo management application built with Tauri (Rust backend) and Next.js (React frontend).

Features

  • Automated image and video scanning with metadata extraction
  • AI-powered image classification using Transformers.js
  • Fast thumbnail generation with caching (images and videos)
  • Natural language search with CLIP
  • Google Drive cloud synchronization
  • SQLite database for efficient metadata storage
  • Support for multiple image formats (JPEG, PNG, HEIC, RAW)
  • Support for multiple video formats (MP4, MOV, AVI, MKV, etc.)
  • Configurable format selection for images and videos
  • Video thumbnail extraction using FFmpeg

For detailed video features documentation, see the Video Features User Guide.

Tech Stack

Backend (Rust)

  • Tauri: Desktop application framework
  • image: Image processing and manipulation
  • kamadak-exif: EXIF metadata extraction
  • rayon: Parallel processing
  • walkdir: Directory traversal
  • rusqlite: SQLite database
  • ffmpeg-sidecar: Video frame extraction
  • proptest: Property-based testing

Frontend (Next.js/React)

  • Next.js: React framework
  • @xenova/transformers: Browser-based AI models
  • react-window: Virtual scrolling for performance
  • Tailwind CSS: Styling
  • fast-check: Property-based testing
  • vitest: Testing framework

Development Setup

Prerequisites

  • Node.js 20+ and npm/pnpm
  • Rust 1.77.2+
  • Cargo
  • FFmpeg (required for video thumbnail generation)

Installation

  1. Install FFmpeg (if not already installed):

    • Windows: choco install ffmpeg or see installation guide
    • macOS: brew install ffmpeg
    • Linux: sudo apt install ffmpeg (Ubuntu/Debian)
  2. Install dependencies:

npm install
  1. Run in development mode:
npm run tauri dev

Testing

Run frontend tests:

npm test

Run Rust tests:

cd src-tauri
cargo test

Building

Build for production:

npm run tauri build

Releases

Creating a Release

To create a complete release with all artifacts:

Windows:

.\scripts\prepare-release.ps1 -Version "1.0.0"

macOS/Linux:

./scripts/prepare-release.sh 1.0.0

This will:

  • Run all tests
  • Build release artifacts for your platform
  • Generate SHA-256 checksums
  • Create release notes from template
  • Create testing checklist

Release Documentation

Verifying Downloads

Users can verify installer integrity:

# Windows
.\scripts\verify-checksum.ps1 -InstallerPath "installer.exe" -ChecksumFile "checksums.txt"

# macOS/Linux
./scripts/verify-checksum.sh installer.dmg checksums.txt

Project Structure

.
├── src/                    # Next.js frontend source
│   ├── app/               # Next.js app router pages
│   ├── components/        # React components
│   └── __tests__/         # Frontend tests
├── src-tauri/             # Rust backend source
│   └── src/
│       ├── database.rs    # SQLite database module
│       ├── lib.rs         # Main application entry
│       └── main.rs        # Binary entry point
├── .kiro/specs/           # Feature specifications
└── public/                # Static assets

Database Schema

The application uses SQLite with three main tables:

  • images: Stores image metadata and file paths
  • tags: AI-generated content tags with confidence scores
  • embeddings: CLIP embeddings for semantic search

License

[Your License Here]

About

Cura: AI-Powered Organization for Your Local Library.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors