final project in The Odin Project rails curriculum.
Dev-Communities was created as a platform to connect developers with one another, with multiple purposes in mind:
- Enable intuitive networking and collaboration between developers
- Increase direct communication between developers
- Encourage developers to keep up with each other online and in person
Visit Dev-Communities and login (email: brianmonaccio@dev-communities.com , password: foobar) to tour the site with demo functionality. Otherwise, sign up for a new account or log in with github. Then set your location and pick some skills to get going on the site.
- Devise account registration, recovery, authentication, confirmation, and omniauth
- Email confirmation and password reset
- letter opener used in test and development to send emails
- SendGrid used in production
- Email confirmation and password reset
- Google Maps and Google Places allow users to select a fixed location to use with their account. This feature can be disabled or updated as the user likes.
- Acts as taggable on gem used for tagging accounts with preferred programming languages. This is combined with rails-jquery-autocomplete gem in searching for skills to tag.
- User's can discover one another by name, location, or programming skill tags. Simply type your search in the search bar on the top left side of any page.
- Jquery used to auto-complete search results
- Profile picture upload
- CarrierWave Uploader was used in combination with S3 in production to allow users to upload their profile picture.
- Posts/feed
- Users can post to their network on their profile page. This form is submitted via AJAX so the page does not require refresh.
- posts can be edited and deleted by their author
- Each user has a feed - similar to facebook - where all the posts in their network are ordered by their creation time.
- Users can post to their network on their profile page. This form is submitted via AJAX so the page does not require refresh.
- Friend requests
- visit a user's profile and click the
Send Friend Requestbutton
- visit a user's profile and click the
- Friendships
- click
x friend requestson the navbar and accept or decline the requests there. - Friendships are formed on behalf of the requestor and the friend after a friend request is accepted
- Friend requests are deleted when they are declined, and can be resent afterwards
- click
- Notification system
- triggered when a user receives a friend request, accepts a friend request, or when a user makes a post
- A user can view their notifications on the navbar of any page
- separated by friend request and every other notification type
- on the friend requests page, a user can accept or decline a request
- on the notifications page, a user can mark a notification as read to clear it
- separated by friend request and every other notification type
- mailboxer gem with chosen jquery and ImageSelect for communication
Some features were cut from the application in order to move on with The Odin Project. They could make it in at a later date
- Code snippets in messages
- tags linked to index page where all users with that tag displayed
- location index to see devs by location
- github account displayed on user profile
- github user information included in feed (like commits, pull requests, etc)
- events
- communities (similar to groups on facebook)
- Ruby 2.6.1
- bundler
- Rails 5.2.3
- ImageMagick for profile picture uploads
- Postgres version 11.5 with test and development databases established
- Your google platform API key, with maps and places enabled
- An omniauth github app with the correct home page url and callback url
- Clone the repository to your machine
- run
bundle install - update the development and test database information in
config/database.yml. Include the databases you established for your test and development environments, along with the required username and password for each database. - run
rails db:migrate - run
rails db:seedif you would like to have some functional users to mess with - replace the existing api key with your api key in the calls to the maps api
- place the key between
key=and&librariesin the source of the ending script tags inapp/views/user_locations/new.html.erbandapp/views/user_locations/edit.html.erb - make sure to restrict the access to your key on google cloud platform
- place the key between
- run
bundle exec figaroto create an application.yml file where you can safely store secret keys. A .gitignore file will be created with the application.yml file added to it automatically- place your github app key and secret in this file with some convenient constant names such as 'GITHUB_APP_ID' and 'GITHUB_SECRET'
- make sure to update the
config.omniauth :githubline inconfig/initializers/devise.rbin order to set up github omniauth- replace the environment variables with the names you would like to use
- make sure existing tests pass by running
rails test - run
rails serverto start the site on your machine