GithubHelp home page GithubHelp logo

simongt / not-pocket Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 28.65 MB

A content-aggregation and discovery platform that lets users manage collections of saved online articles.

Home Page: https://notpocket.herokuapp.com/

JavaScript 80.51% Shell 2.23% HTML 7.13% CSS 10.13%

not-pocket's Introduction

!Pocket (Not Pocket)

!Pocket was first conceived by Simon Tsegay, Yaakov David, Darrell DeCosta and Eryl Murphy in the summer of 2018 amidst a week-long code sprint, when they sought a more aesthetically accessible version of Google Bookmarks, while also being inspired by Pinterest and especially Pocket in particular.

Getting Started

Installation Instructions

  1. Install dependencies from root directory of project: npm install
  2. Launch Node server: npm start
  3. Launch Express server: nodemon server.js

In a Nut-Shell

!Pocket is a full-stack, CRUD application that allows users to manage articles found on the Internet.

Features

A registered user enters a URL for an article, then the article is scraped and formatted to display as a card.

An unregistered user can view cards on the !Pocket homepage. To create their own stash of cards, they must register. Once registered/logged in, they are permitted to create cards by submitting a URL into a form.

Registered users are then given the option of storing a card privately, or publicly. If they chose public, the card will be displayed both on their personal page and on the !Pocket homepage. Cards stored privately are only displayed on the user's personal page.

Cards can also be deleted, but only on the user's personal page.

Screenshots

Home

Imgur Image

Add

Imgur Image


Design Process

User Stories

As an avid consumer of web content, I want to easily access and manage articles I have selected to read in my own time.

As a curious individual, I want to see trending articles.

As a member of the online community, I want to share articles that will be of interest to others.

Wireframes

Home

Home

Home with sidebar

Home with sidebar

Add a card (personal page)

Add a card

Personal page

Personal page


Implementation

Tech Stack

  • Built with React.js.
  • CRUD functionality.
  • Posgres and Express API.
  • Unit tests written in Jest.
  • NPM package breakdown:
    • Bcrypt for user authorization.
    • Express-Session.
    • Open-Graph - when given a URL open-graph provides the open graph meta properties scraped from that URL.
    • Helmet - sets HTTP headers, preventing unintended elements from being included in our page, e.g. frames, images, tracking scripts, etc.

Challenges

  • Scraping cards from URLs.
  • Manipulating the sidebar.
  • Tags.

Project Workflow

Trello Board

Trello Board


Back-End Design

ERDs

The database features the tables users, stash, tags, and stash_tags.

Stash refers to the individual cards that host a URL. Not all tables were used. Tags were not realized upon project delivery, but the team intends to revisit this.

Sample schema

Imgur Image

Two models: Users + Stash.

Users

Imgur Image

Tags

Imgur Image

Tag groups

Imgur Image

Stash

Imgur Image


Backlog

Future Endeavors

  • Implement tags.
  • Embed videos.
  • Resolve why certain links cannot be scraped.
  • Implement a friends feature, so a user can give permission to another user to view their personal page.

not-pocket's People

Contributors

drldcsta avatar erylmurphy avatar simongt avatar yaakovdavid avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.