Thanks to visit codestin.com
Credit goes to github.com

Skip to content

pierce403/converge.cv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Converge.cv - XMTP v3 PWA

A Signal-like, local-first messaging Progressive Web App built with XMTP v3.

πŸš€ Live Demo: converge.cv (coming soon)
πŸ“¦ Repository: github.com/pierce403/converge.cv

✨ Features

Core Features

  • Local-First Architecture: All data encrypted and stored locally on your device
  • Progressive Web App: Install on iOS, Android, and desktop - works offline
  • XMTP v3 Protocol: Decentralized messaging via the XMTP v3 browser SDK (production network)
  • End-to-End Encrypted: Military-grade AES-GCM 256-bit encryption with WebCrypto
  • Passkey Support: WebAuthn PRF integration prepared for passwordless authentication
  • Signal-like UX: Clean, intuitive interface with familiar messaging patterns

Messaging

  • Send and receive encrypted text messages
  • Real-time message status indicators (pending β†’ sent β†’ delivered)
  • Message reactions support
  • Conversation management (pin, archive, search)
  • Unread message badges
  • Full-text search across conversations

Security & Privacy

  • Vault key encryption with passphrase (PBKDF2 600k iterations)
  • Local message encryption at rest
  • No server-side storage of messages
  • Lock screen with vault protection
  • Secure key management in memory

PWA Features

  • Offline app shell caching
  • Installable on all platforms
  • Push notification support (with VAPID setup)
  • Badge API for unread counts
  • Service worker for background sync

πŸ› οΈ Tech Stack

  • Framework: React 18 + TypeScript + Vite
  • Routing: react-router-dom
  • State Management: Zustand
  • Styling: Tailwind CSS
  • PWA: vite-plugin-pwa (Workbox)
  • Messaging: XMTP v3 browser SDK (production network connection in progress)
  • Storage: Dexie (IndexedDB) with SQLite WASM migration path
  • Crypto: WebCrypto API + WebAuthn
  • Testing: Vitest + Playwright
  • CI/CD: GitHub Actions

πŸ“¦ Quick Start

Prerequisites

  • Node.js 18+ or 20+
  • pnpm (recommended) or npm

Installation

# Clone the repository
git clone https://github.com/pierce403/converge.cv.git
cd converge.cv

# Install dependencies
pnpm install

# Start development server
pnpm dev

# Open http://localhost:3000

Development Commands

# Development
pnpm dev              # Start dev server with HMR
pnpm build            # Build for production
pnpm preview          # Preview production build
pnpm typecheck        # Run TypeScript checks

# Code Quality
pnpm lint             # Run ESLint
pnpm format           # Format code with Prettier

# Testing
pnpm test             # Run unit tests
pnpm test:e2e         # Run E2E tests (Playwright)

πŸ—οΈ Project Structure

src/
β”œβ”€β”€ app/              # App shell, router, providers
β”œβ”€β”€ features/         # Feature modules
β”‚   β”œβ”€β”€ auth/         # Authentication & vault
β”‚   β”œβ”€β”€ conversations/
β”‚   β”œβ”€β”€ messages/
β”‚   β”œβ”€β”€ settings/
β”‚   └── search/
β”œβ”€β”€ lib/              # Core libraries
β”‚   β”œβ”€β”€ xmtp/         # XMTP client wrapper
β”‚   β”œβ”€β”€ storage/      # Storage drivers (Dexie/SQLite)
β”‚   β”œβ”€β”€ crypto/       # Encryption & key management
β”‚   β”œβ”€β”€ push/         # Web Push notifications
β”‚   └── sw-bridge/    # Service worker communication
β”œβ”€β”€ components/       # Shared UI components
└── types/            # TypeScript types

πŸ” Security

  • Messages encrypted at rest with AES-GCM
  • Vault key derived from passkey (WebAuthn PRF) or passphrase (PBKDF2)
  • No plaintext message storage
  • Optional disappearing messages

πŸ“± PWA Features

  • Installable on all platforms
  • Offline support
  • Web Push notifications
  • Background sync
  • App shell caching

🀝 Contributing

See TODO.md for development roadmap and tasks.

For AI Agents: Read AGENTS.md first! It contains critical context about user preferences, architectural decisions, and project conventions. Update it whenever you learn something new.

πŸ—οΈ Architecture

src/
β”œβ”€β”€ app/              # App shell, router, providers, layout
β”œβ”€β”€ features/         # Feature modules
β”‚   β”œβ”€β”€ auth/         # Authentication, onboarding, lock screen
β”‚   β”œβ”€β”€ conversations/# Chat list, new chat
β”‚   β”œβ”€β”€ messages/     # Conversation view, message bubbles, composer
β”‚   β”œβ”€β”€ settings/     # Settings page
β”‚   └── search/       # Search functionality
β”œβ”€β”€ lib/              # Core libraries
β”‚   β”œβ”€β”€ xmtp/         # XMTP client wrapper
β”‚   β”œβ”€β”€ storage/      # Storage driver (Dexie)
β”‚   β”œβ”€β”€ crypto/       # Vault, encryption, key management
β”‚   β”œβ”€β”€ stores/       # Zustand state stores
β”‚   β”œβ”€β”€ push/         # Push notification utilities
β”‚   └── sw-bridge/    # Service worker communication
β”œβ”€β”€ components/       # Shared UI components
└── types/            # TypeScript type definitions

🚒 Deployment

Automatic Deployment (GitHub Actions)

Every push to master automatically:

  1. Runs type checking and linting
  2. Builds the production bundle
  3. Deploys to GitHub Pages

See DEPLOYMENT.md for detailed deployment instructions.

Manual Deployment

pnpm build
# Deploy the dist/ folder to your hosting provider

πŸ§ͺ Testing

Unit Tests (Vitest)

pnpm test                    # Run all tests
pnpm test -- --coverage      # Run with coverage
pnpm test -- --watch         # Watch mode

E2E Tests (Playwright)

pnpm test:e2e                # Run E2E tests

πŸ”’ Security

  • Client-Side Encryption: All encryption happens in the browser
  • Vault Key Protection: Keys derived from passphrase with PBKDF2 (600k iterations)
  • No Server Storage: Messages never leave your device unencrypted
  • Local Storage Only: IndexedDB with encrypted data at rest
  • WebAuthn Ready: Passkey integration prepared for production

πŸ›£οΈ Roadmap

Current Status (MVP v0.1.0)

  • βœ… Complete authentication flow
  • βœ… Message sending and receiving (local pipeline while XMTP integration matures)
  • βœ… Encrypted local storage
  • βœ… Search functionality
  • βœ… Settings and vault management
  • βœ… PWA with offline support
  • βœ… Push notification infrastructure

Next Steps

  • Complete end-to-end XMTP v3 messaging flows
  • Implement attachment support
  • Add message reactions (interactive)
  • Disappearing messages
  • SQLite WASM migration for FTS
  • Group chat support
  • Voice messages
  • Link previews
  • Multi-device sync

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

πŸ“„ License

MIT License - see LICENSE for details

πŸ”— Links

πŸ“§ Contact

Dean Pierce - @pierce403


Built with ❀️ using React, TypeScript, and XMTP

About

Another XMTP client

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages