CommuniTeam is an all-purpose multi-channel team communication productivity app built with Ruby on Rails. You can check out a live demo of this application here: https://meet-my-communiteam.herokuapp.com/
Running the App Locally
- Clone the repository
git clone https://github.com/guor8lei/communiteam.git
- Install necessary gems
bundle install --without production
- Migrate the database
- (Optional) Populate the database with sample data
Note: If you choose this option, all passwords are "joining the communiteam". Use the username "admin" to log in as an admin.
- Run the app on a local server
To register for an account, enter your name, username, email, position (optional), and password. To maintain security, the app uses Dropbox's zxcvbn library to ensure password strength. If there are no errors, you will receive a confirmation email that contains an account activation link. Click the link, and you're officially in!
To log in, enter your username or email, and your password. If you forget your password, choose the "Forgot password?" option that sends prompts you for your email. You will receive a password reset email momentarily.
Once logged in, you are able to modify your account settings and profile, as well as delete your own accounts.
Employees vs Admins
There are two types of users in CommuniTeam: employees and admins. Admins have all the permissions that employees have, in addition to the ability to delete any account (but not edit). Admins are also able to promote admin privileges to any user, as well as take away admin privileges from other accounts.
The features of CommuniTeam can be split into 3 tiers: community-level, team-level, and personal-level.
- Announcements: Users are able to post, edit, and delete announcements to the entire company. Anybody is allowed to post an announcement, but only the announcement author or an admin is able to edit or delete the announcement. In addition, users can upload and attach files to their announcements.
- Shared Calendar: Users are able to add, update, and delete events on an intuitive drag-and-drop calendar. Users can export certain events to their Google Calendar.
- Posts: Within each team, users can create, edit, and delete posts, similar to announcements, but on a more local level.
- Feed: Users are able to join/leave any team they want, as well as create their own team, allowing other users to join the team. Once a user creates a team, he/she is able to edit the team name and description or delete the team. Once a user joins a team, he/she can view the team's posts. Each user has a personal feed where he/she only sees posts from the teams that he/she is in.
- Notes: Users are able to maintain their own personal journal, creating, editing, and deleting notes that only he/she can see.
The following resources were used to create this web application:
- User authentication flow based on the Ruby on Rails Tutorial by Michael Hartl.
- Frontend styled with Bootstrap.
- Password strength metered with zxcvbn and PasswordPing API.
- Account activation and password reset emails implemented with SendGrid.
- File attachments stored with AWS S3.
- Calendar created with FullCalendar and Google Calenar API.
- Deployed on Heroku.