Skip to content
/ jin Public

๐Ÿฆ” Desktop app for managing configuration files across your projects. Scan .env, YAML, JSON, and TOML files, detect missing keys and duplicates, and export clean templates. 100% local, no telemetry. Built with Tauri 2, React 19, and Rust.

License

Notifications You must be signed in to change notification settings

lance0/jin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

35 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿฆ” Jin - The Config Whisperer

Tame your .envs, calm your configs

Jin is a cross-platform desktop application that scans your project for configuration files, normalizes keys, highlights issues, and helps you maintain clean, consistent config files across your codebase.

Jin Screenshot

In loving memory of Jin the hedgehog ๐Ÿฆ”


โœจ Features

๐Ÿ” Smart Scanning

  • Recursively scans your chosen folder for config files
  • Automatically detects .env, .yaml, .json, and .toml files
  • Ignores common directories (node_modules, .git, dist, etc.)
  • Handles nested objects by flattening to dot-notation

๐Ÿ” Secret Detection

  • Automatically identifies sensitive values (passwords, tokens, API keys)
  • Masks secrets in the UI for privacy
  • Click-to-reveal individual secret values with eye icon
  • Copy individual values to clipboard
  • Warns about sensitive keys in exported files

๐Ÿšจ Issue Detection

  • Missing Keys: Shows which keys are missing from each .env file
  • Duplicates: Identifies keys that appear in multiple files
  • Parse Errors: Catches and reports malformed config files

๐Ÿ“Š Visual Matrix

  • See all keys and their presence across files at a glance
  • Search and filter keys in real-time
  • Show/hide individual file columns
  • Copy individual values or entire file configs
  • View values with type inference (string, number, boolean, null)
  • Responsive table with optimized performance

๐Ÿ“ค Export Clean Configs

  • Export to multiple formats: .env, JSON, or YAML
  • Choose save location with file picker
  • Includes type hints as comments (.env format)
  • Alphabetically sorted keys
  • Blank values ready for your team to fill in

๐ŸŽจ Polished UI

  • Dark and light themes with instant switching
  • Smooth animations and transitions
  • Toast notifications for all actions
  • Comprehensive keyboard shortcuts (โŒ˜O, โŒ˜R, โŒ˜E)
  • Interactive onboarding tour for new users
  • Empty state illustrations
  • Skeleton loading screens
  • Fully responsive design

๐Ÿ‘๏ธ Live File Watching

  • Toggle auto-watch to monitor config files for changes
  • Automatic rescanning when files are modified
  • Debounced updates (1-second delay)
  • Visual indicator when watching is active
  • Notifications when changes are detected

๐Ÿš€ Quick Start

Prerequisites

  • macOS: 11+ (Big Sur or later)
  • Windows: 10+ (coming soon)
  • Linux: Ubuntu 20.04+ (coming soon)

Installation

Option 1: Download Release (Recommended)

Download the latest release for your platform:

  • macOS: Download .dmg installer from Releases
  • Windows: Download .msi or .exe installer (coming soon)
  • Linux: Download .deb or .AppImage (coming soon)

Option 2: Build from Source

Requirements:

  • Node.js 18+ and npm
  • Rust 1.70+

Steps:

# Clone the repository
git clone https://github.com/lance0/jin.git
cd jin/jin-tauri

# Install dependencies
npm install

# Run in development mode
npm run dev

# Build for production (creates installers)
npm run tauri build

Built installers will be in src-tauri/target/release/bundle/


๐Ÿ“– Usage

1. Choose a Project Folder

  • Click "Choose Project Folder" on the welcome screen
  • Or use keyboard shortcut: โŒ˜O (Mac) / Ctrl+O (Windows/Linux)

2. Review Issues

  • Check the Issues Panel on the left for:
    • Missing keys in .env files
    • Duplicate keys across files
    • Parse errors
  • Celebrate when you see "All Clear!" ๐ŸŽ‰

3. Inspect the Matrix

  • Use the Config Matrix to see which keys exist in which files
  • Search for specific keys in the search bar
  • Toggle columns to show/hide specific config files
  • Click eye icon to reveal masked secret values
  • Click copy icon to copy individual values
  • Copy all values from a file using the header button

4. Enable Auto-Watch (Optional)

  • Click the eye icon in the header to enable file watching
  • Jin will automatically rescan when config files change
  • Green pulsing dot indicates watching is active

5. Export Template

  • Click "Export Template" in the footer
  • Select format: .env, JSON, or YAML
  • Choose save location
  • Share with your team!

Keyboard Shortcuts

  • โŒ˜O / Ctrl+O: Open folder picker
  • โŒ˜R / Ctrl+R: Rescan current project
  • โŒ˜E / Ctrl+E: Export template

๐Ÿ—๏ธ Tech Stack

Frontend

  • React 19: UI library
  • Vite 5: Build tool
  • TypeScript 5.6+: Type safety
  • Tailwind CSS: Styling
  • Zustand: State management
  • Lucide React: Icons
  • Sonner: Toast notifications

Backend

  • Tauri 2: Desktop framework
  • Rust: Native backend with async/await (Tokio)
  • notify: File system watching with debouncing
  • walkdir: Directory traversal
  • serde: Serialization
  • YAML/JSON/TOML parsers: Multi-format support

๐Ÿ”’ Security & Privacy

Jin is built with privacy-first principles:

โœ… All processing is local - nothing leaves your machine โœ… No telemetry or tracking โœ… Strict Content Security Policy โœ… Sandboxed file system access โœ… Secrets are masked by default โœ… No eval(), no remote scripts


๐Ÿ“ Project Structure

jin-tauri/
โ”œโ”€โ”€ src/                    # React frontend
โ”‚   โ”œโ”€โ”€ components/         # UI components
โ”‚   โ”‚   โ”œโ”€โ”€ WelcomeScreen.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ Header.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ IssuesPanel.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ ConfigMatrix.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ Footer.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ AboutDialog.tsx
โ”‚   โ”‚   โ””โ”€โ”€ OnboardingTour.tsx
โ”‚   โ”œโ”€โ”€ store/              # Zustand state
โ”‚   โ”‚   โ”œโ”€โ”€ useScan.ts
โ”‚   โ”‚   โ””โ”€โ”€ useFileWatcher.ts
โ”‚   โ”œโ”€โ”€ lib/                # Utilities
โ”‚   โ”‚   โ””โ”€โ”€ utils.ts
โ”‚   โ”œโ”€โ”€ types.ts            # TypeScript types
โ”‚   โ””โ”€โ”€ App.tsx             # Main app component
โ”œโ”€โ”€ src-tauri/              # Rust backend
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ lib.rs          # Tauri entry point
โ”‚   โ”‚   โ”œโ”€โ”€ scanner.rs      # File discovery
โ”‚   โ”‚   โ”œโ”€โ”€ parser.rs       # Config parsing
โ”‚   โ”‚   โ”œโ”€โ”€ analyzer.rs     # Issue detection
โ”‚   โ”‚   โ”œโ”€โ”€ exporter.rs     # Multi-format export
โ”‚   โ”‚   โ”œโ”€โ”€ watcher.rs      # File watching
โ”‚   โ”‚   โ””โ”€โ”€ types.rs        # Rust types
โ”‚   โ””โ”€โ”€ Cargo.toml          # Rust dependencies
โ”œโ”€โ”€ ROADMAP.md              # Future plans
โ”œโ”€โ”€ CHANGELOG.md            # Version history
โ”œโ”€โ”€ DISTRIBUTION.md         # Distribution guide
โ”œโ”€โ”€ LICENSE                 # MIT License
โ””โ”€โ”€ package.json            # npm config

๐Ÿ—บ๏ธ Roadmap

See ROADMAP.md for detailed plans.

MVP โœ… (Completed)

  • Folder scanning with smart ignore patterns
  • Multi-format parsing (.env, YAML, JSON, TOML)
  • Issue detection (missing keys, duplicates, parse errors)
  • Export to multiple formats
  • Polished UI with dark/light themes

Phase 2 โœ… (Completed)

  • Performance optimization (async Rust backend)
  • Interactive onboarding tour
  • Keyboard shortcuts (โŒ˜O, โŒ˜R, โŒ˜E)
  • Copy to clipboard features
  • Column visibility toggles
  • Empty state illustrations
  • Skeleton loading screens

Phase 3 โœ… (Completed)

  • Live file watching with auto-rescan
  • Production build configuration
  • Distribution ready (DMG, MSI, DEB, AppImage)

Future ๐Ÿ”ฎ

  • Two-file diff view
  • JSON Schema validation
  • Auto-update mechanism
  • Homebrew formula
  • Plugin system
  • CLI companion

๐Ÿค Contributing

Contributions are welcome! Please follow these steps:

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

Development Workflow

# Install dependencies
npm install

# Run dev server (auto-reloads on changes)
npm run dev

# Build for production (creates installers)
npm run tauri build

# Lint code
npm run lint

See DISTRIBUTION.md for detailed build and distribution instructions.


๐Ÿ“ License

MIT License - see LICENSE for details


๐Ÿ™ Acknowledgments

  • Jin the hedgehog: This project is dedicated to your memory ๐Ÿฆ”
  • Tauri: For making native desktop apps with web tech possible
  • React team: For React 19
  • shadcn/ui: For beautiful component patterns
  • Vite team: For blazing-fast builds

๐Ÿ“ง Contact


๐Ÿ’ก Why "Jin"?

Jin was a beloved hedgehog who brought joy and comfort. Like Jin, this tool aims to bring calm and order to the often-chaotic world of configuration management. Just as hedgehogs carefully organize their nests, Jin helps you organize your configs.


Made with ๐Ÿฆ” and โค๏ธ

About

๐Ÿฆ” Desktop app for managing configuration files across your projects. Scan .env, YAML, JSON, and TOML files, detect missing keys and duplicates, and export clean templates. 100% local, no telemetry. Built with Tauri 2, React 19, and Rust.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published