GithubHelp home page GithubHelp logo

situo's Introduction

situo

Situo is a clone of the popular team project management and productivity suite, Asana. Users can add projects, add tasks. Update projects and tasks and mark tasks as complete. Other features are in development! Live Site

Technologies

  • React/Redux
  • Ruby on Rails
  • PostgreSQL
  • Javascript
  • JQuery (ajax)
  • Heroku
  • CSS
  • Webpack

Design Docs

Task Completion

Task Gif

Task Update Functionality

Tasks update and disappear from relevant pages on click through a combination of filtering, status updating and style changes. These changes are set up on component pages.

updateStatus() {
    (this.state.status === 'not-started') ? this.setState({ status: 'started' }, () => this.props.updateTask(this.state)) :
      (this.state.status === 'started') ? this.setState({ status: 'complete' }, () => this.props.updateTask(this.state)) : this.setState({ status: 'not-started' }, () => this.props.updateTask(this.state))
  }
  updateStatusField() {
    this.updateStatus();
  }
  render () {
    return (
    <li className="task_index_item">
        <button className="check_mark_button col_1" onClick={this.updateStatusField}>

          {
            ((this.props.task.status === 'not-started')) ?
              <svg className="check_mark_small not-started" focusable="false" viewBox="0 0 32 32">
              </svg>
              : ((this.props.task.status === 'started')) ?
                <svg className="check_mark_small started" focusable="false" viewBox="0 0 32 32">
                </svg>
                :
                <svg className="check_mark_small complete" focusable="false" viewBox="0 0 32 32">
                </svg>

          }
        </button>
class TaskIndex extends React.Component {
    constructor(props) {
        super(props)
    }
    componentDidMount() {
        this.props.fetchTasks(); 
    }
    render() {   
        const userTasks = this.props.tasks.filter(task => (task.owner_id === this.props.id ));
        const incompleteTasks = userTasks.filter(task => (task.status !== 'complete'));
        const { tasks, deleteTask, updateTask} = this.props;
        return ( 
                <ul className='home_task_list'>
                    {
                        incompleteTasks.map(task => (
                            <TaskIndexItem
                            task={task}
                            deleteTask={deleteTask}
                            updateTask={updateTask}
                            key={task.id}
                            />
                            ))                    
                        }
                </ul>
        )
    }
}
export default TaskIndex;   

Project Creation & Modal Updating

Project creation and modal updating, with style! Project Gif

Shuffle Color!

Never look at the same page twice. Home icons shuffle colors to create a fun interface!

class ProjectIndexItem extends React.Component {
  constructor(props) {
    
    super(props)
  }
  render () {
    var arr = ['tile_card blue_card', 'tile_card purple_card', 'tile_card red_card', 'tile_card pink_card'];
    var idx = Math.floor(Math.random() * arr.length);
    const color = arr[idx]
    return ( 
      <Link to={`/tasklist/project/${this.props.project.id}`} >
      <div className="tile_container">  
      <div className="tile_structure">
        <div className={color}>
      
            <svg viewBox="-14 -14 50 50"className="multi_color_icon"   title="board" services="[object Object]"></svg>
              <div id="lui_87" className="icon_button" tabIndex="0" role="button" aria-disabled="false" aria-pressed="false"></div></div>
      </div>
        <div className="tile_title">{this.props.project.project_name}</div>
      </div>
    </Link >
    )
  }
}
  


export default ProjectIndexItem;

Roadmap

  • Task creation modal with task assignment & task comments.
  • Calendar for tasks and project lists.
  • User profile photos and update modal
  • Drag & Drop task list

situo's People

Contributors

mufasubhai avatar

Stargazers

Umar Abdulmalik avatar Kibiwot  avatar Anna Paschall avatar Shanelle Valencia avatar

Watchers

 avatar

Forkers

umaremlyn

situo's Issues

Design Docs

Wiki Page Home

  • Is the first page you see upon entering the wiki
  • Contains a welcome message
  • Contains a link/placeholder for a link to the live page
  • All links in the right sidebar should contain each wiki page and link to the correct page
  • Correctly formatted
    • each wiki page is listed in bullet points
    • all links route the correct page

Comments


MVP List

  • Should have 7 MVPs.
    • 3 of those are User Auth, Heroku, and Production README.
    • The other 4 are from the MVP List or they have clarified them with you
  • Contains a description sentence of the app
  • Includes two to three detailed bullets on functionality and presentation of feature
  • At least one CRUD feature, which states what CRUD operations are planned (creation, reading, updating, deletion)
  • Estimates how long it will take the code each MVP
  • Correctly formatted
    • MVPs are listed in an ordered list
    • Each MVP is broken down into bullet points

Comments

  • Lets make Task Comments a bonus. So, move it below the README mvp and remove the numbering. It should now say Bonus: Task Comments instead.

Database Schema

  • Contains correct datatypes
  • Contains appropriate constraints/details
    • primary key
    • not null
    • unique
    • indexed
    • foreign key
  • Contains bullet points after the table that state which foreign keys will reference to which table, or references to the associations which will be made
    • foreign key and table name are lowercased, snake_cased and back_ticked
  • Correctly formatted
    • schema is written in a table format
    • the table's name are lowercased, snake_cased and back_ticked
    • the table header column names are bolded
    • columns names are lowercased and snaked_cased and back_ticked

Comments


Sample State

  • State shape is flat!
  • State's keys are camelCased
  • All keys within the values in the state are accessible in the schema
  • Correctly formatted
    • Sample state is rendered with triple backticks, and the language ```javascript...```). This will display the state as a code block instead of a giant line of text
    • Top level slices
      • entities
      • session
      • errors (here or in ui)
      • ui (if needed)
    • Should NOT have nested slices, aka comments inside of posts
      • Some info from other tables is ok, for instance:
        • the author username and imageurl for a post. basically any info that the user can't change
        • like count and a boolean on whether the user likes the post instead of a likes slice

Comments

  • remove passwordDigest from state shape - we will only need this on the backend so we don't want to store it in frontend state

Backend Routes

  • Contains the following sections: HTML, API Endpoints(Backend)
  • Each route has a description
  • API Endpoint routes contains wildcard variables written in snake_case
  • Routes does not contain superfluous routes
  • Have API routes that will allow the front end to get all info it needs and does not have unneeded routes:
    • probably doesn't need a GET likes api endpoint because that info comes through the post show

Comments


Frontend Routes

  • Frontend routes contains wildcard variables written in camelCase
  • Correctly formatted
    • Routes are displayed with inline coding text (backticks)

Comments

  • don't need to include SideNavContainer and TopNavContainer for each route. at the top of the design doc you show that those two will be rendered along with whatever the main component is ((main component goes here)) so let's remove those from the bullets for each route

User auth review

Due to the standard flow on Asana, I decided to do a slightly modified login flow.

as a result, the root page renders a clone of this page. Sign up and Log in are clones of this page

The site can be found here.

User Auth

Functionality

  • The main button with logo should link to /
  • Has working demo login
  • Smooth, bug free navigation

Before Login

  • The /login page should not display a link to Log In. Same for /signup
  • Going to a random route /#/oweiniouewbrviuwebv should redirect or display a 404 page
  • Errors should display for both /signup and /login.
  • Errors should clear when moving between /signup and /login.
  • Can sign up a user
  • Can sign in as a user
  • Can log out a user
  • Can't sign up with the same username/email
  • Pressing enter after filling out the session form should use the form data, not the demo user

After Login

  • Should not be able to visit /login or /signup
  • Should be able to refresh the page and still be logged in

Style

  • The site should look exactly like the actual site
  • All relevant elements should have cursor: pointer on hover
  • When errors are displayed, most elements should not move around the page (particularly input boxes)
  • Remove Redux logger and all console.log()'s from production

Seeds

  • Adequate and appropriate seeds (currently the only seeds are for demo login & additional users who will be built out later)

Project CRUD & Styling

Project Backend

  • Backend: DB, model, controller, views
  • Redux Loop: ajax, actions, reducer
  • Presentational Components and Containers (** there are some components that are yet to be built but have files)

Styling

  • styling on /home page
  • Modal styling on Project page (down arrow dropdown)
  • Top bar styling on Project page
  • styling on new project page (accessible from new project link on bottom of home page)

Functionality

  • Smooth, bug-free navigation
  • Adequate and appropriate seeds
  • navigation feels appropriate/intuitive

Task CRUD & styling

Project Backend

  • Backend: DB, model, controller, views
  • Redux Loop: ajax, actions, reducer
  • Presentational Components and Containers

Styling

  • styling on user list page (navigate by clicking "my tasks" in side nav.
  • styling on project page (navigate by clicking on any project from the home page)
  • improved styling on user page

Functionality

  • Smooth, bug-free navigation
  • Functional creation and destruction of tasks.
  • Adequate and appropriate seeds
  • navigation feels appropriate/intuitive

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.