MyDash is a flexible and customizable dashboard application for Nextcloud that allows users to create and manage multiple personalized dashboards with various Nextcloud widgets.
- Multiple Dashboards: Create and switch between multiple custom dashboards
- Widget Management: Add, remove, and arrange Nextcloud widgets
- Drag & Drop: Intuitive drag-and-drop interface powered by GridStack
- Widget Styling: Customize widget appearance with color pickers and styling options
- Conditional Display: Set rules for when widgets should be displayed
- Template System: Administrators can create pre-configured dashboard templates
- API Support: Compatible with both Nextcloud Dashboard API v1 and v2 widgets
- Permission Control: Fine-grained access control for dashboards and widgets
- Nextcloud 31+
- PHP 8.0+
- PostgreSQL 12+ or MySQL 8.0+
-
Clone this repository into your Nextcloud apps directory:
cd /var/www/nextcloud/apps git clone https://github.com/ConductionNL/mydash.git -
Install dependencies:
cd mydash composer install npm install -
Build frontend assets:
npm run build
-
Enable the app:
php occ app:enable mydash
# Install dependencies
composer install
npm install
# Build for development (with watch)
npm run dev
# Build for production
npm run buildRun quality checks before committing:
# PHP Code Quality
composer phpqa
# Run tests
composer test:unit-
Backend: PHP with Nextcloud App Framework
- Controllers: Handle API requests
- Services: Business logic layer
- Mappers: Database access layer
- Entities: Data models with Doctrine ORM
-
Frontend: Vue.js 2.7 with Pinia
- Components: Reusable UI components
- Stores: State management
- Services: API client
-
Database:
oc_mydash_dashboards: Dashboard configurationsoc_mydash_widget_placements: Widget positions and settingsoc_mydash_conditional_rules: Display conditionsoc_mydash_admin_settings: Global settings
- Navigate to the MyDash app
- Click "Create dashboard" if no dashboard exists
- Click "Add widget" in edit mode
- Select widgets from the picker
- Arrange widgets by dragging them
- Click "Done" to save
- Enter edit mode by clicking "Customize"
- Click the palette icon on any widget
- Adjust colors, borders, padding, and other styling options
- Click "Save" to apply changes
Administrators can create dashboard templates:
- Go to Settings → Administration → MyDash
- Create a new template
- Add and configure widgets
- Users can now apply this template when creating dashboards
GET /api/dashboards- List user's dashboardsGET /api/dashboard- Get active dashboardPOST /api/dashboard- Create new dashboardPUT /api/dashboard/{id}- Update dashboardDELETE /api/dashboard/{id}- Delete dashboardPOST /api/dashboard/{id}/activate- Set as active
GET /api/widgets- List available widgetsGET /api/widgets/items- Get widget itemsPOST /api/dashboard/{id}/widgets- Add widget to dashboardPUT /api/widgets/{id}- Update widget placementDELETE /api/widgets/{id}- Remove widget
We welcome contributions! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Run quality checks:
composer phpqa - Commit with meaningful messages
- Push to your fork
- Create a Pull Request
AGPL-3.0-or-later
For issues and questions:
- GitHub Issues: https://github.com/ConductionNL/mydash/issues
- Documentation: [Coming soon]
Developed by Conduction
Initial release with:
- Multiple dashboard support
- Widget management with drag & drop
- Widget styling editor
- Conditional display rules
- Admin template system
- Support for Nextcloud Dashboard API v1 and v2