Comments (14)
Some food for thought and motivation:
I've been using both Dashing and Atlasboard to build dashboards and they both fall short with extending/contributing.
- Atlasboard uses git submodules that is less ideal and makes it next to impossible to bring own resources and dependencies into play. Outcome is quite rigid
- Dashing uses gists, but it's quite manual process and does not version well.
- There are some projects, like dashing-contrib that tries to improve the situation, but I feel the best way is to manage each widget/theme/whatever as a separate repo+npm module.
Some ideas & wishes:
- Provide a way to access dashboard logger
- Allow a widget to introduce new dependencies (each have their own package.json)
- Dashboard could provide a storage (persistent or not) that widgets could utilise to cache some data
- Provide a way to add new middleware to server, for example for authentication
This project has a great potential, and if you manage to bring good extendability to it, that'll greatly help people to contribute.
from mozaik.
@juhamust thanks for the feedback, I'm currently working on making the extensions npm modules and plan to make the express app available for customization, but for now I don't plan to introduce a storage layer, but because the extensions will now be able to declare their own dependencies, it's possible to add it for a specific extension. I've also added the winston logger, I must find a clean way to expose it.
If you're curious, there is a PR in progress here /pull/23 and I've already published (really beta) modules to npm https://www.npmjs.com/search?q=mozaik
from mozaik.
This is excellent news! I will try out the branch in near future, but sounds good.
If you'll find winston logger too limited at some point, I recommend trying bunyan as an alternative.
from mozaik.
Still a work in progress, but I've published a first demo showing what's the new architecture should be on https://github.com/plouc/mozaik-demo, for now, it's not really usable, I have to fix a problem with duplicate modules (because npm installs modules recursively) and migrate extensions clients to have a validated config + ability to use the main logger (already done on heroku and github extensions). I'll work on the cli when all the architecture will be mature enough.
from mozaik.
Thanks for the update @plouc! Sure it's a big effort (causing some regressions and whatnot), but I believe it will greatly help people to contribute/extend in the long run.
You may also need to give up with wiki powered extension documentation and encourage widget author using README.(md/rst) instead. Maybe even provide a mozaik-ext-boilerplate
?
from mozaik.
I've published mozaik and mozaik-ext-* npm modules but I have to update the whole wiki because of the switch and add more tests on it.
I'm thinking of a yeoman generator for the extension boilerplate.
from mozaik.
Any plans for merging this to master
branch soon? It also seems that there is some code pushed to npmjs that does not exist in version control yet (for example Mozaik.loadApiConfig) - which makes a bit more challenging to use version control as dependency for time being.
from mozaik.
Yes, I'm sorry for that, as it's a side project I didn't had enough time to dry the extensibility branch, by the way, I'll try to push code released on npm asap.
from mozaik.
The extensibility branch is now up to date with the latest npm package
from mozaik.
Great, thanks.
from mozaik.
@juhamust, I've merged the extensibility
branch and I'm currently working on yeoman generators for custom dashboard and extension, see https://github.com/plouc/mozaik-generator.
I have not yet updated the wiki.
from mozaik.
Excellent work, @plouc. I've got couple of widgets already cooking up, and while being developed on work-time, hoping to release them under permissive license soon.
from mozaik.
Feel free to close this ticket.
from mozaik.
Putting the money where my mouth is, now there are couple of extensions published:
- https://www.npmjs.com/package/mozaik-ext-analytics
- https://www.npmjs.com/package/mozaik-ext-sheets
- https://www.npmjs.com/package/mozaik-ext-calendar
from mozaik.
Related Issues (20)
- [Enhancement] Keyboard support to switch dashboards (space, left, right) HOT 1
- [Enhancement] Serve multiple dashboards based on config file HOT 1
- Navigation between dashboards HOT 3
- build failed when jsx syntax added HOT 1
- error while using widget ui component HOT 1
- Display json data
- Extension Tutorial for V2 HOT 1
- External/Automatic reload of Dashboard configuration HOT 1
- Proxy error: Could not proxy request /config from localhost:3000 to http://localhost:5000. HOT 1
- Demo disappears after a few seconds, then returns... HOT 1
- Insert JS in widget or dashboard
- how to run Mozaik with ASP Core backend HOT 3
- Error in npm-install mozaik demo.
- engine.io client requires ES6 to build HOT 3
- Demo is down HOT 1
- Is the demo down? HOT 1
- localhost:5000 refused to connect postman windows 64bit
- Proxy error: Could not proxy request /api/products/top from localhost:3000 to http://localhost:8000/. See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ECONNREFUSED).
- Proxy error: Could not proxy request /api/workouts from localhost:3001 to http://localhost:3001/ (ECONNREFUSED).
- Demo hosted on Heroku doesn't work HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mozaik.