Skip to content

prvious/obj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Obj

A modern desktop application for managing S3-compatible storage buckets, built as an alternative to S3 Browser.

Overview

Obj is a cross-platform desktop application that provides a user-friendly interface for managing S3-compatible object storage. Built with Tauri 2.x and React 19, it offers fast performance, low memory footprint, and native OS integration.

Features

  • Manage multiple S3-compatible storage providers
  • Create, list, and manage buckets
  • Support for major S3 providers (AWS S3, MinIO, Wasabi, DigitalOcean Spaces, Backblaze B2)
  • Custom S3-compatible endpoint support
  • Secure credential management
  • Modern, responsive UI with dark mode support
  • Native desktop application performance

Tech Stack

Frontend:

  • React 19
  • TypeScript 5.8
  • TanStack Router (file-based routing)
  • Vite 7.x
  • Tailwind CSS 4
  • shadcn/ui components

Backend:

  • Tauri 2.x (Rust-based desktop framework)
  • AWS SDK for Rust (aws-sdk-s3)
  • Tokio async runtime

Package Manager: pnpm (required)

Prerequisites

  • Node.js 18+ (recommended: latest LTS)
  • pnpm 8+
  • Rust 1.70+ (for Tauri development)
  • Platform-specific dependencies:
    • macOS: Xcode Command Line Tools
    • Linux: Development packages (see Tauri prerequisites)
    • Windows: Visual Studio C++ Build Tools

Installation

# Clone the repository
git clone <repository-url>
cd obj

# Install dependencies
pnpm install

Development

# Start Vite dev server only (frontend at http://localhost:1420)
pnpm dev

# Start Tauri development mode with hot reload (RECOMMENDED)
pnpm tauri dev

# Preview production build
pnpm preview

Building

# Build frontend (TypeScript compilation + Vite build)
pnpm build

# Build Tauri application for production
pnpm tauri build

The built application will be available in src-tauri/target/release/bundle/.

Testing

# Run unit and feature tests
pnpm test

# Run tests in UI mode
pnpm test:ui

# Run specific test file
pnpm test tests/feature/example.spec.ts

Code Quality

# Format code with Prettier
pnpm format

# Run ESLint
pnpm lint

# Check Rust code
cd src-tauri && cargo check

# Format Rust code
cd src-tauri && cargo fmt

Architecture

Frontend-Backend Communication

Obj uses Tauri's IPC (Inter-Process Communication) for type-safe communication between the React frontend and Rust backend:

// Frontend (TypeScript)
import { invoke } from '@tauri-apps/api/core';

const result = await invoke('create_bucket', { input: { bucketName, region } });
// Backend (Rust)
#[tauri::command]
async fn create_bucket(input: CreateBucketInput) -> Result<Response, ErrorResponse> {
    // Implementation
}

Project Structure

obj/
├── src/                    # React frontend source
│   ├── components/         # React components
│   ├── routes/            # TanStack Router file-based routes
│   ├── types/             # TypeScript type definitions
│   └── lib/               # Utilities and helpers
├── src-tauri/             # Rust backend
│   ├── src/
│   │   ├── models/        # Data models
│   │   ├── s3/            # S3 operations
│   │   └── errors/        # Error handling
│   └── Cargo.toml         # Rust dependencies
├── tests/                 # Vitest tests
│   ├── unit/              # Unit tests
│   └── feature/           # Feature tests
└── components.json        # shadcn/ui configuration

Supported S3 Providers

  • AWS S3
  • MinIO
  • Wasabi
  • DigitalOcean Spaces
  • Backblaze B2
  • Custom S3-compatible endpoints

Recommended IDE Setup

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests and linting (pnpm test && pnpm lint && pnpm format)
  5. Commit your changes with conventional commits
  6. Push to your branch
  7. Open a Pull Request

License

[Add your license here]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published