docs: release 1.0.0
- Updated README to reflect Windows Portable focus - Removed references to Mac/Linux builds - Updated tech stack and project structure documentation - Updated Contributing section
This commit is contained in:
170
README.md
170
README.md
@@ -22,7 +22,7 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<img src="https://img.shields.io/badge/Desktop_App-Windows%20%7C%20macOS%20%7C%20Linux-blue?style=for-the-badge" alt="Desktop Apps" />
|
<img src="https://img.shields.io/badge/Desktop_App-Windows_Portable-blue?style=for-the-badge&logo=windows&logoColor=white" alt="Windows App" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -81,7 +81,7 @@ In a world where document formatting tools are increasingly locked behind paywal
|
|||||||
- **🎨 150+ Typography Styles** — Curated across 8 aesthetic categories
|
- **🎨 150+ Typography Styles** — Curated across 8 aesthetic categories
|
||||||
- **📐 Multiple Paper Sizes** — A4 and Letter formats supported
|
- **📐 Multiple Paper Sizes** — A4 and Letter formats supported
|
||||||
- **💾 Local Processing** — Your documents never leave your machine
|
- **💾 Local Processing** — Your documents never leave your machine
|
||||||
- **🖥️ Native Desktop Apps** — Built with Tauri for Windows, macOS, and Linux
|
- **🖥️ Native Desktop App** — Built with Tauri for Windows (Portable EXE)
|
||||||
- **📥 One-Click Export** — Clean `.docx` files ready for Microsoft Word
|
- **📥 One-Click Export** — Clean `.docx` files ready for Microsoft Word
|
||||||
|
|
||||||
### 🏛️ Style Categories
|
### 🏛️ Style Categories
|
||||||
@@ -157,16 +157,13 @@ Every style includes meticulously configured:
|
|||||||
|
|
||||||
Just download and run:
|
Just download and run:
|
||||||
- 🪟 **Windows**: `TypoGenie.exe` — Single executable, runs immediately
|
- 🪟 **Windows**: `TypoGenie.exe` — Single executable, runs immediately
|
||||||
- 🍎 **macOS**: `TypoGenie.app` — Drag and run
|
|
||||||
- 🐧 **Linux**: `TypoGenie.AppImage` — Make executable and run
|
|
||||||
|
|
||||||
**How it works:**
|
**How it works:**
|
||||||
```
|
```
|
||||||
📁 Your Folder/
|
📁 Your Folder/
|
||||||
├── 🚀 TypoGenie.exe ← Run this
|
├── 🚀 TypoGenie.exe ← Run this
|
||||||
└── 📂 TypoGenie-Data/ ← Auto-created on first run
|
├── 📂 templates/ ← JSON templates (must be next to EXE)
|
||||||
├── config.json ← Your settings
|
└── 📂 TypoGenie-Data/ ← Auto-created on first run (settings/cache)
|
||||||
└── cache/ ← Temporary files
|
|
||||||
```
|
```
|
||||||
|
|
||||||
✅ **No installer** — Just double-click the EXE
|
✅ **No installer** — Just double-click the EXE
|
||||||
@@ -211,24 +208,17 @@ npm run desktop
|
|||||||
npm run desktop:build
|
npm run desktop:build
|
||||||
```
|
```
|
||||||
|
|
||||||
**Build outputs:**
|
**Build output:**
|
||||||
|
|
||||||
| Platform | Output Location | Result |
|
| Platform | Output Location | Result |
|
||||||
|----------|----------------|--------|
|
|----------|----------------|--------|
|
||||||
| **Windows** | `src-tauri/target/release/typogenie.exe` | ⚡ **Portable EXE** — Run immediately, no install |
|
| **Windows** | `src-tauri/target/release/TypoGenie.exe` | ⚡ **Portable EXE** — Run immediately, no install |
|
||||||
| **Windows** | `src-tauri/target/release/bundle/nsis/*.exe` | 📦 NSIS Installer (optional) |
|
|
||||||
| **macOS** | `src-tauri/target/release/bundle/dmg/*.dmg` | 🍎 DMG with App bundle |
|
|
||||||
| **Linux** | `src-tauri/target/release/bundle/appimage/*.AppImage` | 🐧 Portable AppImage |
|
|
||||||
|
|
||||||
**For the truly portable Windows experience:**
|
**For the truly portable Windows experience:**
|
||||||
```bash
|
1. Build the release (`npm run tauri build`).
|
||||||
# After building, grab the raw EXE:
|
2. Copy `TypoGenie.exe` from `src-tauri/target/release/` to a new folder.
|
||||||
copy src-tauri\target\release\typogenie.exe "C:\Path\To\Your\Portable\Folder\"
|
3. **CRITICAL**: Copy the `src-tauri/templates/` folder to that SAME folder.
|
||||||
|
4. Run `TypoGenie.exe`.
|
||||||
# Run it:
|
|
||||||
"C:\Path\To\Your\Portable\Folder\typogenie.exe"
|
|
||||||
# Creates TypoGenie-Data/ folder next to EXE automatically
|
|
||||||
```
|
|
||||||
|
|
||||||
### Usage
|
### Usage
|
||||||
|
|
||||||
@@ -273,42 +263,9 @@ copy src-tauri\target\release\typogenie.exe "C:\Path\To\Your\Portable\Folder\"
|
|||||||
|
|
||||||
### Style System Deep Dive
|
### Style System Deep Dive
|
||||||
|
|
||||||
Each style in TypoGenie is defined by a comprehensive configuration object:
|
Styles in TypoGenie are defined entirely in **JSON**, making them easy to edit and share.
|
||||||
|
|
||||||
```typescript
|
**Template Structure (`.json`):**
|
||||||
interface StyleOption {
|
|
||||||
id: string; // Unique identifier
|
|
||||||
name: string; // Display name
|
|
||||||
category: string; // Grouping category
|
|
||||||
description: string; // What this style evokes
|
|
||||||
vibe: string; // Emotional keywords
|
|
||||||
googleFontsImport: string; // Font resources
|
|
||||||
|
|
||||||
wordConfig: {
|
|
||||||
heading1: DocxStyleConfig; // H1 formatting rules
|
|
||||||
heading2: DocxStyleConfig; // H2 formatting rules
|
|
||||||
body: DocxStyleConfig; // Body text rules
|
|
||||||
accentColor: string; // Theme accent color
|
|
||||||
};
|
|
||||||
|
|
||||||
previewCss: string; // Web preview styling
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**The Dual Rendering Challenge:**
|
|
||||||
|
|
||||||
TypoGenie maintains two parallel rendering paths for every style:
|
|
||||||
1. **Web Preview** — CSS-based preview in the browser
|
|
||||||
2. **DOCX Export** — Programmatic document generation via the `docx` library
|
|
||||||
|
|
||||||
This ensures WYSIWYG fidelity: what you see in the preview is what you get in Word.
|
|
||||||
|
|
||||||
### Adding Custom Styles
|
|
||||||
|
|
||||||
Want to contribute a new style to the collective? Here's how:
|
|
||||||
|
|
||||||
1. **Choose a Category** — Find the appropriate file in `/styles/`
|
|
||||||
2. **Define Your Style** — Create a complete `StyleOption` object:
|
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -317,23 +274,10 @@ Want to contribute a new style to the collective? Here's how:
|
|||||||
"category": "Creative",
|
"category": "Creative",
|
||||||
"description": "A brief description of the aesthetic",
|
"description": "A brief description of the aesthetic",
|
||||||
"vibe": "Keywords that capture the feeling",
|
"vibe": "Keywords that capture the feeling",
|
||||||
"googleFontsImport": "https://fonts.googleapis.com/css2?family=YourFont&display=swap",
|
"googleFontsImport": "https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap",
|
||||||
"typography": {
|
"typography": {
|
||||||
"fonts": {
|
"fonts": { "heading": "Roboto", "body": "Roboto" },
|
||||||
"heading": "Your Font",
|
"colors": { "text": "1a1a1a", "background": "ffffff", "accent": "6366f1" }
|
||||||
"body": "Your Body Font",
|
|
||||||
"code": "Your Code Font"
|
|
||||||
},
|
|
||||||
"colors": {
|
|
||||||
"text": "1a1a1a",
|
|
||||||
"textSecondary": "4a4a4a",
|
|
||||||
"background": "ffffff",
|
|
||||||
"accent": "6366f1",
|
|
||||||
"border": "e5e5e5",
|
|
||||||
"codeBg": "f3f4f6",
|
|
||||||
"blockquoteBg": "f9fafb",
|
|
||||||
"blockquoteBorder": "6366f1"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"elements": {
|
"elements": {
|
||||||
"h1": {
|
"h1": {
|
||||||
@@ -343,26 +287,26 @@ Want to contribute a new style to the collective? Here's how:
|
|||||||
"bold": true,
|
"bold": true,
|
||||||
"spacing": { "before": 24, "after": 12, "line": 1.2 }
|
"spacing": { "before": 24, "after": 12, "line": 1.2 }
|
||||||
},
|
},
|
||||||
"p": {
|
...
|
||||||
"font": "body",
|
|
||||||
"size": 11,
|
|
||||||
"color": "text",
|
|
||||||
"spacing": { "before": 0, "after": 10, "line": 1.5 }
|
|
||||||
}
|
|
||||||
// ... define other elements (h2-h6, blockquote, code, etc.)
|
|
||||||
},
|
|
||||||
"page": {
|
|
||||||
"margins": { "top": 72, "bottom": 72, "left": 72, "right": 72 },
|
|
||||||
"columns": 1,
|
|
||||||
"header": true,
|
|
||||||
"footer": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Save It** — Save as a `.json` file in `src-tauri/templates/<category>/`
|
**The Dual Rendering Architecture:**
|
||||||
4. **Build** — The app automatically loads JSON templates at runtime
|
|
||||||
5. **Share With All** — Submit a PR so everyone benefits!
|
TypoGenie maintains two parallel rendering paths:
|
||||||
|
1. **Web Preview** — Dynamically generates CSS from your JSON config on the fly.
|
||||||
|
2. **DOCX Export** — Programmatically builds Word styles using the exact same JSON config.
|
||||||
|
|
||||||
|
This ensures WYSIWYG fidelity: what you see in the preview is what you get in Word.
|
||||||
|
|
||||||
|
### Adding Custom Styles
|
||||||
|
|
||||||
|
Want to contribute a new style?
|
||||||
|
|
||||||
|
1. **Create a JSON file** in a folder inside `templates/` (e.g., `templates/my-category/my-style.json`).
|
||||||
|
2. **Define your style** using the schema above.
|
||||||
|
3. **Restart the app** (or click refresh) — TypoGenie automatically discovers all `.json` files in the `templates/` directory.
|
||||||
|
|
||||||
### Configuration Options
|
### Configuration Options
|
||||||
|
|
||||||
@@ -373,14 +317,6 @@ Want to contribute a new style to the collective? Here's how:
|
|||||||
| **A4** | 210mm × 297mm | International use, academic papers |
|
| **A4** | 210mm × 297mm | International use, academic papers |
|
||||||
| **Letter** | 8.5in × 11in | US/Canada, business documents |
|
| **Letter** | 8.5in × 11in | US/Canada, business documents |
|
||||||
|
|
||||||
#### Margins
|
|
||||||
|
|
||||||
All documents use generous, readable margins:
|
|
||||||
- **Top/Bottom:** 1 inch (25.4mm)
|
|
||||||
- **Left/Right:** 1.2 inches (30.5mm)
|
|
||||||
|
|
||||||
This follows established typographic best practices for comfortable reading.
|
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -405,40 +341,24 @@ npm run tauri # Access Tauri CLI directly
|
|||||||
|
|
||||||
```
|
```
|
||||||
typogenie/
|
typogenie/
|
||||||
├── 📁 src/ # Source code
|
├── 📁 src/ # Frontend source code (React)
|
||||||
│ ├── 📁 components/ # React components
|
│ ├── 📁 components/ # UI components
|
||||||
│ │ ├── FileUpload.tsx # Drag-and-drop upload zone
|
│ │ ├── FileUpload.tsx # Drag-and-drop upload zone
|
||||||
│ │ ├── StyleSelector.tsx # Style gallery with live preview
|
│ │ ├── StyleSelector.tsx # Style gallery
|
||||||
│ │ ├── Preview.tsx # Final preview & DOCX export
|
│ │ └── Preview.tsx # Final preview & export
|
||||||
│ │ └── StylePreviewModal.tsx # (Optional) Modal preview
|
│ ├── 📁 services/ # Logic
|
||||||
│ ├── 📁 styles/ # Typography style definitions
|
│ │ ├── templateLoader.ts # Loads JSON templates via Rust
|
||||||
│ ├── 📄 main.tsx # React entry point
|
│ │ └── templateRenderer.ts # Generates CSS/DOCX from JSON
|
||||||
│ ├── 📄 App.tsx # Main application component
|
│ ├── 📁 hooks/ # React hooks
|
||||||
│ ├── 📄 types.ts # TypeScript interfaces
|
│ └── 📄 App.tsx # Main application component
|
||||||
│ └── 📄 constants.ts # Configuration exports
|
|
||||||
├── 📁 src-tauri/ # Tauri desktop app
|
├── 📁 src-tauri/ # Tauri desktop app
|
||||||
│ ├── 📁 src/ # Rust source code
|
│ ├── 📁 src/ # Rust backend code (filesystem access)
|
||||||
│ ├── 📁 icons/ # App icons
|
│ ├── 📁 templates/ # DEFAULT TEMPLATES (bundled with app)
|
||||||
|
│ │ ├── 📁 minimalist/
|
||||||
|
│ │ ├── 📁 tech/
|
||||||
|
│ │ └── ...
|
||||||
│ ├── 📄 Cargo.toml # Rust dependencies
|
│ ├── 📄 Cargo.toml # Rust dependencies
|
||||||
│ └── 📄 tauri.conf.json # Tauri configuration
|
│ └── 📄 tauri.conf.json # Tauri configuration
|
||||||
├── 📁 styles/ # Typography style definitions
|
|
||||||
│ ├── index.ts # Aggregates all categories
|
|
||||||
│ ├── minimalist.ts # 11 clean styles
|
|
||||||
│ ├── corporate.ts # 13 professional styles
|
|
||||||
│ ├── editorial.ts # Magazine aesthetics
|
|
||||||
│ ├── tech.ts # Modern tech vibes
|
|
||||||
│ ├── creative.ts # Artistic expressions
|
|
||||||
│ ├── vintage.ts # Historical elegance
|
|
||||||
│ ├── lifestyle.ts # Warm & personal
|
|
||||||
│ ├── industrial.ts # Technical & mechanical
|
|
||||||
│ ├── academic.ts # Scholarly formats
|
|
||||||
│ ├── volume1.ts # Legacy collection
|
|
||||||
│ └── volume2.ts # Extended collection
|
|
||||||
├── 📁 services/ # (Currently empty - local processing!)
|
|
||||||
├── 📄 App.tsx # Main application with state machine
|
|
||||||
├── 📄 types.ts # TypeScript interfaces
|
|
||||||
├── 📄 constants.ts # Configuration exports
|
|
||||||
├── 📄 index.html # Entry HTML with Tailwind CDN
|
|
||||||
└── 📄 vite.config.ts # Build configuration
|
└── 📄 vite.config.ts # Build configuration
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
BIN
TypoGenie-v1.0.0-Windows-Portable.zip
Normal file
BIN
TypoGenie-v1.0.0-Windows-Portable.zip
Normal file
Binary file not shown.
Reference in New Issue
Block a user