Skip to content

Commit 004b3e5

Browse files
Update documentation for v0.2.0 with split/merge features
1 parent 0c423fe commit 004b3e5

File tree

3 files changed

+133
-184
lines changed

3 files changed

+133
-184
lines changed

README.md

Lines changed: 97 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,71 @@
1-
# JSON to CSV Converter (Multi-File)
1+
# FileShift
22

3-
A powerful native macOS application for converting JSON files to CSV format with advanced schema analysis and field merging capabilities.
3+
A powerful native macOS application for converting, splitting, and merging JSON, JSONL, and CSV files.
44

5-
![Build Status](https://github.com/simplifi/json-converter/workflows/Build%20JSON%20to%20CSV%20Converter/badge.svg)
5+
**Version 0.2.0**
66

77
---
88

9-
## 🚀 Quick Start
9+
## Quick Start
1010

11-
**Download for your Mac:**
12-
- [📥 Intel Mac](https://github.com/simplifi/json-converter/releases/latest/download/JSON-to-CSV-Converter-intel.dmg)[📥 Apple Silicon](https://github.com/simplifi/json-converter/releases/latest/download/JSON-to-CSV-Converter-apple-silicon.dmg)
11+
**Download:** [FileShift for Apple Silicon](https://github.com/simplifi/FileShift/releases/latest/download/FileShift-apple-silicon.dmg) (M1/M2/M3/M4)
1312

14-
**⚠️ First Launch:** Right-click the app and select "Open" to bypass the security warning (see [Installation](#installation) for details)
13+
**First Launch:** Right-click the app and select "Open" to bypass the security warning (see [Installation](#installation) for details)
1514

1615
---
1716

1817
## Features
1918

20-
- 🚀 **Batch Processing**: Convert multiple JSON files at once
21-
- 🧠 **Smart Schema Analysis**: Automatically analyzes and compares schemas across files
22-
- 🔀 **Multiple Merge Strategies**:
19+
### Convert Tab
20+
- **Batch Processing**: Convert multiple JSON files to CSV at once
21+
- **Smart Schema Analysis**: Automatically analyzes and compares schemas across files
22+
- **Multiple Merge Strategies**:
2323
- Smart Auto: Fields present in 70%+ of files
2424
- All Available: Union of all fields across files
2525
- Common Only: Fields present in ALL files
2626
- Most Complete File: Use the file with most fields as template
2727
- Keep Separate: Individual CSV files with their own schemas
28-
- 📊 **Nested Field Support**: Handles complex nested JSON structures
29-
- 🖥️ **Native macOS Interface**: Built with PyQt6 for a smooth, native experience
30-
- 📝 **Real-time Status Logging**: Track conversion progress with detailed logs
31-
32-
## 📥 Download
33-
34-
### Quick Download (Latest Release)
28+
- **Nested Field Support**: Handles complex nested JSON structures
29+
30+
### Split Tab
31+
- **Split by Number of Files**: Divide a file into N equal parts
32+
- **Split by Rows**: Create files with a specific number of records each
33+
- **Split by Size**: Create files of approximately N kilobytes each
34+
- **Format Flexibility**: Input can be JSON, JSONL, or CSV; output format is selectable
35+
36+
### Merge Tab
37+
- **Combine Multiple Files**: Merge any number of files into one
38+
- **Mixed Format Support**: Merge JSON, JSONL, and CSV files together
39+
- **Schema Strategies**:
40+
- Union: Include all fields from all files
41+
- Intersection: Only include fields common to all files
42+
- First File: Use the schema from the first file
43+
- **Output Format Selection**: Choose JSON, JSONL, or CSV output
44+
45+
### General
46+
- **Native macOS Interface**: Built with PyQt6 for a smooth, native experience
47+
- **Real-time Progress**: Track operations with progress bars and status logs
48+
- **Memory Efficient**: Streaming processing for large files
49+
50+
## Download
3551

3652
| Mac Type | Download Link |
3753
|----------|--------------|
38-
| **Intel Macs** | [📥 Download Intel DMG](https://github.com/simplifi/json-converter/releases/latest/download/JSON-to-CSV-Converter-intel.dmg) |
39-
| **Apple Silicon** (M1/M2/M3) | [📥 Download Apple Silicon DMG](https://github.com/simplifi/json-converter/releases/latest/download/JSON-to-CSV-Converter-apple-silicon.dmg) |
40-
41-
> **📋 All Releases**: View all versions on the [Releases page](https://github.com/simplifi/json-converter/releases)
54+
| **Apple Silicon** (M1/M2/M3/M4) | [Download DMG](https://github.com/simplifi/FileShift/releases/latest/download/FileShift-apple-silicon.dmg) |
4255

43-
### How to check your Mac type
44-
1. Click the Apple menu > About This Mac
45-
2. Look for "Chip" or "Processor"
46-
- Intel processor = Download Intel version
47-
- Apple M1/M2/M3 = Download Apple Silicon version
56+
> **All Releases**: View all versions on the [Releases page](https://github.com/simplifi/FileShift/releases)
4857
4958
## Installation
5059

51-
1. Download the appropriate DMG file for your Mac
60+
1. Download the DMG file
5261
2. Double-click the DMG to mount it
53-
3. Drag "JSON to CSV Converter" to your Applications folder
62+
3. Drag "FileShift" to your Applications folder
5463
4. **First time running**: The app will show a security warning because it's not signed with an Apple Developer certificate
5564

56-
### 🔒 Security Warning Fix
65+
### Security Warning Fix
5766

5867
When you first run the app, you'll see this warning:
59-
> "JSON to CSV Converter.app" cannot be opened because Apple cannot verify that it is free from malware.
68+
> "FileShift.app" cannot be opened because Apple cannot verify that it is free from malware.
6069
6170
**To safely run the app:**
6271

@@ -66,94 +75,106 @@ When you first run the app, you'll see this warning:
6675
4. The app will now run normally
6776

6877
**Alternative method:**
69-
1. Go to **System Preferences** > **Security & Privacy** > **General**
70-
2. Click **"Open Anyway"** next to the blocked app message
78+
1. Go to **System Settings** > **Privacy & Security**
79+
2. Scroll down and click **"Open Anyway"** next to the blocked app message
7180
3. Enter your password when prompted
7281

73-
**Why this happens:**
74-
- The app is unsigned (requires a paid Apple Developer account)
75-
- This is normal for open-source software distributed outside the Mac App Store
76-
- The warning is Apple's way of ensuring you intentionally want to run the app
77-
7882
**Note:** After the first time, the app will open normally without any warnings.
7983

8084
## Usage
8185

82-
1. **Select JSON Files**: Click "Browse for JSON Files" to select one or more JSON files
83-
2. **Schema Analysis**: The app automatically analyzes the structure of your files
84-
3. **Choose Strategy**: Select how you want to handle different schemas across files
85-
4. **Convert**: Click "Convert All Files" and choose an output directory
86+
### Converting Files
87+
88+
1. Go to the **Convert** tab
89+
2. Click "Browse for JSON Files" to select one or more JSON files
90+
3. The app automatically analyzes the structure of your files
91+
4. Select a merge strategy for handling different schemas
92+
5. Click "Convert All Files" and choose an output directory
8693

87-
### Field Selection Strategies
94+
### Splitting Files
8895

89-
- **Smart Auto**: Includes fields that appear in at least 70% of your files
90-
- **All Available**: Includes every field found across all files (union)
91-
- **Common Only**: Only includes fields that exist in every single file
92-
- **Most Complete File**: Uses the schema from the file with the most fields
93-
- **Keep Files Separate**: Creates individual CSV files, each with its own schema
96+
1. Go to the **Split** tab
97+
2. Select a single input file (JSON, JSONL, or CSV)
98+
3. Choose a split mode:
99+
- **By number of files**: Split into N equal parts
100+
- **By rows per file**: Each output file has N records
101+
- **By file size**: Each output file is approximately N KB
102+
4. Select output format and directory
103+
5. Click "Split File"
104+
105+
### Merging Files
106+
107+
1. Go to the **Merge** tab
108+
2. Select multiple input files (can be mixed formats)
109+
3. Choose a schema strategy:
110+
- **Union**: All fields from all files
111+
- **Intersection**: Only common fields
112+
- **First file**: Use first file's schema
113+
4. Select output format and file path
114+
5. Click "Merge Files"
94115

95116
## Building from Source
96117

97118
### Requirements
98119

99-
- macOS 10.13 or later
100-
- Python 3.8 or later
120+
- macOS 11 or later
121+
- Python 3.9 or later
101122
- PyQt6
102123

103124
### Quick Build
104125

105126
```bash
106127
# Clone the repository
107-
git clone https://github.com/simplifi/json-converter.git
108-
cd json-converter
128+
git clone https://github.com/simplifi/FileShift.git
129+
cd FileShift
109130

110-
# Run the build script
111-
./build_app.sh
112-
```
131+
# Create virtual environment
132+
python -m venv .venv
133+
source .venv/bin/activate
113134

114-
The built application will be in `dist/JSON to CSV Converter.app`
135+
# Install dependencies
136+
pip install PyQt6 pyinstaller
115137

116-
### Building for Different Architectures
138+
# Build the app
139+
pyinstaller --clean fileshift.spec
140+
```
117141

118-
See [README_BUILD.md](README_BUILD.md) for detailed instructions on building for both Intel and Apple Silicon Macs.
142+
The built application will be in `dist/FileShift.app`
119143

120144
## Development
121145

122146
### Setting up the development environment
123147

124148
```bash
125149
# Create virtual environment
126-
python3 -m venv .venv
150+
uv venv
127151
source .venv/bin/activate
128152

129153
# Install dependencies
130-
pip install -r requirements.txt
154+
uv pip install -e ".[dev]"
131155

132156
# Run the application
133157
python json_to_csv_multifile_pyqt.py
158+
159+
# Run tests
160+
pytest
134161
```
135162

136163
### Project Structure
137164

138165
```
139-
json-converter/
140-
├── json_to_csv_multifile_pyqt.py # Main application
141-
├── generate_sample_data.py # Generate test data
142-
├── build_app.sh # Build script
143-
├── requirements.txt # Python dependencies
144-
└── samples/ # Sample JSON files
166+
FileShift/
167+
├── json_to_csv_multifile_pyqt.py # Main GUI application
168+
├── src/
169+
│ └── converters/ # Core conversion library
170+
│ ├── base.py # Base classes and types
171+
│ ├── handlers.py # Format handlers (JSON, JSONL, CSV)
172+
│ └── operations.py # Split and merge operations
173+
├── tests/ # Test suite
174+
├── fileshift.spec # PyInstaller build spec
175+
└── pyproject.toml # Project configuration
145176
```
146177

147-
## Sample Data
148-
149-
Generate sample data for testing:
150-
151-
```bash
152-
python generate_sample_data.py
153-
```
154-
155-
This creates various JSON files with different schemas and sizes in the `samples/` directory.
156-
157178
## Contributing
158179

159180
1. Fork the repository
@@ -173,4 +194,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
173194

174195
## Support
175196

176-
For issues, questions, or contributions, please visit the [GitHub repository](https://github.com/simplifi/json-converter).
197+
For issues, questions, or contributions, please visit the [GitHub repository](https://github.com/simplifi/FileShift).

0 commit comments

Comments
 (0)