Skip to content

withpulp/booklab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Booklab.me - Book recommendations that make sense

Needs

  • I'm tired of reading books that aren't relevant
  • I'd like to easily organize books I want to read
  • I want mentorship but I don't even know how to start

Demo here: booklab.meteor.com.

MVP

Note: This is still a work in progress.

Subscriptions

When I'm looking for a new book  
I want to find books from people I look up to  
So that I can be sure the book is relevant to my interests
When I'm looking for people I look up to  
I want to search for them by their full name, display name, email address, twitter contacts  
So that I can find them easily
When I find someone that I look up to  
I want to be able to follow them  
So that I can see their book recommendations appear in real-time

Book Wall

When a book is shared  
I would like it to include a title and author  
So I can do my own research on the book
When a book is shared  
I want to see a short description from the person who recommended it  
So I can see whether it is something I'd like
When a book is shared  
I would like to see the genre of the book and other books within that genre  
So I can see similar books that I may like
When a book is shared  
I would like a link to Amazon or other retailers  
So I can gauge other reviews and easily make a purchasing decision
When a book is shared  
I would like to see whether others said anything about it  
So I can get a better idea of what it's like

Reading List

When there are book recommendations I like  
I want to be able to add them a reading list  
So that I can have a list of future reads that's device-agnostic
When there are books in my reading list  
I want to be able to prioritize them as I wish  
So my reading list becomes more meaningful
When there are books in my reading list  
I want to be able to sort them by rating, genre, recommender  
So that I can make more sense of the books

Notifications

When a person I admire has posted a new book  
I want to be notified through email  
So that I can review their recommendations easily

Social

When a book is shared on my wall  
I would like to be able to chat with the recommender about that book  
So that I can have a productive, on-going conversation
When I've read a book that I like  
I would like to share it on my public wall  
So that my followers may have a chance to read it

Technical Outline

Collections

This is still a work in progress.

  • Books - users can post their books
    • title
    • author
    • genre
    • description
    • amazon/barnes noble link
    • userId(recommender)
    • username(recommender)
    • date(now)
    • userRating
    • commentsCount(0)
  • Relationships - users can subscribe to each other
    • userId(follower)
    • userId(leader/recommender)
  • Bookmarks - reading list for liked books
    • pull data from Books
    • date(now)
  • Comments - comments from users on books
  • Notifications - notify when leader/recommender posted a new book (email and via app)

How to use

Requirements

Make sure Meteor is installed and up to date or run:

curl https://install.meteor.com/ | sh

Installation

git clone [email protected]:amazingBastard/booklab.git
cd mtr-booklab
meteor

Deployments

It is highly recommended to use Meteor Up for easy deployments. Have a look at the repository for more information.

SEO and other concerns

Meteor cannot do SEO

This statement is only partially true, since there is a package called ms-seo, which has a lot of neat little tricks to help web crawlers notice your app the way you want them to. Use constants under client/lib/constants.js for the app. Change SEO settings inside the routes like that.

Router.route('/about', function () {
  this.render('about');
  // Using the app constants
  SEO.set({ title: 'About -' + Meteor.App.NAME, og: {...} });
});

Adding allow rules for external URLs

The browser-policy adds rules to deny all operations from external URLs. This helps dealing with clickjacking and other XSS methods used to attack the client. To whitelist a url, add following to server/config/security.js

BrowserPolicy.content.allowOriginForAll(YOUR_URL);

Other security enforcing packages like audit-argument-checks and matteodem:easy-security have also been added.

Structure

Packages used

The "insecure" and "autopublish" packages are removed by default (they make your app vulnerable).

Folder structure

client/ 				# Client folder
    compatibility/      # Libraries which create a global variable
    config/             # Configuration files (on the client)
	lib/                # Library files that get executed first
    startup/            # Javascript files on Meteor.startup()
    stylesheets         # LESS files
    modules/            # Meant for components, such as form and more(*)
	views/			    # Contains all views(*)
	    common/         # General purpose html templates
model/  				# Model files, for each Meteor.Collection(*)
private/                # Private files
public/                 # Public files
routes/                 # All routes(*)
server/					# Server folder
    fixtures/           # Meteor.Collection fixtures defined
    lib/                # Server side library folder
    publications/       # Collection publications(*)
    startup/            # On server startup
meteor-boilerplate		# Command line tool

(*) = the command line tool creates files in these folders

License

This project has a limited MIT License, see the LICENSE.txt for more information.

About

Book recommendations that make sense

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published