Skip to content

Sign up, and start adding the articles that you have read and want to remember!

License

Notifications You must be signed in to change notification settings

icyflame/cutouts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cutouts

Sign up, and start adding the articles that you have read and want to remember! Deployed here!

Build Status

You can find the Firefox companion add-on here

TOC

What?

  • Simple form with just two compulsary questions: Link and a Quote from the article that you want to remember
  • As simple as it can get. Nothing fancy. Vanilla bootstrap. Vanilla font awesome.
  • List public cutouts at profile page
  • Share a single cutout with friends and family by emailing it to them
  • Share a cutout on social media by copying it's permalink

Why?

The internet has a lot of good content, blog posts, articles, etc etc. I read a lot of stuff, and then could not find them again when I wanted to. Pocket is good for saving for later, Delicious and Pinterest are overkill for something as simple. Hence, this project!

Local Setup

Note: These steps were tested on a machine running Ubuntu 18.04 LTS.

  • Install rbenv
  • Install ruby version 2.7.0
  • Install bundler version 2.12.0
  • Run bundle install
  • [TEST] Run ./bin/rails --version
    • This ensures that you have the rails gem installed locally

Creating a local test user

  • Go to http://localhost:3000
  • Create a user using the Sign Up button
  • Now, you will be shown a prompt on the home page saying you must confirm your user by clicking the confirmation link in your email.
  • To do this process directly on the database, you can do:
    • Go into the rails console: zeus console
    • Get your user: User.all or User.first
    • Confirm your user: user.confirm
  • After confirming a user, you should be able to login to your account locally.

A log of the commands to run and their output:

irb(main):007:0> User.first
  User Load (0.5ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."id" ASC LIMIT 1
=> #<User id: 1, email: "a@example.com", username: "a1", created_at: "2019-09-14 04:29:01", updated_at: "2019-09-14 04:29:01">
irb(main):009:0> User.first.confirm
  User Load (0.5ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."id" ASC LIMIT 1
   (0.2ms)  begin transaction
  SQL (0.7ms)  UPDATE "users" SET "confirmed_at" = ?, "updated_at" = ? WHERE "users"."id" = ?  [["confirmed_at", "2019-09-14 04:32:42.534172"], ["updated_at", "2019-09-14 04:32:42.542307"], ["id", 1]]
   (6.1ms)  commit transaction
=> true

You can use this process to confirm all locally created users.

Manual Test Plan

  • sign-up
    • confirm a new user using: User.find(...).confirm
  • login and logout
  • login, add a public cutout, check that it is accessible without login, logout
  • login, add an unlisted cutout, check that it is accessible without login, logout
  • login, add a private cutout, ensure that it isn't accessibly without login, logout
  • edit an cutout's visibility and check if the changes are reflected

API Documentation

Check the routes file for the latest available routes

All responses are JSON formatted.

GET /api/v1/feed

  • Returns the list of top 20 articles from the public feed
  • Public
  • Auth not required
  • Rate limited

GET /api/v1/feed/:username

  • Returns the top 20 public articles of the given user
  • Public
  • Auth not required
  • Rate limited

Release Notes

v1.1 - 2019-12-28

  • Switch to Ruby 2.7, Rails 6.0 and the latest version of several gems
  • Switch Heroku's build pack from cedar-14 to heroku-18

v1.0 - 2018-02-07

  • Add, update, delete cutouts

  • Tag cutouts and then search the cutouts in a particular tag

  • List all the cutouts you have stored in the past

  • Export all your cutouts to UTF8 encoded HTML or JSON

  • Share the permalink for an article that has the title of the article, the quote, the author and it's tags

    img

  • Email a Cutout to friends and family (maximum 5 at once)

    img

  • Add an alias while emailing so that recipients know the cutout is from you

  • Display tags as Bootstrap buttons

    img

  • A link to the archives of the page that has the Cutout

  • A companion Firefox add-on to make it easier to Cutout articles from Firefox

TODO

In descending order of priority

  • Create a good homepage that has a few words about why this project at all
  • User must be able to login with both username as well as email
    • Override devise? (Devise procedure here seems extremely long)
  • Fix the word limit on quote (50 words?)
  • Fix the sign-in and sign-up form UI
  • Fix the horrible UI to make it usable at the very least (copy medium, that interface is too good!)
  • A system to tag articles (single words)
  • A system to search for articles (single search bar, user search, tag search, author search, quote search)
  • Ability for users to export their articles into a Markdown file for local storage (A JSON file for import too?)
  • A rating system for self, no sharing as yet
  • Probably friendship and the ability to follow other users

forthebadge

Code inside this repo is licensed under MIT.

Copyright (c) 2015-2019 Siddharth Kannan All Rights Reserved.