Matthieu MALVACHEandMatthieu MALVACHE 0d68851b63 feat(i18n): Complete internationalization with timezone fixes and language switching
Completes full internationalization coverage for the webmail application with enhanced language support:

- Replace all remaining hardcoded English strings with translation keys
- Add timezone auto-detection to prevent hydration mismatches
- Enable instant client-side language switching without page reload
- Add 60+ new translation keys in English and French locales
- Improve language switcher component with proper state management
- Add health check endpoint for container orchestration

All user-facing text now supports English and French with no hardcoded fallbacks, providing a fully localized experience.
2026-01-08 04:29:19 +01:00
2025-12-10 17:54:22 +01:00

JMAP Webmail

A modern, privacy-focused webmail client built with Next.js and the JMAP protocol.

Built for Stalwart

This webmail client is designed to work seamlessly with Stalwart Mail Server - a modern, secure, and blazingly fast mail server written in Rust.

Why Stalwart?

  • Modern Architecture: Built from the ground up with Rust for performance and safety
  • JMAP-Native: First-class support for the JMAP protocol (not just IMAP/SMTP bolted on)
  • Privacy-Focused: Self-hosted, no third-party dependencies, full control over your data
  • Feature-Rich: Supports JMAP, IMAP, SMTP, ManageSieve, and more

Stalwart GitHub | Documentation

Features

Core Email Operations

  • Read, compose, reply, reply-all, and forward emails
  • Full HTML email rendering with security sanitization
  • Attachment upload and download
  • Draft auto-save with discard confirmation
  • Email threading with Gmail-style inline expansion
  • Mark as read/unread, star/unstar
  • Archive and delete with configurable behavior
  • Color tags/labels for email organization
  • Full-text search

User Interface

  • Clean, minimalist three-pane layout
  • Dark and light theme support
  • Responsive design for mobile and desktop
  • Keyboard shortcuts for power users
  • Drag-and-drop email organization
  • Right-click context menus
  • Smooth animations and transitions
  • Infinite scroll pagination

Real-time Updates

  • Push notifications via JMAP EventSource
  • Real-time unread counts
  • Live email arrival notifications
  • Connection status indicator

Security & Privacy

  • External content blocked by default
  • Trusted senders list for automatic image loading
  • HTML sanitization with DOMPurify
  • SPF/DKIM/DMARC status indicators
  • No password storage (session-based auth)
  • Shared folder support with proper permissions

Internationalization

  • English and French language support
  • Automatic browser language detection
  • Persistent language preference

Tech Stack

Getting Started

Prerequisites

  • Node.js 18+
  • A JMAP-compatible mail server (we recommend Stalwart)

Installation

# Clone the repository
git clone https://github.com/root-fr/jmap-webmail.git
cd jmap-webmail

# Install dependencies
npm install

# Copy environment configuration
cp .env.example .env.local

Configuration

Edit .env.local with your settings:

# App name displayed in the UI
APP_NAME=My Webmail

# Your JMAP server URL (required)
JMAP_SERVER_URL=https://mail.example.com

Note: These are runtime environment variables, read at request time. This enables Docker deployments to be configured without rebuilding the image. Legacy NEXT_PUBLIC_* variables are still supported as fallbacks.

Development

# Start development server
npm run dev

# Type checking
npm run typecheck

# Linting
npm run lint

Production Build

# Build for production
npm run build

# Start production server
npm start

Keyboard Shortcuts

Key Action
j / k Navigate between emails
Enter / o Open selected email
Esc Close viewer / deselect
c Compose new email
r Reply
R / a Reply all
f Forward
s Toggle star
e Archive
# / Delete Delete
u Mark as unread
/ Focus search
x Expand/collapse thread
? Show shortcuts help

Screenshots

Login Login

Inbox Inbox

Email Viewer Email Viewer

Compose Compose

Dark Mode Dark Mode

Settings Settings

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Roadmap

See ROADMAP.md for planned features and development status.

Acknowledgments

  • Stalwart Labs for creating an excellent JMAP mail server
  • The JMAP working group for the protocol specification
  • All contributors and users of this project

License

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

S
Description
SRCmail webmail (vncmail-plus / Bulwark fork)
Readme Multiple Licenses
20 MiB
Languages
TypeScript 96.3%
JavaScript 2.5%
Shell 0.8%
CSS 0.2%