apps.header.allAppsCount
DayFront-Beta
apps.detail.types.app from MaplePotion's Repository
apps.detail.sections.overview
Readme
View on GitHub
DayFront
The open-source CalDAV frontend.
Own your day. Own your data.
DayFront is a modern, self-hosted web interface for calendars and tasks stored on an existing CalDAV server.
DayFront uses standard CalDAV and WebDAV discovery and connects to standards-compliant CalDAV servers through the caldav configuration.
Status: DayFront 1.0 is stable and ready for self-hosted deployment. Compatibility reports for different CalDAV servers are welcome.
Features
- Month, week, day, and agenda calendar views
- Multiple CalDAV calendars with visibility controls and colors
- Create, edit, and safely delete CalDAV calendars
- Toggleable, read-only external iCalendar (
.ics) subscriptions - Timed, all-day, multi-day, and recurring events
- Fast event search with optional fuzzy matching and keyboard navigation
- Multi-day selection that pre-fills event and task date ranges
- Series and single-occurrence recurrence editing
- Dated and undated CalDAV tasks
- Recurring tasks, subtasks, priorities, completion workflows, and a focused task sidebar
- Light and dark themes
- Docker, Compose, and Unraid deployment support
CalDAV implementations vary in optional features and edge-case behavior. DayFront writes explicit weekdays for weekly all-day recurrences and UTC metadata timestamps for reliable synchronization with Android clients and calendar widgets. Compatibility reports and fixes for different servers are welcome.
Screenshots
Light theme
| Calendar | Calendar and tasks | Login |
|---|---|---|
|
|
|
Dark theme
| Calendar | Calendar and tasks | Login |
|---|---|---|
|
|
|
Security boundary
DayFront can use one administrator-configured CalDAV account (single-user, the default) or prompt each visitor to sign in with their own CalDAV credentials (caldav-login). Login sessions are encrypted, persistent, and inaccessible to frontend JavaScript. Use HTTPS before exposing either mode externally. See the security guide.
Local development
Requirements:
- Node.js 24 or newer
- pnpm 10.14.0
- An accessible CalDAV server
pnpm install --frozen-lockfile
cp config.example.yaml config.yaml
pnpm dev
Edit config.yaml with the CalDAV URL and credentials. The web application is available at http://localhost:5173 during development.
Run the complete local verification suite with:
pnpm verify
Container deployment
The stable image is available for AMD64 and ARM64 hosts:
docker pull ghcr.io/erik-a-smith/dayfront:latest
Alternatively, copy config.example.yaml to config.yaml, configure the CalDAV connection, and build locally:
docker compose up -d --build dayfront
See the deployment guide for Docker, Compose, Unraid, timezone, health-check, and reverse-proxy configuration.
Using an HTTPS reverse proxy or tunnel? Set
DAYFRONT_SERVER_TRUST_PROXY=true. In Unraid, set Reverse Proxy / Tunnel Access totrue. Login through the proxy will otherwise be rejected because DayFront cannot recognize the browser's HTTPS origin. Enable this only for a trusted proxy that overwrites forwarded headers.
License
DayFront is available under the MIT License.
apps.detail.sections.mediaGallery
apps.marketingCta.appInstallTitle
apps.marketingCta.appInstallDescription
apps.detail.sections.requirements
apps.detail.sections.categories
apps.detail.sections.related
apps.detail.related.exploreCategories
apps.detail.related.exploreAllapps.detail.sections.links
apps.detail.sections.details
ghcr.io/erik-a-smith/dayfront:betaapps.detail.sections.runtime
- apps.detail.details.webui
http://[IP]:[PORT:8080]/- apps.detail.details.network
bridge- apps.detail.details.shell
sh- apps.detail.details.privileged
- false
- apps.detail.details.extraParams
--security-opt no-new-privileges=true
apps.detail.sections.configuration
Isolated host port for the DayFront beta Web UI.
- apps.detail.config.target
- 8080
- apps.detail.config.default
- 8081
- apps.detail.config.value
- 8081
Full HTTP or HTTPS URL of the CalDAV server.
- apps.detail.config.target
- DAYFRONT_CALDAV_URL
Prompts each user for their own CalDAV credentials.
- apps.detail.config.target
- DAYFRONT_AUTH_MODE
- apps.detail.config.default
- caldav-login
- apps.detail.config.value
- caldav-login
File where DayFront generates and retains its encrypted-login session key. Change only when using a custom data mapping.
- apps.detail.config.target
- DAYFRONT_AUTH_SESSION_SECRET_FILE
- apps.detail.config.default
- /data/session-secret
- apps.detail.config.value
- /data/session-secret
Maximum login-session lifetime in hours. The default is 720 hours (30 days).
- apps.detail.config.target
- DAYFRONT_AUTH_SESSION_TTL_HOURS
- apps.detail.config.default
- 720
- apps.detail.config.value
- 720
System timezone used for container logs and runtime behavior, for example UTC or America/Toronto.
- apps.detail.config.target
- TZ
- apps.detail.config.default
- UTC
- apps.detail.config.value
- UTC
Timezone used to display and interpret calendar values. Use local, UTC, or an IANA name such as America/Toronto.
- apps.detail.config.target
- DAYFRONT_CALENDAR_TIMEZONE
- apps.detail.config.default
- local
- apps.detail.config.value
- local
Time display format. Use 12h for AM/PM or 24h for 24-hour time.
- apps.detail.config.target
- DAYFRONT_UI_TIME_FORMAT
- apps.detail.config.default
- 12h
- apps.detail.config.value
- 12h
Set true to open the sidebar when DayFront loads; false starts with the calendar maximized.
- apps.detail.config.target
- DAYFRONT_UI_SIDEBAR_DEFAULT_OPEN
- apps.detail.config.default
- false
- apps.detail.config.value
- false
Set true only when DayFront is directly behind a trusted proxy that overwrites forwarded headers.
- apps.detail.config.target
- DAYFRONT_SERVER_TRUST_PROXY
- apps.detail.config.default
- false
- apps.detail.config.value
- false
Stores the generated session secret so users remain signed in across updates and restarts.
- apps.detail.config.target
- /data
- apps.detail.config.default
- /mnt/user/appdata/dayfront-beta/session
- apps.detail.config.value
- /mnt/user/appdata/dayfront-beta/session
Optional directory containing config.yaml for advanced settings and external calendar subscriptions.
- apps.detail.config.target
- /config
- apps.detail.config.default
- /mnt/user/appdata/dayfront-beta
- apps.detail.config.value
- /mnt/user/appdata/dayfront-beta