This app enables the user to create bookmarks and add tags to them. The user can search though bookmarks and sites, and filter by tags. The search feature matches tags as well as attributes on the bookmark/site. The part of searching that generates a SQL LIKE statement has been extracted into a concern at app/models/concerns/searchable.rb. This concern can be applied to any future model. Inside model.rb:
include Searchable
searchable_by :column1, :column2, :column3 … etc
This creates a scope on the model so you can call Model.search(query) which will generate SQL LIKE queries joined together by OR for each of the columns specified in searchable_by. It returns an ActiveRecord::Relation.
The app uses Ruby 2.0.0, Rails 4, SQLite3 in dev and PostGres in production. It is deployed on heroku and can be viewed at bookmarkio.herokuapp.com/
-
git clone github.com/bhaity/bookmarkio.git
-
cd bookmarkio/
-
bundle install
-
rake db:migrate
-
rake db:seed
-
rails s
gem ‘acts-as-taggable-on’ - provides tagging functionality for bookmarks
gem ‘metainspector’ - pulls metadata like title, description and keywords from the URL
gem ‘shorturl’ - uses TinyURL to shorten the URLS
gem ‘twitter-bootstrap-rails’ - for front end development, mainly layout, buttons and inputs
gem ‘public_suffix’ - used to grab the domain from the URL
gem ‘best_in_place’ - used to edit bookmarks and sites on the fly
imagesloaded.js - preloads images for masonry
masonry.js - nicely fits together bookmark partials of varying height
jquery.tokeninput.js - used for the tagging interface on the homepage
-
include the ability to add/edit tags on the show bookmark page.
-
create bookmarks using AJAX as soon as the URL is pasted.
-
suggest tags from the site’s metadata keywords before bookmark creation so the user can see and approve/edit them.
-
when searching sites by tag name, the bookmark count displayed in parenthesis should only show the number of bookmarks from that site that include the query tag.
-
improve tagging effiency by using a key/value store instead e.g. redis
-
fully responsive css
-
more comprehensive test suite