Giter Site home page Giter Site logo

crewmate / crewmate Goto Github PK

View Code? Open in Web Editor NEW

This project forked from redbooth/teambox

61.0 17.0 19.0 19.09 MB

Community fork of Teambox-3 with LDAP support, option to disable “community mode” and more…

Home Page: http://crewmate.org/

License: GNU Affero General Public License v3.0

Ruby 58.95% JavaScript 12.05% CSS 7.89% HTML 14.14% Gherkin 6.97%

crewmate's Introduction

Crewmate

Build Status Code Climate Code Coverage Dependency Status Stories in Ready Gitter chat

Crewmate is a project management software, a community fork of Teambox v3, built on Ruby on Rails with a focus on collaboration.

Crewmate workflow is project-centered; each project being visible only to people invited to it. Projects have a status wall, conversations, tasks, shared pages and file uploads. You can even post to everywhere just using email.

Crewmate is open-source software, meaning you can also download it, change its code and host yourself.

Project info

Installation

Hop to our wiki to get detailed information on installing Crewmate.

Contributing

Follow our contributor guide on our github wiki.

You don't need to be a programmer to contribute to the project, you can contribute ideas and help with debugging in the Issues queue. You can also help with translation of the project, we work these translations through Transifex and it has an intuitive web interface. Contact us to get involved! :)

Thanks to the many Ruby projects we're using and the Famfamfam icon collection.

Community

Join us in our GITTER channel to discuss the project.

What's new in this fork?

Features

  • Disabled 'community mode' so you can now create more than one organizations. Every organization may have its own projects (like as in hosted version).
  • Implemented authentication via LDAP with automatic account creation. Also fixed "Forgot your password" to work correctly with users authenticated via LDAP.
  • Added LDAP support for invitations. When you invite colleague by username and he's known in LDAP, it will automatically create user account for him and send e-mail invitation for log-in.
  • Changed default time-zone to Prague and first day of week to monday :-)
  • Introduced new role named supervisor and ability to create organizations. You can allow creating new organizations only to supervisors (or every user like as before).
  • Option to set organization as default for all new users; every newly signed user will be automatically added to all default organizations as participant (i.e. will be able to create new projects).
  • Support for Google Analytics tracking.

Bug fixies

  • Used fixed gem Immortal that works correctly with PostgreSQL etc.
  • Fixed OAuth authentication controller for Google (see this page).
  • Fixed broken processing of incoming e-mail attachments and multipart messages (thanks to mrtorrent for the first part). Added filter that removes attachments of unwanted MIME type. That's for removing S/MIME signature files which are useless in Teambox.
  • Fixed issue with incoming e-mails that contains non-ASCII compatible characters (e.g. Czech diacritic). This charset problem was even with text/plain in UTF-8! Successfully tested: ordinary text/plain email, multipart emails - S/MIME signed, with inline picture, with any attachments and all combinations. I suppose that every e-mail has at least one text/plain part, HTML-only emails doesn't work.

crewmate's People

Contributors

balinterdi avatar ccarruitero avatar cmelbye avatar crazycode avatar dalpo avatar enriclluelles avatar flov avatar gazambuja avatar j-manu avatar jamesu avatar jirutka avatar jjmata avatar jnv avatar jrom avatar maggix avatar michaelkoper avatar mislav avatar mmehnert avatar mrtorrent avatar omenking avatar pierre-alain-b avatar roperzh avatar schmidp avatar scsmith avatar sdepablos avatar seanhussey avatar sunny avatar ujifgc avatar unixcharles avatar versvs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crewmate's Issues

Latest activity should auto-update

Living on the latest activity stream page would be better if we have auto-update, like Twitter, you would see a top link "X new items" you can click to slide down new elements.

BrowserID / Mozilla Persona authentication

Could be interesting have BrowserID / Mozilla Persona to authenticate the log in/ sing up of the users? I will do this, i will send a commit with the changes. :) But if someone likes help, awesome!

Support MRI 1.9.3

Obviously…

  • Make SystemTimer MRI 1.8-only dependency
  • Update incompatible gems
  • Solve obscure, mindfucking errors

Depends on #12 and probably #11

Bundle install doesn't check out immortal

Hi,

After a successful bundle install I get this error when launching the site:

/usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/source/git.rb:177:in `load_spec_files': git://github.com/davidmm/immortal.git (at postgresql_fix) is not checked out. Please run `bundle install` (Bundler::GitError)
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/source/path.rb:86:in `local_specs'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/source/git.rb:150:in `specs'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/lazy_specification.rb:52:in `__materialize__'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/spec_set.rb:88:in `materialize'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `map!'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `materialize'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/definition.rb:114:in `specs'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/definition.rb:159:in `specs_for'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/definition.rb:148:in `requested_specs'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/environment.rb:18:in `requested_specs'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/runtime.rb:13:in `setup'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler.rb:120:in `setup'
    from /home/nuke/Web/teambox/config/boot.rb:8
    from script/rails:5:in `require'
    from script/rails:5

Comments delay when big group is watching

If you have a task/conversation with a lot of users watching, the UI get on hold several seconds till the comment is sent, probably processing email notifications on the background.

I'm testing with 33 users watching and I have to wait around 30s to get the comment sent.

GDocs support doesn't work

There is an icon to add a gdoc but "You have not added a google docs provider" is always displayed.

There is no place to configure this feature.

Notification emails should be nested

Currently notification emails are not identified by email clients as same thread and they are not nested which is annoying when you have a lot of them.

Probably something to do with email headers.

Update readme

  • remove outdated links to Teambox company etc.
  • explain that this is fork of no longer supported project and that Teambox 4 will not be open-source (see email from Nukeador)
  • state our goals for future development

Meetings section

This a good to have feature, because organising projects involves a lot of times meetings.

Having a new section (such as conversations) to create meetings and then show them on calendars would be great.

Meetings fields should at least include:

  • Start date (dates with timezone support, so you can see the time on your zone, specially important for international meetings)
  • End date.
  • Agenda.
  • Invitees.
  • Meetings minutes.
  • Attachments.
  • Tags.

API: Creating an invitation returns 404

Standard API method to add users to the project is:

POST /api/1/projects/:project_id/invitations

This, however, returns 404 as if route, project or invite would not exist.

Log returns:

ActiveRecord::RecordNotFound (Couldn't find Invitation without an ID)

so it apparently tries to load a not-yet existing invitation…

My gut feeling tells me the problem might be here:
https://github.com/cvut/teambox/blob/master/app/controllers/api_v1/invitations_controller.rb#L3

The load_invite filter should be skipped for #create too.

Dashboard/overview section for projects

When new people come, they want to have a clear overview about what's going on a project.

Our suggestion is to have a new section for projects called Dashboard or Overview where you can see project tasks (for today, tomorrow, this week), recent conversations...

This should be the first section, over latest activity one.

Show user tasks on user profile

Knowing what other users are doing is specially important when you want to help them.

It would be a good thing to have that when you you to a user profile, you get first a summary of user tasks like a dashboard (the ones you have permission to see) and other section with the latest activity.

Fork name

There have been discussions about a new name for this fork?

Ability to add non-member to the conversation

It’s very often use case that we need to add some non-member to the particular conversation only, but it’s not desirable to add him to the project (to not spam him with irrelevant conversations, wait until he confirm invitation to the project etc.) This is actually the biggest issue we have with Teambox on CVUT so it’s the top priority for us.

It will be great if we could add any user to the particular conversation, not even Teambox user but also anyone just with e-mail address. In the second case it will be enough if (s)he can communicate just via e-mail (receive and send to the conversation).

Scavenge branches for updates/functionality

There are 38 branches in upstream, most of them are feature branches with some interesting, but unfinished functions.

Write up the notable branches here, then we can decide what to merge.

This should be done before updating stuff en masse (#11, #13) since updates may break compatibility with these branches.

Local branches

  • dev
  • rails3.1

Notifications on site

Having to check the email to see notifications is pointless if you want to avoid using the email to organise your work.

It would be nice to have notification icon at the top with unread count, so you could see live notifications about tasks for today count, unread conversations.

User dashboard

First page when you log in should be your persona dashboard, where you could see:

  • Tasks for today and tomorrow.
  • Tasks for this week.
  • Unread notifications: mentions...
  • Collapsed lists of items I'm following.

API documentation is not accessible

Each instance of Teambox contains documentation engine for API, which should be accessible on /api, e.g.: http://tb.mlstrm.cz/api

This, however, doesn't work for the FIT's instance: https://teambox.fit.cvut.cz/api – maybe it's because of authorization but I doubt it. Anyway, could you please check the logs for the error so I can investigate it further? I have a gut feeling it may be related to other problems with API.

Remove Jammit, migrate to Sprockets

No one cares about Jammit Warning and nobody wants to deal with JVM to run Closure.

There's some initial support for Sprockets so let's use it.

  • Remove Jammit
  • Remove Barista (CoffeeScript is handled by Asset Pipeline)
  • Use full Sprockets (first update Rails #11)

Improve public pages

When you work on an open organization, you want external people to discover what are you working on and join as clear an easy as possible.

For that reason public pages shouldn't have a different url or style, they should be shown as you see the projects when you have observer permissions when you go to project normal url.

Probably also you should get a nice project listing when you go to main page and log in box should be on top.

Setup Travis

Get tests up & running, focus on REE/MRI 1.8 for now, with allowed failures for MRI 1.9 and 2.0.

Show all project link in sidebar and pinned

"Show all projects" link should list the projects in the sidebar instead of loading a new page.

Also it would be nice to be able to "pin" some projects to stay on the top of the list.

Upgrading from teambox base

Doing an update from Teambox v3 base files I get some errors:

account/settings

 Showing /varr/lib/teambox/app/views/users/form/_settings.haml where line #3 raised:

undefined method `uses_ldap_authentication' for #<User:0xb591930c>

Extracted source (around line #3):

1: .login.text_field
2:   = f.label :login, t('users.form.login')
3:   - if user.uses_ldap_authentication
4:     = user.login
5:   - else
6:     = f.text_field :login

Trace of template inclusion: app/views/users/edit.haml

I guess database schema is different. Probably an upgrading doc would help to migrate to your fork from teambox base ;)

NameError while creating invitation via API

POST /api/1/projects/4/invitations

{
 "user_or_email": "foo"
}

results in HTTP 500 and exception:

NameError (undefined local variable or method `f' for #<ApiV1::InvitationsController:0x300c95c9118>):
  app/controllers/api_v1/invitations_controller.rb:34:in `create'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:151:in `process_action'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_controller/metal/rendering.rb:11:in `process_action'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/abstract_controller/callbacks.rb:18:in `process_action'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/abstract_controller/callbacks.rb:17:in `process_action'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_controller/metal/instrumentation.rb:29:in `process_action'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_controller/metal/rescue.rb:17:in `process_action'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:120:in `process'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/abstract_controller/rendering.rb:40:in `process'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_controller/metal.rb:138:in `dispatch'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_controller/metal.rb:178:in `action'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:62:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:62:in `dispatch'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:27:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/routing/mapper.rb:35:in `call'
  vendor/bundle/ruby/1.8/gems/rack-mount-0.6.13/lib/rack/mount/route_set.rb:148:in `call'
  vendor/bundle/ruby/1.8/gems/rack-mount-0.6.13/lib/rack/mount/code_generation.rb:93:in `recognize'
  vendor/bundle/ruby/1.8/gems/rack-mount-0.6.13/lib/rack/mount/code_generation.rb:103:in `optimized_each'
  vendor/bundle/ruby/1.8/gems/rack-mount-0.6.13/lib/rack/mount/code_generation.rb:92:in `recognize'
  vendor/bundle/ruby/1.8/gems/rack-mount-0.6.13/lib/rack/mount/route_set.rb:139:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:492:in `call'
  vendor/bundle/ruby/1.8/gems/barista-1.0.0/lib/barista/server.rb:33:in `call'
  vendor/bundle/ruby/1.8/gems/haml-3.0.25/lib/sass/plugin/rack.rb:41:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/head.rb:14:in `call'
  vendor/bundle/ruby/1.8/gems/rack-1.2.1/lib/rack/methodoverride.rb:24:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/params_parser.rb:21:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/flash.rb:182:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/cookies.rb:295:in `call'
  vendor/bundle/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/query_cache.rb:32:in `call'
  vendor/bundle/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache'
  vendor/bundle/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/query_cache.rb:12:in `cache'
  vendor/bundle/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/query_cache.rb:31:in `call'
  vendor/bundle/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:353:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/callbacks.rb:46:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/callbacks.rb:44:in `call'
  vendor/bundle/ruby/1.8/gems/rack-1.2.1/lib/rack/sendfile.rb:107:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/remote_ip.rb:48:in `call'
  vendor/bundle/ruby/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/show_exceptions.rb:46:in `call'
  vendor/bundle/ruby/1.8/gems/railties-3.0.3/lib/rails/rack/logger.rb:13:in `call'
  vendor/bundle/ruby/1.8/gems/rack-1.2.1/lib/rack/runtime.rb:17:in `call'
  vendor/bundle/ruby/1.8/gems/rack-1.2.1/lib/rack/lock.rb:11:in `call'
  vendor/bundle/ruby/1.8/gems/rack-1.2.1/lib/rack/lock.rb:11:in `synchronize'
  vendor/bundle/ruby/1.8/gems/rack-1.2.1/lib/rack/lock.rb:11:in `call'
  vendor/bundle/ruby/1.8/gems/railties-3.0.3/lib/rails/application.rb:168:in `call'
  vendor/bundle/ruby/1.8/gems/railties-3.0.3/lib/rails/application.rb:77:in `send'
  vendor/bundle/ruby/1.8/gems/railties-3.0.3/lib/rails/application.rb:77:in `method_missing'
...

Permit admin of the project to remove any user from “watching”

It’s very common that users are lazy to mention only people who may be interested in their conversation and simply add @all every time. We can’t avoid this, but admin should have right to fix it, i.e. remove any user from watching.

Maybe creator of the conversation thread (or task etc.) should have this right too.

Tags: Set, list and search

I would be super helpfull to have a field where you can assign multi tags to a project or conversation, so then you could list every item using that tag or even search for them.

gherkin dependency to 2.3.6

Gemfile.lock has to be updated becuase gherkin 2.3.3 no longer compiles in newer distros:

vim +119 Gemfile.lock

To version 2.3.6

Be able to filter task by status

A great change to the task list page would be to be able to get more detailed reports.

So for example, I should be able to list all completed tasks last week, so get an overview of the work done.

So filters would be by:

  • Name
  • Date (start, end, modified)
  • Status

Personal tasks, with no project

People would like to create private tasks for themselves, not tight to a project and only visible for them or the people they mention inside the task.

“Like” function

Recognition is key to empower contributors, having a way to show your support to comments, conversations or initiatives is important.

For that reason I would be great to have a "Like" button in every element to show your support.

Assign to multiple people

You should be able to assign a task to multiple users, a lot of times a task has to be made in collaboration with a group.

This is the first feature request from a list gathered by Mozilla Hispano community ;)

Surveys inside tasks/conversations

When deciding what to do, sometimes you need feedback from every involved in a task or conversation, and instead of asking and getting a list of comments, it would be good to start a comment with a survey and get feedback there directly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.