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.
In loving memory of Jin the hedgehog ๐ฆ
- Recursively scans your chosen folder for config files
- Automatically detects
.env,.yaml,.json, and.tomlfiles - Ignores common directories (
node_modules,.git,dist, etc.) - Handles nested objects by flattening to dot-notation
- 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
- Missing Keys: Shows which keys are missing from each
.envfile - Duplicates: Identifies keys that appear in multiple files
- Parse Errors: Catches and reports malformed config files
- 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 to multiple formats:
.env,JSON, orYAML - 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
- 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
- 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
- macOS: 11+ (Big Sur or later)
- Windows: 10+ (coming soon)
- Linux: Ubuntu 20.04+ (coming soon)
Download the latest release for your platform:
- macOS: Download
.dmginstaller from Releases - Windows: Download
.msior.exeinstaller (coming soon) - Linux: Download
.debor.AppImage(coming soon)
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 buildBuilt installers will be in src-tauri/target/release/bundle/
- Click "Choose Project Folder" on the welcome screen
- Or use keyboard shortcut: โO (Mac) / Ctrl+O (Windows/Linux)
- Check the Issues Panel on the left for:
- Missing keys in
.envfiles - Duplicate keys across files
- Parse errors
- Missing keys in
- Celebrate when you see "All Clear!" ๐
- 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
- 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
- Click "Export Template" in the footer
- Select format:
.env,JSON, orYAML - Choose save location
- Share with your team!
- โO / Ctrl+O: Open folder picker
- โR / Ctrl+R: Rescan current project
- โE / Ctrl+E: Export template
- 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
- 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
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
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
See ROADMAP.md for detailed plans.
- 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
- 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
- Live file watching with auto-rescan
- Production build configuration
- Distribution ready (DMG, MSI, DEB, AppImage)
- Two-file diff view
- JSON Schema validation
- Auto-update mechanism
- Homebrew formula
- Plugin system
- CLI companion
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes
- Push to the branch
- Open a Pull Request
# 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 lintSee DISTRIBUTION.md for detailed build and distribution instructions.
MIT License - see LICENSE for details
- 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
- Issues: GitHub Issues
- Discussions: GitHub Discussions
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 โค๏ธ
