No description
  • TypeScript 98.9%
  • CSS 0.4%
  • JavaScript 0.4%
  • Shell 0.2%
Find a file
2026-09-20 17:49:42 +02:00
.husky feat: implement client-side recurrence expansion for calendar events 2026-03-29 17:12:30 +02:00
apps return protocol routing 2026-09-20 19:47:42 +04:00
docs/migration compile-time real/demo variants 2026-09-19 19:59:15 +04:00
e2e feat: add contacts phase 2, advanced search, vacation responder, Docker & TOTP 2FA 2026-02-16 18:51:30 +01:00
integration cleanup pro/embedded obsolete components/states 2026-09-20 19:37:05 +04:00
locales cleanup pro/embedded obsolete components/states 2026-09-20 19:37:05 +04:00
modules cleanup pro/embedded obsolete components/states 2026-09-20 19:37:05 +04:00
public cleanup pro/embedded obsolete components/states 2026-09-20 19:37:05 +04:00
scripts cleanup pro/embedded obsolete components/states 2026-09-20 19:37:05 +04:00
shared cleanup pro/embedded obsolete components/states 2026-09-20 19:37:05 +04:00
.env.dev.example compile-time real/demo variants 2026-09-19 19:59:15 +04:00
.env.example cleanup pro/embedded obsolete components/states 2026-09-20 19:37:05 +04:00
.gitignore introduce workspaces: email, contacts, calendar, demo 2026-09-14 17:56:46 +04:00
eslint.config.mjs separate css per apps 2026-09-20 13:26:02 +04:00
LICENSE updae readme and license 2026-09-15 13:35:38 +04:00
NOTICE updae readme and license 2026-09-15 13:35:38 +04:00
package-lock.json Add the temporary People Directory bridge 2026-09-19 15:51:53 +04:00
package.json compile-time real/demo variants 2026-09-19 19:59:15 +04:00
playwright.config.ts final cleanup: remove next.js with dependencies, fix tests, remove docker; introduce vite with react-router 2026-09-11 18:10:58 +04:00
playwright.integration.config.ts final cleanup: remove next.js with dependencies, fix tests, remove docker; introduce vite with react-router 2026-09-11 18:10:58 +04:00
postcss.config.mjs Initial release: JMAP Webmail Client 2025-12-10 17:54:22 +01:00
README.md updae readme and license 2026-09-15 13:35:38 +04:00
tsconfig.json introduce workspaces: email, contacts, calendar, demo 2026-09-14 17:56:46 +04:00
VERSION moved components, hooks, stores to corresponding apps per domain 2026-09-15 18:51:51 +04:00
vite-env.d.ts compile-time real/demo variants 2026-09-19 19:59:15 +04:00
vitest.config.ts compile-time real/demo variants 2026-09-19 19:59:15 +04:00
vitest.setup.ts moved components, hooks, stores to corresponding apps per domain 2026-09-15 18:51:51 +04:00

ELFA Personal Information Management apps

Work in progress. A suite of email, calendar, contacts, and scheduling apps designed around privacy, informed consent, and practical everyday use. This README describes the intended direction; features and integrations are still under development.

Our goal is a local-first, decentralized, self-hostable alternative to services built around data capture and ecosystem lock-in. Users should own their data, work offline, and understand when sharing exposes information to external services.

Planned apps

  • Email: A modern inbox with conversations, labels and folders, local full-text search, and rich-text collaborative drafting.
  • Contacts: Create, edit, and import contacts through CardDAV, with favorites, sortable lists, pictures, and instant filtering.
  • Scheduler: Suggest meeting times across time zones using shared availability and user-controlled disclosure. External participants can respond through a scheduling link.
  • Calendar: Manage events in day, week, work-week, month, and year views, with calendar sharing and scheduler integration.

License and lineage

ELFA PIM Apps is a fork of Bulwark Webmail, itself derived from JMAP Webmail.

The project is licensed under GNU AGPL v3 only. Earlier MIT-licensed material and its original copyright and permission notice are preserved in NOTICE.