web framework with plugin support