Skip to content

R0GGER/maflplus

Β 
Β 

Repository files navigation

Mafl+

A minimalistic and flexible homepage dashboard - forked from hywax/mafl with extended layout options, search, tabs and more.


screenshot 2 | screenshot 3

Note β€” This is an independent fork. It is not affiliated with the upstream hywax/mafl project.

Table of Contents

πŸ†• What's different?

This fork adds several features on top of the original Mafl:

Area What changed
Layout: Grid Responsive grid with up to 6 columns (small / medium / large / xlarge).
Layout: List Compact list display mode per group, with its own column configuration.
Layout: Spacing Configurable spacing between groups and between items.
Styles Per-element styling for category headers, titles and descriptions (color, fontSize, fontWeight, fontStyle, etc.).
Logo Fixed responsive logo in the top-left corner, served from the data volume.
Background image Full-screen background image served from the data volume.
Background overlay Color overlay with configurable opacity for better text readability.
Tabs Organise services into switchable tabs, each with its own icon.
Search bar Filters bookmarks across all tabs; falls back to Google or DuckDuckGo web search. Keyboard shortcuts: /, Ctrl+K.
Favicon API Retrieve service icons automatically via a configurable favicon API.
Status position Align the status indicator to the left or right (default) of a service.
Check updates Temporarily disabled in this fork.

🎯 Features

  • πŸ” Privacy β€” All requests to third-party services happen server-side.
  • ⚑ Real-time β€” Interactive service cards with live status information.
  • πŸ” Search β€” Filter bookmarks instantly; fall back to Google or DuckDuckGo.
  • πŸ“‘ Tabs β€” Organise services into switchable tabs.
  • πŸ–ΌοΈ Backgrounds β€” Full-screen background images with color overlay.
  • 🎨 Themes β€” Six built-in themes or full custom styling.
  • πŸ—‚οΈ Grouping β€” Grid and list display modes per group.
  • 🏷️ Tags β€” Add tags to your services.
  • 🌎 Multi-language β€” Automatic language detection with 10 locales.
  • πŸ‘Œ Easy setup β€” A few lines of YAML and your homepage is ready.
  • πŸš€ Fast β€” Powered by Nuxt 3 β€” everything is snappy.
  • 🐳 Docker β€” Optimised container images.
  • ✨ Free & open source β€” MIT licensed.
  • πŸ“² PWA β€” Installable as a progressive web app.
  • πŸ› οΈ Config Builder β€” Visual editor for creating and editing your config.yml β€” no server required.

πŸš€ Getting started

Docker

The image is published to the GitHub Container Registry.

services:
  mafl:
    image: ghcr.io/r0gger/maflplus
    restart: unless-stopped
    ports:
      - '3000:3000'
    volumes:
      - ./mafl/:/app/data/

Place your config.yml (and optional background images) inside the ./mafl/ directory.

βš™οΈ Configuration

All settings live in a single config.yml file inside the data volume.

Layout

Control the responsive grid columns and spacing.

layout:
  grid:
    small: 2      # β‰₯640px
    medium: 2     # β‰₯768px
    large: 3      # β‰₯1024px
    xlarge: 5     # β‰₯1280px
  list:
    small: 2
    medium: 3
    large: 4
    xlarge: 5
  spacing:
    group: 1.5rem
    item: 0.25rem

Column values range from 1 to 6. The list key provides separate column settings for groups displayed as lists.

Styles

Customise the appearance of category headers, service titles and descriptions.

styles:
  category:
    color: '#ffffff'
    fontSize: 1.5rem
    fontWeight: 600
  title:
    color: '#ffffff'
    fontSize: 0.875rem
  description:
    color: '#cccccc'
    fontStyle: italic

Supported properties: fontFamily, fontSize, fontWeight, fontStyle, textDecoration, color.

Logo

Display a logo in the top-left corner of the homepage. Place the image file in your data volume (next to config.yml). The logo is fixed-positioned and scales responsively across mobile, tablet and desktop.

logo: logo.png

Supported formats: .jpg, .jpeg, .png, .gif, .webp, .svg, .avif

Background

Set a full-screen background image. Place the image file in your data volume (next to config.yml).

background: background.jpg

Supported formats: .jpg, .jpeg, .png, .gif, .webp, .svg, .avif

Background overlay

Add a semi-transparent color layer over the background to improve readability.

backgroundOverlay:
  color: '#000000'
  opacity: 0.5
Property Description Default
color Any valid CSS color #000000
opacity 0 (transparent) – 1 (opaque) 0.5

Tabs

Split your services across multiple tabs. Each tab has a name, an optional icon and its own set of service groups.

tabs:
  - name: Personal
    icon: mdi:home
    services:
      Favorites:
        display: grid
        items:
          - title: GitHub
            link: https://github.com
            icon:
              name: simple-icons:github
              wrap: true
      News:
        display: list
        items:
          - title: Hacker News
            link: https://news.ycombinator.com
            icon:
              favicon: news.ycombinator.com
  - name: Work
    icon: mdi:briefcase
    services:
      Tools:
        display: list
        items:
          - title: Grafana
            link: https://grafana.local
            icon:
              name: simple-icons:grafana
              color: '#f46800'

When tabs is defined the top-level services key is ignored.

Search

A search bar is displayed at the top of every page. It filters bookmarks across all tabs as you type and offers web search when no match is found.

searchProvider: google

Values: google, duckduckgo β€” Default: google

Keyboard shortcuts:

Key Action
/ Focus the search bar
Ctrl+K / Cmd+K Focus the search bar
↑ / ↓ Navigate results
Enter Open selected result
Escape Clear / close

Display modes

Each service group can be rendered as a grid (cards with icon, title and description) or a list (compact rows).

services:
  Favorites:
    display: grid
    items:
      - title: Home Assistant
        description: Home automation
        link: https://ha.local
        icon:
          name: simple-icons:homeassistant
          wrap: true
          color: '#3dbcf3'
  Monitoring:
    display: list
    items:
      - title: Grafana
        link: https://grafana.local
        icon:
          name: simple-icons:grafana
          color: '#f46800'

Favicon API

Automatically fetch service icons by domain name using a favicon API. Set the base URL globally:

faviconApi: https://favicon.vemetric.com/

Then reference a domain in any service icon:

icon:
  favicon: github.com

Status indicator

Enable a live ping indicator per service. The position can be set to left or right (default).

- title: Home Assistant
  link: https://ha.local
  status:
    enabled: true
    position: left
    animation: true

πŸ“Š Services

Services are the building blocks of your homepage. Each service can have a title, description, link, icon, status indicator and tags.

Built-in service types:

  • Base β€” Standard card with icon, title, description and optional status ping.
  • IP API β€” Displays your public IP address information.
  • OpenWeatherMap β€” Shows current weather for a given location.

πŸ–Ό Icons

Services support multiple icon sources:

Type Description
Iconify 200,000+ open-source vector icons (e.g. simple-icons:github, mdi:home)
Emoji Any valid emoji character
URL Direct URL to an image
Local Image file stored in the data volume
Favicon Auto-fetched via the configured favicon API by domain name

🎨 Themes

Six built-in themes: system, light, dark, deep, sepia, bluer.

theme: dark

🌎 Multi-language

The app detects your browser language automatically. Override it in config.yml:

lang: en

Supported languages: en, ru, zh, hi, es, ar, pl, fr, de, gr

πŸ›  Config Builder

A standalone visual tool for creating and editing your config.yml - no server or dependencies required.

Open the Config Builder in your browser.

Features:

  • Edit all global settings (title, language, theme, background, search, etc.)
  • Add and reorder tabs, groups and bookmarks
  • Configure icons (favicon, URL or Iconify name with color)
  • Import an existing config.yml to modify it
  • Live YAML preview with one-click copy to clipboard
  • Light and dark theme

πŸ“’ Wiki

A step-by-step guide covering installation, configuration (layout, styles, backgrounds, tabs, search), icon types, and service tags: wiki.maflplus.eu

πŸ“„ License

This project is open-source software licensed under the MIT license.

Based on hywax/mafl β€” thank you to the original author and all contributors.

About

Minimalistic flexible homepage

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • HTML 52.4%
  • Vue 24.4%
  • TypeScript 21.7%
  • Other 1.5%