Giter VIP home page Giter VIP logo

sourcestash's Introduction

Sourcestash

This project was generated with Angular CLI version 1.0.0.

Project Guidelines

These guidelines are for contributors to understand and navigate around the Board (added via ZenHub Extension).

Terminology Explanation

Github/Zenhub Term Agile Mapping Explanation
Issues User Stories The title of each issue is a user story: it is a high-level feature description that helps the developer focus on the business value of the product. The format of an issue's title is:
As a <usertype>, I want to <task> so that <goal>.
For example: As a student, I want to store a useful link quickly so that I can view it later or share it with my friends
Milestones Sprint This represents a fixed length of time during which all developers and designers agree to produce a certain chunk of work.
Epics Epics They are big user-stories (higher-level, more abstract issues) which focus on the big picture
Pipeline The columns in the Board (similar to Trello format), that shows the stages of each issue as it progresses through the development cycle

Development Commands

Development server

Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Code scaffolding

Run ng generate component component-name to generate a new component. You can also use ng generate directive/pipe/service/class/module.

Build

Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the -prod flag for a production build.

Running unit tests

Run ng test to execute the unit tests via Karma.

Running end-to-end tests

Run ng e2e to execute the end-to-end tests via Protractor. Before running the tests make sure you are serving the app via ng serve.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.

sourcestash's People

Contributors

angular-cli avatar jeremyng5352 avatar khoiphan21 avatar

Watchers

 avatar  avatar  avatar  avatar

sourcestash's Issues

Basic Creation and Update of Sources and Stashes

User Story

As a content-generator, I want to easily and intuitively create and update Sources and Stashes so that I can spend less time doing the creation and more time organising/using the resources

Search bar UI for every page

User story

As a user, I want to access the search function on every page so that I can search things up quickly

Tasks

  • Design a search bar for the header
  • Implement search bar on the website in HTML/CSS.
  • Ensure search bar is able to find items with the appropriate tag/title from the SourceStash database.

Source Drag & Drop - 1

User Story

As a USER, I want to MOVE THE SOURCES AROUND THE STASH TO ORGANIZE THEM

Task

Rendering

  • Find out how to render a component/element relative to another, based on a value passed by .ts file
  • Creating paths between two components

Integration with Service

  • Call method to retrieve child sources

Authorization for the Application Server

User Story

As a signed up user, I want the server to protect my resources so that no one else can access my protected resources

Tasks

  • Authorization on server-side useing Passport for Express.js, and JWT Strategy from Passport

Adding Tags to a source

  • Users can either choose from a list of tags already existing in the stash, or create a new one
  • As user types into the tags input space, the list will appear and be filtered by what the user typed in.

Awesome Search and Filter System

User Story

As a regular user, I want to type in keywords into the search bar so that all the relevant sources and stashes will appear in the search result

Client-Database communication to create and store Stashes

User Story

As a user, I want to create a stash to store the relevant sources in it

Tasks

(DATABASE) create a table to store the stashes, and each stash must have:

  • its own id, title, and description
  • id of the author

(ANGULAR) Create an Angular Service to support contact to the database

Stash Creation:

  • Let a user create a stash
  • Let a user delete a stash

Stash Retrieval

  • Whenever a user tries to submit, check if the email has been registered
  • send a request to the server, passing in a stash id for the server to retrieve the information of that stash
  • retrieve all the stashes for a given user

Database to store user information

User Story

As a new user, I want to create a new account with email and password, so that I can start storing stashes and view them

Tasks

  • Create Google Cloud SQL MySQL server to host information
  • Create a node.js server that can connect to the Cloud SQL instance
  • Setup a phpmyadmin server in the project to manage MySQL server
  • (DATABASE) table to store user information: email, password, first name, last name and id (initially created from email)
  • A frame for AccountService that handles connecting to the server for authentication
  • Established connection between the AccountService-Application Server
  • Established connection between the Application Server and the Cloud MySQL database

Update User Account

User Story

As a registered user, I want to update my personal information to make my experience of the app feel more personal

Tasks

  • AccountService to update the account based on the given parameters
  • Change the create account method to create based on email and password only

Finalize Popup for adding & editing a source

User story

As a content-generator, I want to see a modern and intuitive UI when I'm adding a source so that I can quickly add sources and immediately see if it is successful or not.

  • Design the final version
    • Content similar to "Add source" popup that is already coded
    • "Delete" button
    • Reviewed by Hayden
    • Reviewed by Khoi

Database design for storing advanced Sources' information

User Story

As a user contributing to a stash, I want to move the sources around the stash so that I can organize them

Tasks

  • [ALGORITHM] design a way for stashes to be displayed in the user interface
  • update the database table for sources information
  • Work with Jeremy to implement the new system into the real UI

Content adding for welcome page

user story

As a user, I would like to see an introduction of the website in the first page I entered

task

  • [] filling in the complete content into welcome page

Features for Collaboration

User Story

As an experienced user, I want to collaborate with others so that I can build up my stash with sources more quickly.

Source and Stash popup page interface coding

User Story

As a user, I want to store a source in my stash so that I can organize it and view it later

Task

Source and Stash generation interface

  • Interface for a creating stash
  • Interface for a creating source
  • Basic popup for viewing a source

Creating, Updating and Retrieving a source

User Story

As a user, I want to add a new source to my stash so that I can access it later and other people can vote it up if they find it useful

Tasks

Database design

Constraint: a new source needs to be attached to an existing source to be added

  • (DATABASE) a source must have: an id, the id of the stash it belongs to, a link to the content, a title and a brief description, and a 'level' tag: 'root', 'topic' or 'source', a 'difficulty' tag, x-position, y-position (relative to the parent source)
  • (DATABASE) a table to store a source's child source ids
  • (DATABASE) a table to store the list of tags and the array of sources linked to each tag

Angular 2 SourceService design

This service should have methods to:

  • call the server, passing in the id of a stash to retrieve all sources belonging to it and return that to the component
  • send a request to the server to add a new source, and return the source with an id attached
    • Add a new source to source_basic_info
    • Update the tags table
    • Update the child-source table

Basic AccountService to handle Account Creation and Login

User Story

As a new user, I want to see if my details are valid while creating a new account so that I can fix any typo mistakes, or input mistakes that I may have made, and so can create an account faster

Tasks

AccountService to handle these tasks:

Account Creation

  • (Angular) Send registration details to server
  • (Angular) Display a message if the registration is unsuccessful
  • (AppServer) query database for availability of an email address
  • (AppServer) query database for password of a user to check
  • Added some basic tests for the Service

Log in

  • (Angular) send email and password to server for confirmation
  • (AppServer) query database for username and password, then authenticate the user
  • (Functionality) The page can 'log in' with a username and password now

Form Validation

  • Implement code to check with the Application Server (when user finished typing the email) to see if the email address as id is available
  • send back the reply to the Component for the component to display an error if there is one
    Application Server features needed:
  • receive a 'email check' request, check with the database if the email is available, then return the status code

SOURCE rank filtering

User story

As a user, I want to view the sources in the sidebar, sorted by rank so that I can filter through information

Tasks

  • creating a filter for source based on rank

Filtering Sources in a Stash by keywords

User Story

As a user, I want to FILTER THE SOURCES ON THE SIDE BAR so that ONLY THE SOURCES WITH THE RELEVANT TITLE WILL APPEAR

Task

FILTERING system in the STASH PAGE

Rework the designs, starting with Wireframes

Page and functionality mockups must be refined for website implementation.

Tasks

  • Wireframe for Welcome page

  • Wireframe for 'create an account' page

  • Wireframe Stashes Page

  • Wireframe for Home Page

  • Wireframe for Profile Page

  • Updates

    • Sidebar on the Stash Page
    • Wireframe log in. Remove sign up and perfect log in with Google.
    • Finalise Stash Editor and Source editor.

Criteria

  • Done when all members have agreed to the final wireframe layout

Tagging System for Sources

(CONSTRAINT) Make a constraint: when user creates a new source, they HAVE TO have AT LEAST one tag

  • Users can either choose from a list of tags already existing in the stash, or create a new one
  • As user types into the tags input space, the list will appear and be filtered by what the user typed in.

SEARCH BAR feature coding

User Story

As a USER, I want to SEARCH TO RELEVANT STASHES

Task

[ ] Search through labels
[ ] Search through titles of stashes and stashes
[ ] Display sources and stashes separately, but still linked to one another

Database Service for Adding Collaborators

User Story

As a stash owner, I want to add someone else as a collaborator so that they can make changes to the stash I own

Tasks

  • Table with stash id as primary key, and user ids as collaborator's ids
  • Application Server with method to update the list of collaborators in the database
    • Update the list of collaborators for a stash (handles both adding and removing)
    • API to retrieve all collaborators for a stash

SOURCE VOTING

User Story

As a USER, I want to UPVOTE A SOURCE THAT I THINK IS USEFUL AND RELEVANT

Task

Create a VOTING feature

DIFFENTIATED SOURCE in STASH PAGE interface coding

User Story

As a user looking for relevant sources, I want to see the higher ranked sources bigger than the others

Task

  • Create a size differentiating system depends on the rank in the STASH PAGE
  • sync with the database to find out the rank of the stash

Logo Design & Stash Creation UI

User story

As a user, I want to see a well designed brand so that I can know the website is a reliable tool

Tasks

Logo

  • Create some rough ideas of the SourceStash logo.
  • Pick best idea and refine the design.
  • Create different variations of logo in Illustrator so it can be used in spaces that vary in size.

Basic dodgy logout feature

User Story

As a logged in user, I want to be able to logout from any page

Task

Creating a logout feature for logged in user

UI for Adding Collaborators

User Story

As a stash owner, I want to add someone else as a collaborator so that they can make changes to the stash I own

Tasks

  • put an estimate to this issue
  • 'Add Collaborator' button in a Stash's UI
  • Design the popup for 'Add Collaborator' feature

stash details in Profile Page

User Story

As a user, I want to display my created stashes on my public profile

Task

Displaying personal stash in profile

STASH interface coding

User Story

As a USER, i want to CREATE A STASH

Task

  • Creating the basic stash interface based on the mockup/wireframe

Sources Drag & Drop - 2

User Story

As a USER, I want to MOVE THE SOURCES AROUND THE STASH TO ORGANIZE THEM

Task

Updating

  • Find out: drag and drop a component, and update the position values of the [model]. Idea: at startdrag, record initial position; at enddrag, record final position. Update x-position value by enddrag.x - startdrag.x (or something like that)

Integration with Service

  • Call update method when child source changes position
  • Find the 'relative' position of the source
  • Service updates the database on the new position of the source

Social Login with Google

User Story

As a new user, I want to create an account and login with two clicks, given that **I have logged in to my google account.

Tasks

  • Authentication: Oauth for Google+ on server side
    • Server can connect to Google OAuth2 API
    • Angular App can connect to Google OAuth2 APi
    • Angular App can retrieve the user's Google etag
    • Angular App can log a user in after logged in with Google
  • Server login for "Google Login" api
  • Storing new user information based on "Google signup" api

Login Page Interface Coding

User Story

As a user, I want the login page to be user friendly and simple, so that it is easy accessed

Task

  • finish coding the interface for login page

Collaborate

#3 auto login system
#5 logout system

Professional Design for Login/Sign up page

User Story

As a new user, I want to view a modern and professional design of the welcome page so that I am interested in reading more about SourceStash

Tasks

  • First Version (Hayden)
  • Second Version (Khoi)
    • Reviewed by Hayden
    • Reviewed by Jeremy

Difficulty Tag System

User Story

As a user looking for learning resources, I want to see the difficulty level of each source so that I know which one is appropriate for my level

Tasks

  • expand more on this idea

Intuitive Profile Design

User story

As a user, I want to view my profile more intuitively so that I can easily find my stashes, favourites and sources; also need to be able to edit my account info

Tasks

  • Refine profile design from the mockups.
    • Get user info (stashes, sources, favourites) from database to load on profile.
    • Load and display account info (including display picture) on profile.
    • Ensure account info is editable by user from this page. # #

Basic Login Page Interface

User story

As a user, I want to see a log-in/create account page interface so that I can easily sign in to access my account, or create a new account

Tasks

  • Design mockup for a log in page.

Home/Welcome Page

User Story

As a new user, I want to see a nicely designed home page so that I will understand what SourceStash is about within a small amount of time

Angular UI & Service for Adding Collaborators

User Story

As a stash owner, I want to add someone else as a collaborator so that they can make changes to the stash I own

Tasks

  • Design this service
    • View the list of current collaborators
    • Adding a new Collaborator
    • Remove a Collaborator
  • Test this service (NEED MORE DETAILS)
    • Test getting shared stashes
    • Test retrieving collaborators
    • Test adding new collaborator
    • Test updating list of collaborator
    • Test deleting a collaborator
  • UI for adding collaborators
    • New section inside 'Edit stash'
    • Showing a list of collaborators + 'delete' button
    • With new section to add a new collaborator
  • (UI stuff)
    • When the user logged in, retrieve all collaborating stashes as well
    • Show the list of collaborators in stash page
    • Display 'owned' and 'shared with me' stashes differently

Organising Sources in a Stash

User Story

As a collaborator/stash owner, I want to drag and drop the sources around so that I can organize them in a more meaningful way

auto login system

User Story

As a user, I want the app to automatically log in the second time if i tell it to do so

Task

  • creating a auto login system when the user try to log in the 2nd time

Profile Page Interface Coding

User Story

As a user, I want to display personal information o my public profile

Task

  • finish coding the interface for profile page
  • Link to the AccountService

Welcome Page interface coding

User Story

As a user, I want to see an Impressive interface when I first accessing this website
As a user, I want to understand what sourcestash do before I start using it

Task

  • Code the interface for welcome page as soon as the Mock up is ready

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.