Building mind map based webapp, is Vaadin a good choice?

Hi, I am final year computer engineering student and as a project we have chosen to create a web app where people can collaboratively work on mind maps in real-time. I will be working in a team of 3 students in total. We have been researching for past 2 weeks about frameworks/toolkits those can be used for creating such a project but we need some guidance.

Almost all of existing mind map based websites use Flex/Flash and the rest use Silverlight. Both of them are completely unknown for us and the learning curve is not easy, it seems(according to many people I talked with).

Until today, we have worked out the general flow of typical user session, without diving into technology details. In a nutshell, if a session has 3 users A, B and C, the changes made by A on the whiteboard will be visible on respective whiteboards of B and C. The client side will be a GUI having a whiteboard and drawing tools to aid in mind map creation. The server will manage rest of the things such as sessions, database operations etc.

Very short features list:[list]

[]
Create mind maps collaboratively
[
]
Restore saved session and start working from last draft of mind map
[]
Basic chat interface for communication
[
]
Add multimedia(audio/video/images) to mind maps
[*]
Export mind maps to png, pdf, svg files

[/list]
We need to consider following points for technology selection:

  1. Time frame for project - about 3 months, give or take 2-3 weeks
  2. Learning curve for framework - should be easy (Very relative term indeed…In the context, we are familiar with VB6, PHP, Javascript and Core Java)
  3. Necessary graphics related features supported - such as whiteboard, drag-drop widgets, animations(need not be fancy stuff) etc.
  4. Availability of tutorials and good documentation

I do not know anything about Java 2D drawing API but in order to create a mind map of collection of nodes, we need to create nodes which may be rectangle and text label as their children and figure out how to connect them together. This is the most difficult thing for us at this time. Can Vaadin be used for doing such manipulations?

There are few open source mind mapping tools available such as XMind, Freemind etc. which we can use to get ideas but they all are desktop applications. So if we use any java framework that would be great help considering we are familiar with core java.

We are considering Vaadin and jQuery right now but are open to new suggestions. Any inputs are highly appreciated. Thanks.

This
new example
might help you for a basic mind map drag&drop UI. There are some possibly more interactive alternatives to drawing the connectors, such as
GWT Graphics
or
CanvasWidget
add-ons.

The whiteboard and chat would benefit from server-side push, which you can do with
ICEPush
. Or you could just use conventional client-side polling.

For the back-end parts and the UI around the mind map itself, Vaadin may be a good choice. However, for the mind map itself, Vaadin does not provide much support - the add-ons mentioned by Marko can help, but a very interactive and responsive drag and drop interface in such a case would require client side coding. I guess you would need to use and extend the add-ons, probably delving into GWT coding for the client side. Animations, too, would require the use of add-ons and/or client side coding.

In short, Vaadin is designed more for enterprise application type of interfaces with data entry and manipulation etc. rather than very graphical interfaces. There is some support, but not as extensive as some other frameworks have.

If the user interface is not so heavily based on dragging items from one parent to another etc. you might be able to reduce the client side coding significantly.

Thank you both for very detailed and helpful replies. The creation of mind maps would involve dragging and dropping of individual nodes and the UI should be responsive as Henri mentioned.

The UI except whiteboard area created with Vaadin is a good idea I guess. Could you suggest some toolkit/framework that can be used for whiteboard area where user will spend most of the time? I am currently looking at GWT but it would be great to have larger pool of options to choose from.

Thanks.

I would do the whiteboard area with
GWT Graphics
library, package the result as a Vaadin add-on component and code the rest of the application on server-side with Vaadin.