Skip to content

Michae2xl/zcash-manifest

Repository files navigation

Zcash Privacy Manifest Generator

An interactive web generator for the Zcash "Privacy is normal" manifesto with support for 36 languages, real-time editing, and high-quality PDF/PNG export.

🎯 Overview

The Zcash Privacy Manifest Generator allows users to create, edit, and export personalized versions of the Zcash privacy manifesto in multiple languages. The application faithfully replicates the original PDF design with a minimalist and intuitive interface.

Key Features

  • 36 Supported Languages: English, Portuguese, Spanish, French, German, Italian, Dutch, Polish, Russian, Ukrainian, Japanese, Korean, Chinese (Simplified and Traditional), Arabic, Hindi, Turkish, Swedish, Danish, Finnish, Norwegian, Greek, Czech, Romanian, Hungarian, Thai, Vietnamese, Indonesian, Malay, Swahili, Hebrew, Farsi, and more
  • Smart Auto-fill: Automatically populate the complete manifesto in any language
  • Real-time Editing: Edit text directly in the document
  • High-Quality Export: Export as PDF (A4) or PNG
  • Responsive Design: Works perfectly on desktop and mobile
  • Minimalist Interface: Swiss Brutalism design faithful to the original

🚀 Quick Start

Prerequisites

  • Node.js 18+
  • pnpm 10+

Installation

# Clone the repository
git clone https://github.com/Michae2xl/zcash-manifest.git
cd zcash-manifest

# Install dependencies
pnpm install

# Start the development server
pnpm dev

The application will be available at http://localhost:5173

Build for Production

# Compile the project
pnpm build

# Preview the build
pnpm preview

📁 Project Structure

zcash-manifest/
├── client/                    # Frontend React
│   ├── public/               # Static assets
│   ├── src/
│   │   ├── components/       # Reusable components
│   │   │   ├── ExportButtons.tsx
│   │   │   ├── LanguageGrid.tsx
│   │   │   ├── ManifestDocument.tsx
│   │   │   └── ZcashResources.tsx
│   │   ├── pages/           # Application pages
│   │   │   └── Home.tsx
│   │   ├── lib/             # Utilities
│   │   │   └── translations.ts
│   │   ├── App.tsx          # Root component
│   │   ├── main.tsx         # Entry point
│   │   └── index.css        # Global styles
│   └── index.html
├── server/                   # Backend placeholder
├── shared/                   # Shared types
├── package.json
├── vite.config.ts           # Vite configuration
├── tsconfig.json            # TypeScript configuration
└── README.md

🛠️ Technology Stack

Technology Version Purpose
React 19.2.1 UI Framework
TypeScript 5.6.3 Static typing
Vite 7.1.7 Build tool
Tailwind CSS 4.1.14 Styling
jsPDF 4.1.0 PDF generation
html2canvas-pro 1.6.7 DOM to image capture
Wouter 3.3.5 Client-side routing
Lucide React 0.574.0 Icons

📖 Usage

Editing the Manifesto

  1. Select a language by clicking the corresponding flag
  2. Click the ✓ button to auto-fill the complete manifesto
  3. Edit the text in the white area as needed
  4. The document updates in real-time

Export Options

  • Export PDF: Click "Export PDF" to download in A4 format
  • Export PNG: Click "Export PNG" to download as an image
  • Clear: Click "Clear" to reset the text

Supported Languages

The project supports the following languages:

  • 🇺🇸 English (EN)
  • 🇧🇷 Português (PT)
  • 🇪🇸 Español (ES)
  • 🇫🇷 Français (FR)
  • 🇩🇪 Deutsch (DE)
  • 🇮🇹 Italiano (IT)
  • 🇳🇱 Nederlands (NL)
  • 🇵🇱 Polski (PL)
  • 🇷🇺 Русский (RU)
  • 🇺🇦 Українська (UK)
  • 🇯🇵 日本語 (JA)
  • 🇰🇷 한국어 (KO)
  • 🇨🇳 中文 (ZH)
  • 🇹🇼 繁體中文 (ZH-TW)
  • 🇸🇦 العربية (AR)
  • 🇮🇳 हिन्दी (HI)
  • 🇹🇷 Türkçe (TR)
  • 🇸🇪 Svenska (SV)
  • 🇩🇰 Dansk (DA)
  • 🇫🇮 Suomi (FI)
  • 🇳🇴 Norsk (NO)
  • 🇬🇷 Ελληνικά (EL)
  • 🇨🇿 Čeština (CS)
  • 🇷🇴 Română (RO)
  • 🇭🇺 Magyar (HU)
  • 🇹🇭 ไทย (TH)
  • 🇻🇳 Tiếng Việt (VI)
  • 🇮🇩 Bahasa Indonesia (ID)
  • 🇲🇾 Bahasa Melayu (MS)
  • 🇰🇪 Kiswahili (SW)
  • 🇮🇱 עברית (HE)
  • 🇮🇷 فارسی (FA)
  • And more...

🎨 Design

The project follows the Swiss Brutalism philosophy with a minimalist design faithful to the original manifesto:

  • Typography: Heavy black font for maximum contrast
  • Colors: Light gray (#EBEBEB), black (#000), and Zcash gold (#F4B728)
  • Layout: A4-like document with discrete controls
  • Responsiveness: Adaptive scaling for mobile (0.45x on small screens)

🔧 Development

Available Scripts

# Start development server
pnpm dev

# Build for production
pnpm build

# Preview build
pnpm preview

# Check TypeScript types
pnpm check

# Format code
pnpm format

Adding a New Language

  1. Open client/src/lib/translations.ts
  2. Add a new entry to the languages array:
{
  code: "XX",
  name: "Language Name",
  flag: "🇽🇽",
  title: "Translated Title",
  manifesto: "Translated manifesto text...",
  exportPDF: "Export PDF",
  exportPNG: "Export PNG",
  clear: "Clear"
}
  1. Save and the new language will appear automatically

📦 Build and Deploy

Generate Build

pnpm build

Compiled files will be in dist/

Deploy

The project is optimized for deployment on static hosting platforms such as:

  • Vercel
  • Netlify
  • GitHub Pages
  • Manus (native platform)

🤝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a branch for your feature (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Zcash Resources

📞 Support

To report bugs or suggest improvements, please open an issue.


Built with ❤️ for the Zcash community

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors