Git Product home page Git Product logo

gatekeeper's Introduction


Logo

Gatekeeper

A Ruby on Rails Subscription Manager Application
Explore the app »

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Roadmap
  4. License
  5. Contact
  6. Acknowledgments

About The Project

Gatekeeper is a subscription management service that allows you to store login information for online services. It has a number of useful features such as:

  • Encrypted storage of username and password information
  • Sharing of service entries between friends, family, and other groups
  • Scheduleable reminders to cancel, update, renew, and more.

For more info on the project, see our Final Report

(back to top)

Built With

(back to top)

Getting Started

To get a local copy up and running follow these steps.

Prerequisites

To start, install the following packages:

Installation

  1. Clone the repo
    git clone https://github.com/gatekeeper-tamu/gatekeeper.git
  2. Navigate to directory and install gems
    cd gatekeeper
    bundle install
  3. Setup environment variables
    • Create .env file in the root directory with the following:
      GOOGLE_CLIENT_ID="insert_google_client_id_here"
      GOOGLE_CLIENT_SECRET="insert_google_client_secret_here"
      AWS_ACCESS_KEY_ID="..."
      AWS_SECRET_ACCESS_KEY="..."
      KMS_KEY_ID="..."
      AWS_REGION="..."
  4. Create or set heroku project
    heroku create
  5. Setup the database
    • Make sure postgres is started and your user is created/has db access
      sudo service postgresql start
      sudo -u postgres createuser -s <your username> -P
    • Intitialize db
      rake db:setup
  6. Setup webpacker
    bundle exec rake webpacker:install
  7. Run the app:
    • To run locally:
      heroku local
      Navigate to localhost:5000 to see the app.
    • To deploy to heroku:
      • Export all environment variables from .env file
        heroku config:set ENVIRONMENT_VARIABLE="value_here"
      • Set git remote for heroku:
        heroku git:remote -a <your app name>
      • Push to heroku
        git push heroku master

(back to top)

Roadmap

  • User Login
  • Add/Remove/Update Subscription Entries
  • Share Subscriptions
  • Create Groups
  • Setup Cancellation/Renewal Reminders
  • Configure Group/Personal Settings
  • See Statistics on Monthly Costs/Usage Data
  • Explore Subscription Services and Deals
  • Send Temporary Account Access to Non-Users

See the open issues or the pivotal tracker for a full list of proposed features (and known issues).

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Rebecca McFadden - [email protected]

Project Link: https://github.com/gatekeeper-tamu/gatekeeper

(back to top)

Acknowledgments

TODO

(back to top)

gatekeeper's People

Contributors

coraenglish avatar gracenli avatar nikhithareddyv avatar rebeccamcfadden avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Forkers

shimada-toy-box

gatekeeper's Issues

[Groups Feature] - Group permissions

Description

As a group owner, I want to be able to set permissions for the subscriptions in my groups so that I can control which users have read/write permissions

Acceptance Criteria

  • Create permission types
  • Add permissions to memberships
  • Permissions in group form
  • Verify access control
  • Rspec tests
  • Cucumber tests

[Groups Feature] - Users can be added to Groups

Description

As a user, I want to be able to add/remove users to/from groups so that I can manage who can view shared subscriptions

Acceptance Criteria

  • Add users to groups button
  • Search for users
  • Remove user button with confirmation
  • Rspec tests
  • Cucumber tests

[Search Feature] - Use API to populate database

Description

As a developer, I want to populate a database with movie and TV show data so that I can show users what services have shows/movies they want to watch

Database should include:

  • Service
    • Name
    • Url
  • Movie/show
    • Title
    • Summary

Acceptance Criteria

  • Background service for API call #PR_ID_here
  • Data model for show/movie #PR_ID_here
  • Data model for services #PR_ID_here
  • Database populated/updates #PR_ID_here
  • Rspec tests
  • Cucumber tests

[UI Feature] - Restyle Sign up / Log in Pages

Description

As a user, I want to be able to have a better experience on the login and sign up pages

Acceptance Criteria

  • Make small UI changes
  • Condense Sign Up page
  • Restyle Google Button
  • Cucumber tests - fix any that are broken

[Groups Feature] - CRUD for Groups

Description

As a user, I want to be able to create/update/delete groups so that I can share passwords with my friends/family

Acceptance Criteria

  • #55
  • Proper routing
  • Rspec tests
  • Cucumber tests

API for service searching

User Story

As a developer, I would like to be able to pull data from an API for service searching so that I can populate the service search feature

Acceptance Criteria

  • Data model for show/movie
  • API call as a background task
  • Cucumber tests
  • Rspec unit tests

[Cleanup Feature] - Validate form data

Description

As a developer, I want to be able to make sure that user-entered data conforms to the expected values so that I can have a secure application

Acceptance Criteria

  • Form validation for user sign-up
  • Password validation (secure passwords)
  • Rspec tests
  • Cucumber tests

[User Feature] - Profile page

Description

As a user, I want to be able to view my profile so that I can view and update my own data

Acceptance Criteria

  • User can view/edit data on profile page
  • Rspec tests
  • Cucumber tests

[UI Feature] - Cleanup Group View Page

Description

As a user, I want to be able to view groups and their details in a clean format

Match UI to Figma mockups
Update Cucumber tests if any fail post UI change

Acceptance Criteria

  • UI for Group index page matches figma
  • UI for Group show page matches figma
  • Rspec tests
  • Update Cucumber tests

[Reminders Feature] - Clean UI

Description

As a user, I want to be able to create Reminders in a user-friendly way

Acceptance Criteria

  • Date picker for reminder date
  • Dropdown for recurrance (backend/actual scheduling not required)
  • Dropdown for reminder type
  • Edit/add message for email
  • OTHER??? FILL THIS IN
  • Rspec tests
  • Cucumber tests

[Groups Feature] - Subscriptions can be added to groups

Description

As a user, I want to be able to add subscriptions I own to my groups on the group view page

Acceptance Criteria

  • Users can add subscriptions to groups
  • Users can update access privileges for the shared subscriptions
  • Rspec tests
  • Cucumber tests

[Reminder Feature] - CRUD for Reminders

Description

As a user, I want to be able to add (a) date(s) to my subscriptions so that I can know when to cancel/renew my subscription

Acceptance Criteria

  • Reminder data model
  • user can add/remove/update a reminder entry
  • Rspec tests
  • Cucumber tests

[Groups Feature] - Subscription permissions

Description

As a user, I want to be able to set permissions for the subscriptions I add to groups so that I can control which groups have read/write permissions

Acceptance Criteria

  • Add permissions to shared subscriptions
  • Permissions in add subscription form
  • Verify access control
  • Rspec tests
  • Cucumber tests

[Statistics Feature] - Cost statistics

Description

As a user, I want to be able to view cost statistics so that I know how much I'm spending over periods of time

Acceptance Criteria

  • Cost time periods (monthly, yearly, all time)
  • Different chart views
  • Rspec tests
  • Cucumber tests

[Groups Feature] - Group Subscriptions on View Page

Description

As a user, I want to be able to view subscriptions that belong to my groups on the main view page

Acceptance Criteria

  • Users can see group subscriptions
  • Users can view/access group subscriptions based on access policy (read/write)
  • Rspec tests
  • Cucumber tests

[Users Feature] - Premium plan

Description

As a product owner, I want to be able to have premium users with more features so that I can charge more for premium service

Acceptance Criteria

  • Link to switch to premium on profile page
  • Group number cap for non-premium
  • Subscription number cap for non-premium
  • No limit on either for premium
  • Rspec tests
  • Cucumber tests

[Search Feature] - Search Page

Description

As a user, I want to be able to query the database of services and shows so that I can find platforms that have content I want or find alternatives to platforms I currently use

Acceptance Criteria

  • Search page mockup
  • Search page UI
  • search by title
  • Rspec tests
  • Cucumber tests

[Statistics Feature] - Statistics view page

Description

As a user, I want to be able to view statistics so that I can be more informed about my subscription usage/cost

Acceptance Criteria

  • Create subscription controller and page
  • Rspec tests
  • Cucumber tests

Profile functionality

As a developer, I need to be able to create user profiles and update user data

So that users can edit their personal data

[UI Feature] - User profile icons

Description

As a user, I want to be able to view my profile picture/gravatar

Acceptance Criteria

  • Update signup form to have file upload and store the image url
  • username on screen
  • Use user image URL as profile icon
    • Profile page
    • Upper right
    • Users in groups
    • Subscription owner
  • Rspec tests
  • Cucumber tests

[Cleanup Feature] - Rspec testing

Description

As a developer, I want to be able to verify functionality of my models/controllers

Acceptance Criteria

  • Rspec tests for all existing models
  • Rspec tests for all existing controllers

[Search Feature] - Statistics Page filter by service

Description

As a user, I want to be able to filter the statistics page using the API populated database records so that I can view the sitewide statistics in a more consumable manner

Acceptance Criteria

  • Statistics can be filtered by service
  • Rspec tests
  • Cucumber tests

[Statistics Feature] - Usage Statistics

Description

As a user, I want to be able to view usage statistics so that I know how much I'm using subscriptions over periods of time

So that I can know which subscriptions I/others use regularly and which are probably able to be cancelled
So that I can see how many times someone else has used my login and who has used it

Acceptance Criteria

  • Database is updated every time a user clicks on a subscription's view page
  • Same time durations as cost statistics
  • Different chart views
  • Rspec tests
  • Cucumber tests

UI Shells

As a developer, I want a barebones front-end to start development of features

User settings

As a user, I would like to be able to change my personal settings

So that i can update my password, personal data, or delete my account

[Bugfix] - Search page bad URI

Description

Bad string interpolation in URI generation
URI::InvalidURIError (bad URI(is not URI?): "https://watchmode.p.rapidapi.com/title/#<Search::ActiveRecord_Relation:0x00007f10f0a118e8>/sources/"):

image

Acceptance Criteria

  • Initial error is resolved
  • Rspec tests to ensure this function works properly

[Reminder Feature] - Send reminder email

Description

As a user, I want to be able to receive an email message when my subscription alert is up so that I can be reminded to cancel/renew/pay for my subscription

Acceptance Criteria

  • Reminder emails sent from Gatekeeper Gmail (should include link to gatekeeper page)
  • Rspec tests
  • Cucumber tests

[Sharing Feature] - Send email to recipient

Description

As a user, I want to be able to share a subscription with a friend through a one-time access page so that I can give access to my subscription for a limited time.

Link to the page with minimal information should be generated at a static address that and sent to the correct email

Acceptance Criteria

  • Email sent to recipient when temporary sharing is enabled
  • Rspec tests
  • Cucumber tests

[Statistics Feature] - Sitewide statistics

Description

As a user, I want to be able to view sitewide statistics so that I can see what other people are spending money on/using

Acceptance Criteria

  • Sitewide (global) view of same stats (anonymous)
  • Rspec tests
  • Cucumber tests

[Reminders Feature] - Subscription Reminders

Description

As a user, I want to be able to add a reminder to a subscription so that I can receive emails for my subscription important dates

Acceptance Criteria

  • Reminders are attached to subscriptions
  • Reminder types (billing, cancellation, OTHER)
  • CRUD works (TESTING)
  • Form for reminders is accessible on subscription page (embeded or otherwise)
  • Rspec tests
  • Cucumber tests

[Sharing Feature] - One-time Access Page

Description

As a user, I want to be able to share a subscription with a friend through a one-time access page so that I can give access to my subscription for a limited time.

A page with minimal information should be generated at a static address that can be sent as a link in the email to the intended recipient.
The page should display the username and password as well as the URL of the service. The non-auth navbar should be shown

Acceptance Criteria

  • Static page with subscription info, expires after given time period
  • Rspec tests
  • Cucumber tests

[UI Feature] - Clean Up Search Page

Description

As a developer, I want to be able to search for shows and movies so that users can view the networks they are available on in a clean format.

Acceptance Criteria

  • Clean up UI on search landing page
  • Restyle results on show page
  • Update Cucumber tests if any fail post UI change.

[Statistics Feature] - View group statistics

Description

As a user, I want to be able to view statistics about my groups so that I can understand what my group is paying for/using

Acceptance Criteria

  • Same cost/usage stats but for groups
  • Filter by user
  • Rspec tests
  • Cucumber tests

[Reminder Feature] - Recurring Reminders

Description

As a user, I want to be able to schedule recurring reminders for my subscriptions

Acceptance Criteria

  • Reminders will reschedule themselves before delete
  • Rspec tests
  • Cucumber tests

[UI Feature] - Landing Page Restyle

Description

As a user, I want to be able to have a better experience on the landing page

Acceptance Criteria

  • Add gates to landing page
  • Animate gates
  • Add gates to other pages as desired
  • Cucumber tests - fix any that are broken

[UI Feature] - Small changes across site

Description

As a developer, I want to be able to clean up small UI changes so that my users have a good experience on the site.

Acceptance Criteria

  • Group subscription card style updates
  • Fix row/col stacking for mobile devices
  • Tables scrolling on overflow
  • Cucumber and Rspec fixes

[UI Feature] - Reminders Restyle

Description

As a user, I want to be able to view a cleaner reminders page so that it looks like it fits with subscriptions

Acceptance Criteria

  • Make small UI changes
  • Align reminder UI with subscriptions
  • Cucumber tests - fix any that are broken

[Subscription Feature] - Add subscriptions to users

Description

As a user, I want to be able to create, view, edit, and delete my subscription entries

Acceptance Criteria

  • Data model for subscriptions #41
  • Encrypted passwords #41
  • View/edit subscription page #41 and #ADD UI
  • Launch subscription service url from Gatekeeper app
  • Attach subscriptions to users
  • View all subscriptions page
  • Rspec tests
  • Cucumber tests

[UI Feature] - Subscription Page Restyle

Description

As a user, I want to be able to have a better experience on the subscription pages

Acceptance Criteria

  • Make small UI changes
  • Align subscription UI with rest of site
  • Work in group sharing restyle
  • Cucumber tests - fix any that are broken

[UI Feature] - Temp Sharing Pages Restyle

Description

As a user, I want to be able to view a cleaner reminders page so that it looks like it fits with subscriptions

Acceptance Criteria

  • Make small UI changes
  • Align temp sharing UI with subscriptions and reminders
  • Cucumber tests - fix any that are broken

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.