Giter VIP home page Giter VIP logo

tyto's Introduction

Build Status tyto alt tag

tyto is an extensible and customizable management and organisation tool

just visit jh3y.github.io/tyto!

alt tag

Features

  • minimal UI
  • no accounts necessary
  • intuitive
  • extensible
  • localStorage persistence
  • time tracking
  • sortable UI
  • task linking
  • Markdown support
  • etc.

alt tag

Why tyto? What's it for?

Tyto arose from the want for an electronic post-it board without the need for accounts. Something simple and intuitive that could be easily shared.

It's also the product of my own curiosity being used as an opportunity to pick up new tech stacks. It started as a vanilla JS app utilising one file and experimenting with HTML5 drag and drop. It then grew a little more, and a little more after that. Now it uses Backbone w/ Marionette. The next step? Most likely Angular 2.0 or React.

alt tag

In truth, most organisations have some form of tool for what Tyto is doing. In my experience though, they can be cumbersome, clunky and just a bit noisy. Some employees tend to dislike internal tools. You still see whiteboards and walls plastered in sticky notes.

This is where Tyto came from, It's my personal intuitive and minimal TodoMVC. No accounts necessary and the source isn't too hard to grasp making it rather easy to extend and customise.

alt tag

Who's it for?

Developer and project managers were the original target audience. A means to share project progression on a more personal level. As opposed to publicly through an internal system. Almost like a complimentary attachment to an email.

alt tag

There are no restrictions though, it's open source. Not quite right out of the box? Change it ๐Ÿ˜„

Extensibility provides a means to create a bespoke version based on theme or functionality.

Tyto is a personal pet of mine and if it can help others, that's great!

###Using tyto Just want to use it? Do that by visiting jh3y.github.io/tyto.

GitHub flavored markdown is supported thanks to marked.

alt tag

This also enables you to link to boards, columns and other tasks by using the # character

alt tag

Changes are persistent thanks to localStorage.

Want to move to a different browser or machine though? Use the export utility to export a json file. Load this using the import utility.

A persistent workflow across devices? I'm afraid I haven't implemented that. Accounts is not something I am keen on implementing/hosting right now. I think it diverts from my original intention with Tyto.

Your own environment

Prerequisites

If you're cloning the repo and setting up the codebase you are going to need node(preferably yarn) and gulp installed.

Set up
  1. Clone the repo.

     git clone https://github.com/jh3y/tyto.git
    
  2. Navigate into the repo and install the dependencies.

     cd tyto
     yarn (alternatively, npm install)
    
  3. Run gulp to take care of preprocessing and running a local static server instance(project utilises BrowserSync).

     gulp
    

Hosting

I would suggest just taking a snapshot of the gh-pages branch and ftp'ing this onto your desired server or web space. Alternatively, follow the set up procedure and FTP the contents of the public directory.

If you wish to host on Github. Follow the set up procedure first(ideally, with a fork). When happy with your version, use the deploy task. This will require familiarity with gulp-gh-pages in order to publish to the correct location if other than gh-pages.

alt tag

Development

A strength of tyto is extensibility. Making changes whether it be functional or aesthetic is straightforward once familiar with the codebase.

Any queries as to how things work in the codebase? Feel free to raise an issue with a question!

alt tag

####Under the hood There are a range of technologies being used under the hood.

  • jQuery
  • jQuery UI
  • Material Design Lite
  • Lodash
  • Backbone
  • Marionette
  • Marked
  • Jade
  • Stylus
  • Babel
  • Gulp

alt tag

License

MIT


Made with โœจ @jh3y 2017

tyto's People

Contributors

dcodesmith avatar dustywusty avatar jh3y avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tyto's Issues

Add a UI help overlay instead of using a descriptive modal.

For a future feature introduce some form of overlay UI tutorial like that seen when using something like Gmail, or Google+ when a new feature has been added.

This could be shown by default and then using a checkbox disable for next load.

Would suggest this is low priority and that something like this should be implemented after local storage feature has been added.

@jh3y

Max columns

A maximum number of columns should be able to be created. If you hit "Add Column" for a minute, you'll see the items are no longer readable.

add mobile support for touch gestures

Look at using something like hammer.js to implement touch gestures for all events like dragging cards and entering edit mode etc.

This will also require a responsive redesign of the app.

@jh3y

Bug: Undo move column

When undoing moving a column, when dragged from the right to the left, the undo will put the column back one less column to the right than where it was meant to be.

@jh3y

embedding images

Hi Jhey,
I'm trying to add an image to a task using this markdown syntax:

![google]
 (http://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png)

is it supposed to work?

possible column interactions

The possibility to probably have some sort of 'edit mode' for columns and the ability to also drag columns also.

This could do with some discussion and experimentation as not too sure how intuitive it will feel to have this.

@jh3y

Improvements

  • Move away from .coffee to es6
  • Improve set up steps
  • Add escape key listener to edit mode
  • Cancel creation takes you back to root
  • Crush load/import bugs

@jh3y

Board not available in other browser

After adding a new board in one browser (firefox for example), it's not possible to copy its URL (http://example.com/tyto/public/#board/39081cf8-aaed-9cdc-0061-ce37373d9136) and open it in another browser (safari or chrome for example). The URL does not exist, instead I reach the location http://141.22.194.205/tyto/public/# where I can add an new board; choosing the old board is not available. I installed tyto on two different servers, the issue occurs in every case.

Setup Problem

The Setup Procedure:

git clone https://github.com/jh3y/tyto.git
cd tyto
npm install
bower install
gulp

does not work anymore.

If I got it right, "bower" was removed.

But besides that there seems to be something else missing now

"view.ui.columnContainer.sortable is not a function"
"view.ui.taskContainer.sortable is not a function"
[...]

Suggestions Feature

I stumbled over the suggestions feature when I went through the code and still wonder if it actually should work already and how? If I read correctly it is (only) activated by pressing "End" Button.

Doing that in Firefox opens the suggestions box for half a second, keeping it pressed works for a moment longer but then it begins to flicker (fast toggle), pressing it rapidly eventually yields the suggestion box staying open (what I think is the inteded way).

  1. I think the bug is somehow related to key press/keydown etc events and probably some race conditions....

  2. Add the Suggestions feature to the doc: that it exists and how to activate it.

MongoDB option

Had an email out of the blue earlier today about installing tyto onto a Debian machine and using from different locations but hoped for some kind of database connections.

Proposal is to allow user to install MongoDB on their own accord but add a flag to the config which will allow the user to set whether using DB. If so set up a local database on the machine being built on.

In addition to this, add testing for new server requests using sinon for AJAX stubbing.

@jh3y

on chrome, when tyto flaps, the board width jumps

This is because chrome doesn't handle the css transform as nicely as firefox and is therefore increasing the width of the page.

As the board has a responsive width, it make the jump. it may be an idea to possibly revert to winged tyto image but then we lack the little animation feature.

@jhey

inform users about enabling cookies

Some users have expressed that without cookies enabled tyto simply didn't work.

Maybe provide a cookies message on startup that can be switched on and off when necessary.

@jh3y

Mobile view

Brain wave whilst doing something else, but thought of a way to create a not half bad mobile view which should work nicely with what is there.

  • Singular columns preventing default action on current move drag.
  • Hiding all columns but introducing a dropdown filter and then having one scrollable columns with tabbed actions.

@jh3y

Embedded images render larger than container

Issue summary

If an <img> tag is embedded using markdown and the image is larger than the container, it will simply render larger than the container.

Expected behavior

It should have a maximum width of the container.

Browser used

Chrome.

Steps to reproduce

Add any large image to a task.

Solution

.tyto-task__description img {
  max-width: 100%;
}

UI design improvement: the menu

This is a sub issue of issue #14 concerned with the menu actions placement.

Move the menu items into the header to the left of the logo.

We can still hide some of the actions by using the widely adopted gear icon approach.

Make sure though that both name of action and icon exist or just the name but NOT just the icon as this supposedly has caused quite a stir on other projects.

@jh3y

changing drag and drop functionality implementation to use jQuery instead

There have been support issues with using HTML5 drag and drop and also some bugs that have come up, namely issue #9.

Changing the implementation to use something like jQuery sortable and portlets would not only handle the support side of things but also handle the bug of being able to rearrange cards in a column easier.

@jh3y

add 'undo' action

Add the ability to undo an action.

According to feedback on HN, just make it possible to undo the very last action that was made.

This could mean having a property to save a DOM element if say something is edited or added, deleted so that we can keep a record of the state pre action.

@jh3y

Enable (easier) manual sorting in collumn

What I want to do: I created several items and wanted to change their order within the column.
What happened:* I was able to sort the notes, except for the first and the last one which were rather persistent at their places
What should happen: It should be easy to change the order of items no matter where they are in the column. Ideally, there would be an indicator showing the new position of an item if it would be dropped in the current moment.

Mock up mobile UI for viewing

Think about the fact that you can only see one column at a time. Maybe a dialog or dropdown that can click and it asks which column you want it to be moved to?

@jh3y

Setting an empty title yields it uneditable

Setting an empty title yields it uneditable for inplace editing
Applies for columns and tasks.
(However, tasks can still be titled again by using the edit interface and "guessing" where the titlebox is)

Add action to wipe board completely.

Add action to wipe board completely, this must have an undo action attached to it. If not fire alert that informs user that it can not be undone.

The white pane doesn't grow with it's content

The white content pane doesn't grow when you add items to it, which cause a scroll bar to appear inside the box, instead for the entire page. It would be more convenient/accessible when you grow the box and make the entire page scroll.

Time tracking on tasks?

Ability to track time spent on tasks.

Possibly by having a stop/start timer.

When in use takes up modal space on screen?

@jh3y

Move over to gulp

Came back to look at the source for this and haven't used Grunt for some time.

Probably going to be best to change it over to Gulp. Will most likely be quicker and easier anyway.

@jh3y

Usability: Adding Collums and items

What I want to do: I want to add and delete columns as well as items directly without using the menu

Problems:

  • Currently, each column has a "+" and a "x" on the top. The "x" deletes the column while the "+" creates a new item. They look very similar and are spatially close but are directed to something different.
  • There is no widget for creating a new column

Suggestion

  • Move the + below the Column heading to visually connect it to the items.
  • Create a + at the very right which does the same as the menu's "add column"
    Thus you have a common principle, a delete button on each element itself and a add button at where a new element would be created
    mockup_addanddeletebuttons_tyto

No option to Add/Create a board

I followed the readme instructions and installed this. When I open the http://localhost:1987/public/ page, I dont see an option to create a New board. Clicking on left menu shows an empty page. On the browser console, I see

Uncaught UndefinedTemplateError: Cannot render the template since it is null or undefined.  vendor.min.js:54

UI design improvement: card action placement

Issue is a sub issue of issue #14.

It concerns the placement of the adding card button.

bottom of column?

top right of column?

big grey icon over the column but how do you work with the drag part of this?

This has also been discussed in #10.

@jh3y

add localStorage support

Add localStorage and autosaving so that a users board is saved in the browser.

Inform users about the use of localStorage and also allow them to disable it and clear it on demand say with an advanced menu option possibly hidden behind a gear.

It shouldn't be much more difficult than this to simply make use of the saving:

    var ls = window.localStorage;
    var config = JSON.parse(ls.getItem('config'));
    //load the config
    ls.setItem('config', JSON.stringify(config));
    //save the config

@jh3y

Support of tree like structure - Multiple boards

Hi jh3y,

Thanks for the great tool!

I wonder if it is possible easily add more complex structure to the project. In particular it would be nice to have items on the panel that are actually links to other boards.

For example, the json in that case can looks like

[{
"id": 1,
"parent": 0,
"columns":[
{"title":"column","items":[{"content":"this is a new item"}]},
{"title":"new column","items":[{"type": "tyto-board", "content": "text for the link", "tyto_id": 2}]},

},
{
"id": 2,
"parent": 1
"columns":[]
}
]

Do you like the idea? )

Exported files cut off after '#' character

Firefox 28.0, Windows 8.1.

Exporting a board with any column title, item title, or item description containing a "#" character produces a bad JSON file that ends abruptly where the "#" character would have been.

Haven't checked any other special characters to see if they have this problem.

view.ui.columnContainer.sortable is not a function

Using the latest copy from today:

tyto.js:1001 Uncaught TypeError: view.ui.columnContainer.sortable is not a function
    at child.bindColumns (tyto.js:1001)
    at child.onRender (tyto.js:996)
    at Object._triggerMethod (vendor.js:25484)
    at child.triggerMethod (vendor.js:26707)
    at child.render (vendor.js:27588)
    at child.wrapper [as render] (vendor.js:13382)
    at constructor.show (vendor.js:25935)
    at child.showChildView (vendor.js:27764)
    at child.showBoardView (tyto.js:214)
    at child.wrapper (vendor.js:13382)
    at child.execute (vendor.js:23755)
    at Object.callback (vendor.js:23744)
    at vendor.js:23971
    at arraySome (vendor.js:11753)
    at Function.some (vendor.js:17287)
    at Backbone.History.loadUrl (vendor.js:23969)
    at Backbone.History.start (vendor.js:23935)
    at child.<anonymous> (tyto.js:105)
    at triggerEvents (vendor.js:22697)
    at child.trigger (vendor.js:22638)
    at Object._triggerMethod (vendor.js:25490)
    at child.Marionette.triggerMethod (vendor.js:25508)
    at child.start (vendor.js:28231)
    at Object.1../config/tyto (tyto.js:122)
    at s (tyto.js:13)
    at e (tyto.js:13)
    at tyto.js:13
    at tyto.js:1973

It seems my vendor.js is much smaller than the one on http://jh3y.github.io (32k lines vs. 51k). I don't have jQuery UI Draggable in my vendor.js, among other things.

Chromium v59.0.3071.115 (Developer Build) (64-bit)

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.