Skip to content
A web application to manage complex group hierarchies with members, events and a lot more.
Ruby HTML CoffeeScript CSS Other
Branch: master
Clone or download

Latest commit

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.s2i Support both deployment strategies Aug 9, 2019
.tx configure transifex Dec 24, 2013
app Conform to linter and styleguide May 19, 2020
bin Extend documentation May 8, 2020
config Revert "Add abos tab to person#show" May 19, 2020
db Update schema from pending migration May 22, 2020
doc Update 01_setup.md Apr 21, 2020
images/s2i Upgrade sqlite3 in base image May 5, 2020
lib Update integration test related gems May 5, 2020
log create rails app structure Jul 24, 2012
public use FilesMatch in .htaccess, as LocationMatch is not supported there Nov 24, 2015
spec
vendor/assets Remove dead bootstrap grid source map reference May 5, 2020
.editorconfig add editor/IDE-agnostic coding styles configuration (see http://edito… Sep 3, 2014
.gitignore Ignore old, possibly outdated and mostly developer-local file Mar 4, 2020
.rspec generate various gem initializers Jul 24, 2012
.rubocop.yml Update rubocop and add rubocop-rails May 22, 2020
.ruby-version Set ruby version when switching wagons May 5, 2020
.travis.yml Adjust travis config for new branch name May 7, 2020
AUTHORS - Person history now displays the roles with layers in the group colu… Mar 18, 2017
CHANGELOG.md Add line about mailchimp to CHANGELOG.md May 5, 2020
COPYING document group and below permissions Sep 7, 2015
GNU-AGPL-3.0 add main copyright infos Jul 16, 2013
Gemfile Update rubocop and add rubocop-rails May 22, 2020
Gemfile.lock Update rubocop and add rubocop-rails May 22, 2020
Procfile Feature/procfile (#200) Mar 27, 2017
README.md
Rakefile update wagons to handle stats task Sep 15, 2015
VERSION Bump Version for Release May 19, 2020
Wagonfile.ci use scopes for all role types Jul 27, 2015
config.ru Fixed linebreaks, whitespaces and indentations Oct 23, 2018
rubocop-must.yml Make Linter and Styleguide conform to us for a change Apr 17, 2018

README.md

Welcome to hitobito

hitobito is an open source web application to manage complex group hierarchies with members, events and a lot more.

Build Status Open Source Helpers

Development

Hitobito is a Ruby on Rails application that runs on Ruby >= 2.2 and Rails 4. It might run with minor tweaks on older Rubies, but is not tested against those versions.

To get going, after you got a copy of hitobito and at least one wagon with an organization structure setup as described below, issue the following commands in the main directory:

sudo yum install sqlite memcached sphinxsearch imagemagick  # install system dependencies

bundle               # install gem dependencies
rake db:create       # create a development database (Sqlite3)
rake db:setup:all    # run migrations and load seed data of the app and all wagons
rails server         # start the rails server

To start the search server, run background jobs or the development mail catcher, run:

rake ts:start
rake jobs:work
mailcatcher -v -f

A more detailed development documentation in German can be found in doc/development. This is where you also find some Deployment Instructions.

Architecture

The architecture documentation in German can be found in doc/architecture.

Two topics shall be mentioned here explicitly:

Group Hierarchy

hitobito provides a powerful meta-model to describe group structures. Groups are always of a specific type and are arranged in a tree. Each group type may have several different role types.

This core part of hitobito does not provide any specific group or role types. They have to be defined in a separate plugin, specific to your organization structure.

An example group type definition might look like this:

class Group::Layer < Group
  self.layer = true

  children Group::Layer, Group::Board, Group::Basic

  class Role < Leader
    self.permissions = [:layer_full, :contact_data]
  end

  class Member < Role
    self.permissions = [:group_read]
  end

  roles Leader, Member
end

A group type always inherits from the class Group. It may be a layer, which defines a set of groups that are in a common permission range. All subgroups of a layer group belong to this range unless a subgroup is a layer itself.

Then all possible child types of the group are listed. When creating subgroups, only these types will be allowed. As shown, types may be organized recursively.

For the ease of maintainability, role types may be defined directly in the group type. Each role type has a set of permissions. They are general indications of what and where. All specific abilities of a user are derived from the role permissions she has in her different groups.

See Gruppen- und Rollentypen for more details and hitobito_generic for a complete example group structure.

Plugin architecture

hitobito is built on the plugin framework Wagons. With Wagons, arbitrary features and extensions may be created for hitobito. As mentioned above, as there are no group types coming from hitobito itself, at least one wagon is required to define group types in order to use hitobito.

See Wagon Guidelines or Wagons for more information on wagons and its available rake tasks.

License

hitobito is released under the GNU Affero General Public License. Copyright 2012-2015 by Jungwacht Blauring Schweiz, Puzzle ITC GmbH, Pfadibewegung Schweiz, CEVI Regionalverband ZH-SH-GL, Insieme Schweiz. See COPYING for more details.

hitobito was developed by Puzzle ITC GmbH.

The hitobito logo is a registered trademark of hitobito LTD, Switzerland. Please contact KunoKunz if you want to use the logo and be part of our community.

You can’t perform that action at this time.