# Contributing to Gitea Mail Templates Thanks for your interest in contributing! This project aims to provide a diverse, well-maintained collection of email templates for the Gitea ecosystem. --- ## Ways to Contribute ### Adding a New Style 1. Scaffold the new style: `cd tools && go run . create ` — this creates the directory structure with placeholder `.tmpl` files for all 11 email types 2. Edit each `.tmpl` file in `themes//` with your unique visual design 3. Regenerate the preview: `cd tools && go run . preview all` — the build script auto-discovers all theme directories under `themes/` and generates the theme selector dynamically 4. Submit a PR with screenshots of rendered emails ### Style Guidelines - Each style must include **all 11 template types** listed in the README - Use only Gitea's built-in template functions — check the [Gitea source](https://github.com/go-gitea/gitea) for reference - Translation keys must come from Gitea's official locale files (`mail.*` namespace) - **Never reference `.DisplayName`** in templates where the data context lacks it (collaborator, transfer, release, workflow_run, assigned, default) - Design for 600px max-width email clients - Test against major email clients (Gmail, Outlook, Apple Mail) when possible ### Bug Reports If a template doesn't render correctly: 1. Check that all referenced Go template variables exist — compare against the Gitea source mail templates 2. Verify translation keys match Gitea's locale files 3. Confirm `.DisplayName` isn't used in templates that lack it 4. Regenerate the preview: `cd tools && go run . preview all` 5. Open an issue with: the style name, which email type, and the error or unexpected output ### Documentation Improvements Documentation updates, preview screenshots, installation guides, and translations are always welcome. --- ## Development Setup - **Go 1.21+** for template rendering and the CLI tool - **Node.js 18+** (optional) for the live-reload dev server with Juice CSS inlining ### Previewing Locally (Static) 1. Run `cd tools && go run . preview all` to generate rendered data 2. Open `preview/index.html` directly in a browser — no server needed 3. Use the theme switcher, template selector, and client mode toggles > Static Gmail/Outlook simulation is approximate. Use dev mode for accurate rendering. ### Dev Server (Live Reload + CSS Inlining) ```bash cd tools && go run . dev # → http://localhost:3456 ``` - Watches `themes/**/*.tmpl` — auto-rebuilds on save - Runs [Juice](https://github.com/Automattic/juice) to inline `