This week I finished developing the back end for my Ruby on Rails project. The project is called Code With Others and allows users to create and/or join groups to develop applications with one another. My goal is for the project to assist others to develop portfolio projects while working as part of a team.
A user who creates a group can set the name, image, description, goals, repository URL and Slack URL. The creator can also set technologies that they want to use to develop the application. Individual users can establish their skillset on their profile page and rank each technology by their proficiency. Each team page has a comment section to facilitate communication between members or potential members.
The most difficult portion of this project was nested forms. Getting nested forms up and running was not too difficult, but I had to write a custom writer for the nested attributes to prevent duplicates from being created. For example, if a user added Ruby as a skillset to their profile and Ruby already exists as a technology, there is no need to create another database entry for it as a technology. This is even messy to talk about because without context it probably makes no sense!
A cool feature I learned about and implemented during development was Omniauth. Users can signup/login using Github, which is extremely convenient for them and secure for me. User details are automatically populated on their profile using their Github details, so all they need to do after signup is add their skillset to their profile page.