add open source link to footer, rewrite README
- Added GitHub link in footer with 'Open source — star us on GitHub' - Completely rewrote README with proper project documentation: - Features, format support tables, installation guides - CLI keybindings reference - Development setup and tech stack - Contributing guidelines and links
This commit is contained in:
@@ -1,36 +1,172 @@
|
||||
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
|
||||
# Transmute
|
||||
|
||||
## Getting Started
|
||||
Universal file converter that runs entirely on your machine. No uploads, no servers, 100% private.
|
||||
|
||||
First, run the development server:
|
||||

|
||||
|
||||
Transmute converts files between 70+ formats — images, documents, audio, video, data, fonts, and spreadsheets. Use it as a **web app** in your browser or as a **CLI tool** in your terminal.
|
||||
|
||||
## Features
|
||||
|
||||
- **70+ formats supported** — Images, documents, audio, video, data, fonts, spreadsheets
|
||||
- **100% client-side** — Files never leave your machine
|
||||
- **Web app** — Beautiful browser-based interface at [transmute.ing](https://transmute.ing)
|
||||
- **CLI tool** — Full-featured terminal interface for power users
|
||||
- **Batch conversion** — Convert multiple files at once
|
||||
- **Smart defaults** — Automatically suggests the best output format
|
||||
- **Open source** — Inspect the code, contribute, or fork
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Web App (Browser)
|
||||
|
||||
Visit **[transmute.ing](https://transmute.ing)** — just open in your browser and start converting. No installation needed.
|
||||
|
||||
### CLI (Terminal)
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
# or
|
||||
yarn dev
|
||||
# or
|
||||
pnpm dev
|
||||
# or
|
||||
bun dev
|
||||
# Install
|
||||
curl -fsSL https://raw.githubusercontent.com/noauf/Transmute/main/install.sh | bash
|
||||
|
||||
# Convert a single file
|
||||
transmute photo.png
|
||||
|
||||
# Convert to a specific format
|
||||
transmute photo.png -t webp
|
||||
|
||||
# Batch convert with glob
|
||||
transmute *.png
|
||||
transmute ./photos/
|
||||
|
||||
# Custom output directory
|
||||
transmute *.pdf -d ./converted/
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
||||
## Format Support
|
||||
|
||||
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
||||
| Category | Formats |
|
||||
|----------|---------|
|
||||
| **Images** | PNG, JPG, JPEG, GIF, BMP, TIFF, WebP, AVIF, ICO, PSD, HEIC, HEIF, RAW (CR2, NEF, ARW, DNG) |
|
||||
| **Documents** | PDF, DOCX, DOC, TXT, HTML, MD, RTF, ODT, EPUB, MOBI, CSV, TSV |
|
||||
| **Audio** | MP3, WAV, FLAC, OGG, AAC, M4A, WMA, OPUS |
|
||||
| **Video** | MP4, WebM, AVI, MOV, MKV, GIF |
|
||||
| **Data** | JSON, XML, YAML, TOML, CSV, TSV, SQL |
|
||||
| **Fonts** | TTF, OTF, WOFF, WOFF2 |
|
||||
| **Spreadsheets** | XLSX, XLS, CSV, ODS |
|
||||
|
||||
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
|
||||
## Installation
|
||||
|
||||
## Learn More
|
||||
### CLI Installation
|
||||
|
||||
To learn more about Next.js, take a look at the following resources:
|
||||
The installer detects your OS and architecture:
|
||||
|
||||
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
||||
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/noauf/Transmute/main/install.sh | bash
|
||||
```
|
||||
|
||||
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
|
||||
Or manually:
|
||||
|
||||
## Deploy on Vercel
|
||||
1. Download the latest release for your platform from [GitHub Releases](https://github.com/noauf/Transmute/releases)
|
||||
2. Extract the archive
|
||||
3. Move `transmute` to your PATH (e.g., `/usr/local/bin/`)
|
||||
|
||||
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
||||
**Requirements:**
|
||||
- macOS, Linux, or Windows
|
||||
- For audio/video: FFmpeg (auto-installed on first use)
|
||||
|
||||
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|
||||
### Web App
|
||||
|
||||
No installation needed — just visit [transmute.ing](https://transmute.ing).
|
||||
|
||||
To run locally:
|
||||
|
||||
```bash
|
||||
# Clone the repo
|
||||
git clone https://github.com/noauf/Transmute.git
|
||||
cd Transmute
|
||||
|
||||
# Install dependencies
|
||||
npm install
|
||||
|
||||
# Run development server
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000) to use the app.
|
||||
|
||||
## CLI Keybindings
|
||||
|
||||
When running the TUI:
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `↑/↓` or `j/k` | Navigate files |
|
||||
| `←/→` or `h/l` | Change target format |
|
||||
| `space` | Toggle file selection |
|
||||
| `a` | Select/deselect all |
|
||||
| `p` | Preview file |
|
||||
| `d` | Remove file from list |
|
||||
| `x` | Delete converted output |
|
||||
| `c` or `enter` | Start conversion |
|
||||
| `?` | Show help |
|
||||
| `q` | Quit |
|
||||
|
||||
## Development
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
Transmute/
|
||||
├── src/ # Next.js web app
|
||||
│ ├── app/ # App router pages
|
||||
│ ├── components/ # React components
|
||||
│ ├── hooks/ # Custom hooks
|
||||
│ ├── lib/ # Utilities
|
||||
│ └── types/ # TypeScript types
|
||||
├── cli/ # Go CLI tool
|
||||
│ ├── cmd/ # CLI commands
|
||||
│ └── internal/ # Core logic
|
||||
│ ├── converter/ # File conversion
|
||||
│ ├── detect/ # Format detection
|
||||
│ ├── ffmpeg/ # FFmpeg manager
|
||||
│ ├── theme/ # TUI styling
|
||||
│ └── tui/ # Bubble Tea TUI
|
||||
└── public/ # Static assets
|
||||
```
|
||||
|
||||
### Tech Stack
|
||||
|
||||
- **Web App:** Next.js 14, TypeScript, Tailwind CSS, Framer Motion
|
||||
- **CLI:** Go 1.25, Bubble Tea, Lip Gloss
|
||||
- **Conversion:** FFmpeg, pdf.js, pdf-lib,libvips, and more
|
||||
|
||||
### Building the CLI
|
||||
|
||||
```bash
|
||||
cd cli
|
||||
go build -o transmute .
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT — see [LICENSE](LICENSE) for details.
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome! Here's how to help:
|
||||
|
||||
1. **Report bugs** — Open an issue with details
|
||||
2. **Suggest features** — We'd love to hear your ideas
|
||||
3. **Add formats** — Check the converter package for where to add new format routes
|
||||
4. **Improve the UI** — The web app needs your design skills
|
||||
|
||||
## Links
|
||||
|
||||
- **Web App:** [transmute.ing](https://transmute.ing)
|
||||
- **CLI Docs:** See `--help` after installation
|
||||
- **Issues:** [github.com/noauf/Transmute/issues](https://github.com/noauf/Transmute/issues)
|
||||
- **Releases:** [github.com/noauf/Transmute/releases](https://github.com/noauf/Transmute/releases)
|
||||
|
||||
---
|
||||
|
||||
Made with love. Runs on your machine.
|
||||
|
||||
+12
-1
@@ -1143,9 +1143,20 @@ export default function LandingPage() {
|
||||
|
||||
{/* ──── FOOTER ──── */}
|
||||
<footer className="text-center px-6 py-12 text-sm text-text-light">
|
||||
<p>
|
||||
<p className="mb-3">
|
||||
Built with love, runs on your machine.
|
||||
</p>
|
||||
<a
|
||||
href="https://github.com/noauf/Transmute"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="inline-flex items-center gap-1.5 text-text-mid hover:text-text-dark transition-colors"
|
||||
>
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" className="text-text-light">
|
||||
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
|
||||
</svg>
|
||||
Open source — star us on GitHub
|
||||
</a>
|
||||
</footer>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user