Skip to content

hbarve1/mailup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

35 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MailUp: A Chat-Style Desktop Mail Client

License: MIT TypeScript React Electron

MailUp reimagines email as a chat experience. Instead of traditional inboxes and threads, each email conversation appears like a messaging appβ€”with chat bubbles, a sidebar for conversations, and a reply box at the bottom. The goal is to make email feel as fast, intuitive, and modern as chat, while supporting all the power of traditional email.

✨ Features

  • πŸ’¬ Chat-style UI: See your emails as chat bubbles in a conversation
  • πŸ“± Unified conversations: Sidebar lists all your email threads, just like chats
  • ✍️ Rich replies: Compose responses with formatting and attachments in a familiar chat interface
  • πŸ–₯️ System integration: Native notifications, tray icon, and drag-and-drop attachments for a seamless desktop experience
  • πŸ“§ Multi-provider support: Gmail, Outlook, Yahoo, and custom IMAP/SMTP accounts
  • ⚑ Offline-first: Access and compose emails even without an internet connection

Screenshots

Screenshot 1

πŸš€ Quick Start

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn
  • Git

Installation

  1. Clone the repository

    git clone https://github.com/hbarve1/mailup.git
    cd mailup
  2. Install dependencies

    cd desktop
    npm install
  3. Start development server

    # Start Vite dev server
    npm run dev
    
    # In another terminal, start Electron
    npm start

Building for Production

# Build the application
npm run build

# The built files will be in the `dist/` directory
# Electron will load from `dist/index.html`

πŸ—οΈ Architecture

Tech Stack

  • Frontend: React 19 + TypeScript + Tailwind CSS
  • Desktop: Electron.js
  • State Management: Zustand
  • Build Tool: Vite
  • Database: SQLite (planned)
  • Email Protocols: IMAP/SMTP (planned)

Project Structure

mailup/
β”œβ”€β”€ desktop/                 # Main Electron application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/     # React components
β”‚   β”‚   β”‚   β”œβ”€β”€ ChatWindow/ # Main chat interface
β”‚   β”‚   β”‚   β”œβ”€β”€ MessageList/# Message display
β”‚   β”‚   β”‚   β”œβ”€β”€ MessageInput/# Reply interface
β”‚   β”‚   β”‚   β”œβ”€β”€ Sidebar/    # Conversation list
β”‚   β”‚   β”‚   └── AppHeader/  # Top navigation
β”‚   β”‚   β”œβ”€β”€ store/          # State management (Zustand)
β”‚   β”‚   β”œβ”€β”€ pages/          # Route pages
β”‚   β”‚   └── types/          # TypeScript definitions
β”‚   β”œβ”€β”€ backend/            # Electron main process
β”‚   β”‚   └── index.cjs       # Main Electron window
β”‚   └── package.json        # Dependencies & scripts
β”œβ”€β”€ docs/                   # Documentation
β”‚   └── prd.md             # Product Requirements Document
└── README.md              # This file

Key Components

  • ChatWindow: Main chat interface displaying messages as bubbles
  • Sidebar: Conversation list with user avatars and previews
  • MessageInput: Rich text editor for composing replies
  • mailStore: Zustand store managing application state
  • Electron Backend: Desktop integration and system features

🎨 UI/UX Design

MailUp features a modern, chat-inspired interface:

  • Gradient Background: Beautiful green-to-blue gradient with glass-morphism effects
  • Chat Bubbles: Messages displayed in familiar chat format
  • Responsive Design: Adapts seamlessly to different screen sizes
  • Dark/Light Mode: Planned feature for user preference
  • System Integration: Native notifications and tray functionality

πŸ”§ Development

Available Scripts

npm run dev          # Start Vite development server
npm run start        # Launch Electron with built app
npm run build        # Build for production
npm run lint         # Run ESLint
npm run preview      # Preview production build

State Management

MailUp uses Zustand for state management with the following stores:

  • mailStore: Manages email data, users, conversations, and messages
  • userStore: User authentication and preferences
  • chatStore: Real-time chat state and notifications

Adding New Features

  1. Components: Add new React components in src/components/
  2. Pages: Create new routes in src/pages/
  3. State: Extend stores in src/store/
  4. Types: Define TypeScript interfaces in src/types/

🀝 Contributing

We welcome contributions from the open-source community! Here's how you can help:

Getting Started

  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

Development Guidelines

  • Code Style: Follow the existing ESLint configuration
  • TypeScript: Use strict typing for all new code
  • Testing: Add tests for new features (testing framework TBD)
  • Documentation: Update docs for any API changes
  • Commits: Use conventional commit messages

Areas for Contribution

  • Email Integration: IMAP/SMTP connectors for various providers
  • UI Components: New chat features and interface improvements
  • Performance: Optimizations for large email volumes
  • Testing: Unit and integration tests
  • Documentation: API docs, user guides, and tutorials
  • Localization: Multi-language support

πŸ“‹ Roadmap

Phase 1: Core Email Integration

  • IMAP/SMTP connectors for Gmail, Outlook, Yahoo
  • Local SQLite database for offline caching
  • Real-time email synchronization
  • Basic attachment handling

Phase 2: Enhanced Features

  • Multiple account support
  • Unified inbox across providers
  • Advanced search and filtering
  • Email templates and signatures
  • Dark/Light theme toggle

Phase 3: Advanced Capabilities

  • AI-powered features (summarization, smart replies)
  • Collaboration tools (shared inboxes)
  • End-to-end encryption
  • Offline-first architecture
  • Mobile companion app

πŸ› Issues & Support

  • Bug Reports: Use the GitHub Issues page
  • Feature Requests: Submit via GitHub Issues with the "enhancement" label
  • Questions: Start a GitHub Discussion

πŸ“„ License

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

πŸ™ Acknowledgments

  • React Team for the amazing frontend framework
  • Electron Team for desktop app capabilities
  • Tailwind CSS for the utility-first CSS framework
  • Zustand for lightweight state management
  • Vite for the fast build tool

πŸ“ž Contact


Made with ❀️ by the MailUp community

About

MailUp reimagines email as a chat experience.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors