Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Slynite/mail

A modern, cross-platform email client built with Kotlin Multiplatform and JMAP.

Slynite/mail is an email application designed for the future. It leverages the JMAP protocol for efficient, real-time email synchronization and is built using Kotlin Multiplatform to run seamlessly across Android, iOS, macOS, Windows, Linux, and Web.


Key Features

  • JMAP Protocol: Fast, efficient email synchronization with modern push capabilities
  • Cross-Platform: Single codebase for mobile, desktop, and web targets
  • Modular Architecture: Feature-based modules for Mail, Contacts, and Calendar
  • Modern UI: Clean interface blending serif typography with contemporary design principles
  • Offline-First: Local caching for seamless access without network connectivity
  • Privacy-Focused: Your data stays on your server

Technology Stack

Component Technology
Framework Kotlin Multiplatform + Compose Multiplatform
JMAP Client jmap-rs (Rust) with Kotlin Native bindings
State Management Decompose (Navigation) + MVI (Business Logic)
Dependency Injection Koin
Local Storage SQLDelight (SQLite)
Image Loading Coil
Target Platforms Android, iOS, macOS, Windows, Linux, Web

Project Status

Slynite/mail is in early development.

The repository is set up, and the core architecture is being established. Refer to the Concept Document for the full vision and design philosophy.


Feature Roadmap

MVP (Minimum Viable Product)

Feature Priority Description
Project scaffolding Critical Repository structure, CI/CD pipelines, build configuration
JMAP client integration Critical Rust jmap-rs bindings for Kotlin Native
Account authentication Critical OAuth2 and JMAP authentication flows
Email list view High Display inbox messages with thread grouping
Email detail view High Read emails with HTML and plain text rendering
Compose and send emails High Create and send new emails with attachments
Local caching High Offline storage using SQLDelight
Core navigation High Decompose-based navigation between screens

Post-MVP Features

Feature Priority Description
Search functionality High Full-text search across emails
Email flags and folders High Starred, archive, custom folders, and filters
Contacts integration High JMAP Contacts support with address book
Calendar integration Medium JMAP Calendars with event viewing
Push notifications Medium Real-time notifications via JMAP push
Multiple accounts Medium Support for multiple email accounts simultaneously
Desktop application Medium macOS, Windows, and Linux desktop builds
Web application Low Browser-based email client
End-to-end encryption Low PGP/OpenPGP integration for sensitive communications

Getting Started

Prerequisites

  • Kotlin 1.9.x or higher
  • JDK 17 or higher
  • Android SDK (for Android builds)
  • Xcode 15+ (for iOS/macOS builds)
  • CMake (for native dependencies)

Build Commands

# Clone the repository
git clone https://github.com/Slynite/mail.git
cd mail

# Build for Android
./gradlew assembleDebug

# Run Android app
./gradlew :android:run

# Build for Desktop (native)
./gradlew :desktop:run

# Run iOS simulator (macOS only)
./gradlew :ios:launchSimulator

Repository Structure

mail/
├── shared/              # Shared Kotlin code (Compose UI, ViewModels, business logic)
│   ├── composeApp/      # Multiplatform Compose UI
│   └── data/            # Data layer (repositories, JMAP client, local storage)
├── android/             # Android-specific configuration
├── ios/                 # iOS-specific configuration
├── desktop/             # Desktop (macOS/Windows/Linux) configuration
├── web/                 # Web (Kotlin/JS + Compose) configuration
└── build.gradle.kts     # Root build configuration

Contributing

Contributions are welcome. Please review the Concept Document to understand the project vision before submitting changes.

Workflow

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

License

Slynite/mail is released under the MIT License.


Resources


Placeholder project name. Final branding coming soon.

About

Mail is a JMAP Client to communicate more effectively with your emails.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors