513 lines
21 KiB
Markdown
513 lines
21 KiB
Markdown
<div align="center">
|
||
|
||
<!-- Animated Banner -->
|
||
<img src="https://capsule-render.vercel.app/api?type=waving&color=0:6366f1,50:8b5cf6,100:a855f7&height=200§ion=header&text=TypoGenie&fontSize=70&fontColor=ffffff&animation=fadeIn&fontAlignY=35" alt="TypoGenie Banner" />
|
||
|
||
<br/><br/>
|
||
|
||
<!-- Beautiful Tagline -->
|
||
<blockquote>
|
||
<i>"From each according to their Markdown, to each according to their Word documents."</i>
|
||
</blockquote>
|
||
|
||
<br/>
|
||
|
||
<!-- Badges -->
|
||
<p>
|
||
<img src="https://img.shields.io/badge/React-19-61DAFB?style=for-the-badge&logo=react&logoColor=white" alt="React" />
|
||
<img src="https://img.shields.io/badge/TypeScript-5.8-3178C6?style=for-the-badge&logo=typescript&logoColor=white" alt="TypeScript" />
|
||
<img src="https://img.shields.io/badge/Vite-6-646CFF?style=for-the-badge&logo=vite&logoColor=white" alt="Vite" />
|
||
<img src="https://img.shields.io/badge/Tailwind-3-06B6D4?style=for-the-badge&logo=tailwindcss&logoColor=white" alt="Tailwind" />
|
||
<img src="https://img.shields.io/badge/Tauri-2-24C8D8?style=for-the-badge&logo=tauri&logoColor=white" alt="Tauri" />
|
||
</p>
|
||
|
||
<p>
|
||
<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>
|
||
<img src="https://img.shields.io/badge/Portable-No_Installation_Required-success?style=for-the-badge&logo=windows-terminal&logoColor=white" alt="Portable" />
|
||
<img src="https://img.shields.io/badge/Zero_Registry-Leave_No_Trace-orange?style=for-the-badge" alt="No Registry" />
|
||
</p>
|
||
|
||
<p>
|
||
<img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="License" />
|
||
<img src="https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square" alt="PRs Welcome" />
|
||
<img src="https://img.shields.io/badge/community-owned-ff69b4?style=flat-square" alt="Community" />
|
||
</p>
|
||
|
||
<br/>
|
||
|
||
<!-- Quick Links -->
|
||
<p>
|
||
<a href="#-features">✨ Features</a> •
|
||
<a href="#-demo">🎨 Demo</a> •
|
||
<a href="#-quick-start">🚀 Quick Start</a> •
|
||
<a href="#-documentation">📚 Docs</a> •
|
||
<a href="#-contributing">🤝 Contribute</a>
|
||
</p>
|
||
|
||
</div>
|
||
|
||
---
|
||
|
||
<br/>
|
||
|
||
## 📖 Manifesto
|
||
|
||
> **TypoGenie** is a free, open-source typesetting engine that democratizes beautiful document creation. No corporate subscriptions. No proprietary lock-in. No gatekeeping. Just you, your words, and 40+ professionally crafted styles ready to transform your Markdown into stunning Microsoft Word documents.
|
||
|
||
In a world where document formatting tools are increasingly locked behind paywalls and cloud dependencies, **TypoGenie stands as a testament to collective utility** — software built for the community, by the community, existing solely to serve the common good of anyone who needs to make their words look beautiful.
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
| 🌟 **Free Forever** | 🔒 **Privacy First** | 🎨 **150+ Styles** | 🤝 **Open Source** |
|
||
|:---:|:---:|:---:|:---:|
|
||
| No fees, no trials, no catches | All processing happens locally on your machine | From minimalist to ornate, academic to artistic | MIT licensed — use it, fork it, improve it together |
|
||
|
||
</div>
|
||
|
||
<br/>
|
||
|
||
---
|
||
|
||
## ✨ Features
|
||
|
||
### 🎯 Core Capabilities
|
||
|
||
- **📄 Universal Markdown Support** — Drop in any `.md`, `.txt`, or `.markdown` file
|
||
- **🎨 150+ Typography Styles** — Curated across 8 aesthetic categories
|
||
- **📐 Multiple Paper Sizes** — A4 and Letter formats supported
|
||
- **💾 Local Processing** — Your documents never leave your machine
|
||
- **🖥️ Native Desktop App** — Built with Tauri for Windows (Portable EXE)
|
||
- **📥 One-Click Export** — Clean `.docx` files ready for Microsoft Word
|
||
|
||
### 🏛️ Style Categories
|
||
|
||
Each of the 163+ styles is a labor of love, crafted with attention to typographic detail:
|
||
|
||
| Category | Description | Example Styles |
|
||
|----------|-------------|----------------|
|
||
| **🤍 Minimalist** | Clean, breathing room, Swiss precision | Swiss Grid, Brutalist, Monospace |
|
||
| **🏢 Corporate** | Professional, authoritative, trustworthy | Executive, Financial, Legal |
|
||
| **📰 Editorial** | Magazine-quality, high-contrast, readable | Glossy, Newsprint, Feature |
|
||
| **💻 Tech** | Modern aesthetics, sleek, future-focused | Product Launch, Venture, Terminal |
|
||
| **🎭 Creative** | Expressive, artistic, bold | Poster, Zine, Experimental |
|
||
| **📜 Vintage** | Timeless elegance, historical charm | Victorian, Art Deco, Baroque |
|
||
| **🌿 Lifestyle** | Warm, inviting, personal | Cookbook, Travel, Botanical |
|
||
| **⚙️ Industrial** | Technical, mechanical, utilitarian | Blueprint, Shipping, Workshop |
|
||
|
||
### 🔤 Typography Features
|
||
|
||
Every style includes meticulously configured:
|
||
|
||
- ✅ **Google Fonts Integration** — Beautiful web fonts that translate to Word
|
||
- ✅ **Hierarchical Headings** — H1-H6 with distinct visual weight
|
||
- ✅ **Body Text Optimization** — Optimal line height, spacing, and readability
|
||
- ✅ **List Formatting** — Bulleted and numbered lists that work
|
||
- ✅ **Blockquote Styling** — Pull quotes with accent colors
|
||
- ✅ **Table Support** — Data tables with proper borders and alignment
|
||
- ✅ **Bold & Italic** — Emphasis that carries through to the final document
|
||
|
||
<br/>
|
||
|
||
---
|
||
|
||
## 🎨 Demo
|
||
|
||
<div align="center">
|
||
|
||
### The Transformation
|
||
|
||
```
|
||
┌─────────────────────────────────────┐ ┌─────────────────────────────────────┐
|
||
│ YOUR INPUT │ │ TYPOGENIE OUTPUT │
|
||
│ ─────────── │ ⚡ │ ──────────────── │
|
||
│ │ → │ │
|
||
│ # My Document │ │ ┌─────────────────────────────┐ │
|
||
│ │ │ │ My Document │ │
|
||
│ Some **bold** text here. │ │ │ (Beautifully │ │
|
||
│ │ │ │ Formatted) │ │
|
||
│ - Point one │ │ └─────────────────────────────┘ │
|
||
│ - Point two │ │ │
|
||
│ │ │ Some bold text here. │
|
||
│ > A wise quote │ │ │
|
||
│ │ │ • Point one │
|
||
│ │ │ • Point two │
|
||
│ │ │ │
|
||
│ │ │ ┌─────────────────────────────┐ │
|
||
│ │ │ │ "A wise quote" │ │
|
||
│ │ │ └─────────────────────────────┘ │
|
||
└─────────────────────────────────────┘ └─────────────────────────────────────┘
|
||
```
|
||
|
||
</div>
|
||
|
||
<br/>
|
||
|
||
---
|
||
|
||
## 🚀 Quick Start
|
||
|
||
### Option 1: Portable Download (Recommended) 🎒
|
||
|
||
**TypoGenie is fully portable** — no installation, no registry entries, no files scattered across your system.
|
||
|
||
Just download and run:
|
||
- 🪟 **Windows**: `TypoGenie.exe` — Single executable, runs immediately
|
||
|
||
**How it works:**
|
||
```
|
||
📁 Your Folder/
|
||
├── 🚀 TypoGenie.exe ← Run this
|
||
├── 📂 templates/ ← JSON templates (must be next to EXE)
|
||
└── 📂 TypoGenie-Data/ ← Auto-created on first run (settings/cache)
|
||
```
|
||
|
||
✅ **No installer** — Just double-click the EXE
|
||
✅ **No registry** — Windows registry untouched
|
||
✅ **No AppData** — Everything stays in the same folder
|
||
✅ **USB-friendly** — Run from a thumb drive anywhere
|
||
✅ **Easy backup** — Copy the whole folder, done
|
||
|
||
### Option 2: Build from Source
|
||
|
||
#### Prerequisites
|
||
|
||
- **Node.js** 18+ (we recommend the latest LTS)
|
||
- **Rust** (for Tauri desktop builds)
|
||
- Your favorite text editor
|
||
|
||
#### Web Development
|
||
|
||
```bash
|
||
# 1. Clone the collective's work
|
||
git clone https://git.lashman.live/lashman/typogenie.git
|
||
|
||
# 2. Enter the commons
|
||
cd typogenie
|
||
|
||
# 3. Gather dependencies (mutual aid from npm)
|
||
npm install
|
||
|
||
# 4. Start the local development server
|
||
npm run dev
|
||
```
|
||
|
||
Your browser will open to `http://localhost:3000` — and you're ready to create!
|
||
|
||
#### Desktop App Development
|
||
|
||
```bash
|
||
# Run in desktop development mode
|
||
npm run desktop
|
||
|
||
# Build desktop app for production
|
||
npm run desktop:build
|
||
```
|
||
|
||
**Build output:**
|
||
|
||
| Platform | Output Location | Result |
|
||
|----------|----------------|--------|
|
||
| **Windows** | `src-tauri/target/release/TypoGenie.exe` | ⚡ **Portable EXE** — Run immediately, no install |
|
||
|
||
**For the truly portable Windows experience:**
|
||
1. Build the release (`npm run tauri build`).
|
||
2. Copy `TypoGenie.exe` from `src-tauri/target/release/` to a new folder.
|
||
3. **CRITICAL**: Copy the `src-tauri/templates/` folder to that SAME folder.
|
||
4. Run `TypoGenie.exe`.
|
||
|
||
### Usage
|
||
|
||
1. **📤 Upload** — Drag and drop your Markdown file (or click to browse)
|
||
2. **🎨 Select Style** — Browse the gallery and click any style for live preview
|
||
3. **📐 Choose Paper Size** — A4 or Letter, depending on your needs
|
||
4. **✨ Generate** — Watch the magic happen (with a satisfying loading animation)
|
||
5. **📥 Download** — Grab your `.docx` file, ready for Word
|
||
|
||
<br/>
|
||
|
||
---
|
||
|
||
## 📚 Documentation
|
||
|
||
### Architecture Overview
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ TYPOGENIE ARCHITECTURE │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||
│ │ UPLOAD │───→│ CONFIG │───→│ PREVIEW │ │
|
||
│ │ (File) │ │ (Style) │ │ (Export) │ │
|
||
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
||
│ │ │ │ │
|
||
│ ▼ ▼ ▼ │
|
||
│ ┌────────────────────────────────────────────────────────────┐ │
|
||
│ │ STATE MACHINE │ │
|
||
│ │ • UPLOAD → CONFIG → GENERATING → PREVIEW → (reset) │ │
|
||
│ └────────────────────────────────────────────────────────────┘ │
|
||
│ │ │ │ │
|
||
│ ▼ ▼ ▼ │
|
||
│ ┌────────────────────────────────────────────────────────────┐ │
|
||
│ │ PROCESSING PIPELINE │ │
|
||
│ │ Markdown → marked parser → HTML → docx library → .docx │ │
|
||
│ └────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### Style System Deep Dive
|
||
|
||
Styles in TypoGenie are defined entirely in **JSON**, making them easy to edit and share.
|
||
|
||
**Template Structure (`.json`):**
|
||
|
||
```json
|
||
{
|
||
"id": "my-custom-style",
|
||
"name": "My Style",
|
||
"category": "Creative",
|
||
"description": "A brief description of the aesthetic",
|
||
"vibe": "Keywords that capture the feeling",
|
||
"googleFontsImport": "https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap",
|
||
"typography": {
|
||
"fonts": { "heading": "Roboto", "body": "Roboto" },
|
||
"colors": { "text": "1a1a1a", "background": "ffffff", "accent": "6366f1" }
|
||
},
|
||
"elements": {
|
||
"h1": {
|
||
"font": "heading",
|
||
"size": 24,
|
||
"color": "text",
|
||
"bold": true,
|
||
"spacing": { "before": 24, "after": 12, "line": 1.2 }
|
||
},
|
||
...
|
||
}
|
||
}
|
||
```
|
||
|
||
**The Dual Rendering Architecture:**
|
||
|
||
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
|
||
|
||
#### Paper Sizes
|
||
|
||
| Size | Dimensions | Best For |
|
||
|------|------------|----------|
|
||
| **A4** | 210mm × 297mm | International use, academic papers |
|
||
| **Letter** | 8.5in × 11in | US/Canada, business documents |
|
||
|
||
<br/>
|
||
|
||
---
|
||
|
||
## 🛠️ Development
|
||
|
||
### Available Scripts
|
||
|
||
```bash
|
||
# Web Development
|
||
npm run dev # Start Vite dev server
|
||
npm run build # Production build (outputs to dist/)
|
||
npm run preview # Preview production build locally
|
||
|
||
# Desktop App Development (Tauri)
|
||
npm run desktop # Run desktop app in dev mode
|
||
npm run desktop:build # Build desktop app for production
|
||
npm run tauri # Access Tauri CLI directly
|
||
```
|
||
|
||
### Project Structure
|
||
|
||
```
|
||
typogenie/
|
||
├── 📁 src/ # Frontend source code (React)
|
||
│ ├── 📁 components/ # UI components
|
||
│ │ ├── FileUpload.tsx # Drag-and-drop upload zone
|
||
│ │ ├── StyleSelector.tsx # Style gallery
|
||
│ │ └── Preview.tsx # Final preview & export
|
||
│ ├── 📁 services/ # Logic
|
||
│ │ ├── templateLoader.ts # Loads JSON templates via Rust
|
||
│ │ └── templateRenderer.ts # Generates CSS/DOCX from JSON
|
||
│ ├── 📁 hooks/ # React hooks
|
||
│ └── 📄 App.tsx # Main application component
|
||
├── 📁 src-tauri/ # Tauri desktop app
|
||
│ ├── 📁 src/ # Rust backend code (filesystem access)
|
||
│ ├── 📁 templates/ # DEFAULT TEMPLATES (bundled with app)
|
||
│ │ ├── 📁 minimalist/
|
||
│ │ ├── 📁 tech/
|
||
│ │ └── ...
|
||
│ ├── 📄 Cargo.toml # Rust dependencies
|
||
│ └── 📄 tauri.conf.json # Tauri configuration
|
||
└── 📄 vite.config.ts # Build configuration
|
||
```
|
||
|
||
### Technology Stack
|
||
|
||
| Layer | Technology | Purpose |
|
||
|-------|------------|---------|
|
||
| **Framework** | React 19.2.4 | UI components & state management |
|
||
| **Language** | TypeScript 5.8.2 | Type safety & developer experience |
|
||
| **Build Tool** | Vite 6.2.0 | Fast development & optimized builds |
|
||
| **Styling** | Tailwind CSS | Utility-first CSS |
|
||
| **Icons** | Lucide React | Beautiful, consistent iconography |
|
||
| **Markdown** | marked 12.0.0 | Local Markdown parsing |
|
||
| **Documents** | docx 8.5.0 | Client-side DOCX generation |
|
||
| **Desktop** | Tauri 2.0 | Native desktop apps (Rust + WebView) |
|
||
| **Backend** | Rust 1.77+ | Systems programming for desktop shell |
|
||
|
||
<br/>
|
||
|
||
---
|
||
|
||
## 🤝 Contributing
|
||
|
||
TypoGenie is a **commons** — it belongs to everyone who uses it and improves it. We welcome contributions of all kinds:
|
||
|
||
### Ways to Contribute
|
||
|
||
- 🎨 **New Styles** — Design and share new typography styles
|
||
- 🐛 **Bug Reports** — Found something broken? Let us know!
|
||
- 💡 **Feature Ideas** — Have a suggestion? Open a discussion
|
||
- 📖 **Documentation** — Help us explain things better
|
||
- 🔧 **Code Improvements** — Refactors, optimizations, fixes
|
||
- 🌍 **Translations** — Help make TypoGenie accessible globally
|
||
|
||
### Contribution Guidelines
|
||
|
||
1. **Fork the repository**
|
||
2. **Create a feature branch**: `git checkout -b feature/amazing-thing`
|
||
3. **Make your changes** with clear, descriptive commits
|
||
4. **Test thoroughly** — preview AND Word export
|
||
5. **Submit a Pull Request** with a detailed description
|
||
|
||
### Code of Conduct
|
||
|
||
- Be respectful and constructive
|
||
- Assume good intentions
|
||
- Help newcomers learn and grow
|
||
- Focus on what's best for the community
|
||
|
||
<br/>
|
||
|
||
---
|
||
|
||
## 📜 Philosophy & License
|
||
|
||
### Why Free? Why Open?
|
||
|
||
TypoGenie exists because we believe:
|
||
|
||
> **Access to beautiful tools for self-expression should not depend on one's ability to pay.**
|
||
|
||
In an era of increasingly proprietary, subscription-based software, TypoGenie is an offering to the digital commons — a tool that exists purely to serve those who need it, without extracting value, without surveillance, without artificial limitations.
|
||
|
||
### MIT License
|
||
|
||
```
|
||
MIT License
|
||
|
||
Copyright (c) 2026 TypoGenie Contributors
|
||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
of this software and associated documentation files (the "Software"), to deal
|
||
in the Software without restriction, including without limitation the rights
|
||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
copies of the Software, and to permit persons to whom the Software is
|
||
furnished to do so, subject to the following conditions:
|
||
|
||
The above copyright notice and this permission notice shall be included in all
|
||
copies or substantial portions of the Software.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||
SOFTWARE.
|
||
```
|
||
|
||
**tl;dr:** Do whatever you want with this code. Just keep the license notice. Share it. Modify it. Use it for whatever purpose serves your community. No attribution required beyond preserving the license, though we always appreciate a shout-out!
|
||
|
||
<br/>
|
||
|
||
---
|
||
|
||
## 🙏 Acknowledgments
|
||
|
||
TypoGenie stands on the shoulders of giants — the countless open-source contributors who built the libraries, tools, and standards that make this project possible:
|
||
|
||
- **The React Team** — For the component model that powers our UI
|
||
- **The marked contributors** — For battle-tested Markdown parsing
|
||
- **The docx maintainers** — For making client-side Word generation possible
|
||
- **Google Fonts** — For democratizing access to beautiful typography
|
||
- **Tailwind CSS** — For the utility-first approach that speeds development
|
||
- **Vite** — For the build tooling that makes development a joy
|
||
- **The broader open-source community** — For proving that collective, voluntary cooperation can create tools that rival (and exceed) proprietary alternatives
|
||
|
||
**And to you, the user** — for choosing tools that respect your freedom.
|
||
|
||
<br/>
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
|
||
## 💬 Connect
|
||
|
||
<p>
|
||
<a href="https://git.lashman.live/lashman/typogenie">
|
||
<img src="https://img.shields.io/badge/Gitea-609926?style=for-the-badge&logo=gitea&logoColor=white" alt="Gitea" />
|
||
</a>
|
||
</p>
|
||
|
||
<br/>
|
||
|
||
### ☕ Support the Commons
|
||
|
||
If TypoGenie brings value to your life, consider:
|
||
|
||
- ⭐ **Starring the repository** — Helps others discover it
|
||
- 🗣️ **Spreading the word** — Tell friends and colleagues
|
||
- 🔧 **Contributing code** — Improve it for everyone
|
||
- 💝 **Supporting open-source** — Donate to the projects TypoGenie depends on
|
||
|
||
<br/>
|
||
|
||
---
|
||
|
||
<p>
|
||
<i>"The master's tools will never dismantle the master's house. But they might help you format a really nice document while we build something better together."</i>
|
||
</p>
|
||
|
||
<p>
|
||
<strong>Made with ❤️ for the many, not the few.</strong>
|
||
</p>
|
||
|
||
<br/>
|
||
|
||
<img src="https://capsule-render.vercel.app/api?type=waving&color=0:a855f7,50:8b5cf6,100:6366f1&height=100§ion=footer" alt="Footer" />
|
||
|
||
</div>
|