Skip to content

Commit 7b62df6

Browse files
authored
Merge pull request #58 from jh3y/develop
Address #57
2 parents 45d29d5 + 2d55b20 commit 7b62df6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+2230
-1731
lines changed

.babelrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"presets": ["es2015", "react"]
3+
}

LOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,6 @@ Log ![alt tag](https://raw.github.com/jh3y/tyto/master/src/img/tyto.png)
66
* __23/05/14__: V1.4.0. Introduction of Grunt and Bower.̨
77
* __01/08/15__: V2.0.0. Complete overhaul of design and functionality. Move to MV* framework and introduction of minimal UI using MDL.
88
* __02/10/15__: Documentation reduction.
9+
* __05/10/15__: Add markdown support + bug fixes.
10+
* __17/10/15__: Implement dynamic linking between entities via Markdown `#`.
11+
* __16/09/16__: V3.0.0 Removal of CoffeeScript in favor of Babel ES6 + various bug fixes/improvements.

README.md

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,41 +7,42 @@ just visit [jh3y.github.io/tyto](http://jh3y.github.io/tyto)!
77

88
![alt tag](https://raw.github.com/jh3y/pics/master/tyto/app_three_cols.png)
99

10-
###Features
10+
### Features
1111
* minimal UI
1212
* no accounts necessary
1313
* intuitive
1414
* extensible
1515
* localStorage persistence
1616
* time tracking
1717
* sortable UI
18+
* task linking
1819
* Markdown support
1920
* etc.
2021

2122
![alt tag](https://raw.github.com/jh3y/pics/master/tyto/add_task.gif)
2223

23-
###Why tyto? What's it for?
24-
Tyto arose from a desire of my own and members of my then team. The desire for an intuitive and simple tool for easy workflow/task management. Whether it be managing tasks in the current sprint or your weekly schedule. An ability to share was also vital.
24+
### Why tyto? What's it for?
25+
26+
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.
27+
28+
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.
2529

2630
![alt tag](https://raw.github.com/jh3y/pics/master/tyto/edit_view.png)
2731

28-
In truth, most organisations have some form of tool for this. In my experience though, most are cumbersome and clunky. Employees tend to dislike internal tools. Whiteboards and walls etc. are still covered in sticky notes.
32+
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.
2933

30-
This is why tyto came about. It's intuitive and minimal. No accounts are necessary. On top of that, the source isn't too hard to grasp making it rather easy to extend and customise.
34+
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.
3135

3236
![alt tag](https://raw.github.com/jh3y/pics/master/tyto/edit_task.gif)
3337

34-
###Who's it for?
35-
Developer and project managers were the original target audience. A means to share project progression on a more personal level. As opposed to an automated message from an internal system.
38+
### Who's it for?
39+
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.
40+
41+
![alt tag](https://raw.github.com/jh3y/pics/master/tyto/linking.gif)
3642

37-
For example; a developer may track the different stages of a task. They may also want to track time spent on different tasks and then email this to a project manager.
38-
Tyto isn't restricting. It has use in a multitude of scenarios. Not quite right out of the box? Extensibility provides a means to create a bespoke version based on theme or functionality.
43+
There are no restrictions though, it's open source. Not quite right out of the box? Change it :smile:
3944

40-
Examples:
41-
* the plan for the week ahead.
42-
* ingredient lists.
43-
* priority lists etc.
44-
* managing your xmas shopping
45+
Extensibility provides a means to create a bespoke version based on theme or functionality.
4546

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

@@ -59,12 +60,10 @@ Changes are persistent thanks to `localStorage`.
5960

6061
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.
6162

62-
A persistent workflow across devices? I'm afraid I haven't implemented that. Accounts is not something I am keen on implementing. I think it diverts from my original intention with tyto.
63-
64-
63+
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.
6564

66-
####Your own environment
67-
#####Prerequisites
65+
#### Your own environment
66+
##### Prerequisites
6867
If you're cloning the repo and setting up the codebase you are going to need __[node]__, __[bower]__ and __[gulp]__ installed.
6968
#####Set up
7069
1. Clone the repo.
@@ -81,14 +80,14 @@ If you're cloning the repo and setting up the codebase you are going to need __[
8180

8281
gulp
8382

84-
####Hosting
83+
#### Hosting
8584
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.
8685

8786
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`.
8887

8988
![alt tag](https://raw.github.com/jh3y/pics/master/tyto/speed_dial.gif)
9089

91-
###Development
90+
### Development
9291
A strength of tyto is extensibility. Making changes whether it be functional or aesthetic is straightforward once familiar with the codebase.
9392

9493
Any queries as to how things work in the codebase? Feel free to raise an issue with a question!
@@ -106,15 +105,15 @@ There are a range of technologies being used under the hood.
106105
* Marked
107106
* Jade
108107
* Stylus
109-
* CoffeeScript
108+
* Babel
110109
* Gulp
111110

112111
![alt tag](https://raw.github.com/jh3y/pics/master/tyto/move_task.gif)
113112

114-
###License
113+
### License
115114

116115
MIT
117116

118-
If you wish to use __tyto__ please star, fork or share the repo! It aids with project presence.
117+
---------------------------
119118

120-
[@jh3y](https://github.com/jh3y) (c) 2015.
119+
Made with :sparkles: [@jh3y](https://twitter.com/@_jh3y) 2016

bower.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"name": "tyto",
3-
"version": "2.2.2",
3+
"version": "3.0.0",
44
"homepage": "https://github.com/jh3y/tyto",
55
"authors": [
6-
"jh3y <jh3y@live.co.uk>"
6+
"jh3y <jh3y@users.noreply.github.com>"
77
],
88
"description": "manage and organise things",
99
"keywords": [

build-tasks/assets.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
var gulp = require('gulp'),
2+
gConfig = require('../gulp-config'),
3+
pluginOpts = gConfig.pluginOpts,
4+
sources = gConfig.paths.sources,
5+
destinations = gConfig.paths.destinations,
6+
env = require('./utils').getEnv(),
7+
plugins = require('gulp-load-plugins')(pluginOpts.load);
8+
9+
var assets = {
10+
scripts: function() {
11+
var yapFilter = plugins.filter([
12+
'**/*.js',
13+
'!**/yap.min.js'
14+
]);
15+
return gulp.src(sources.vendor.js)
16+
.pipe(plugins.plumber())
17+
.pipe(env.dist ? yapFilter: plugins.gUtil.noop())
18+
.pipe(plugins.concat('vendor.js'))
19+
.pipe(gulp.dest(destinations.js))
20+
.pipe(plugins.uglify(pluginOpts.uglify))
21+
.pipe(plugins.rename(pluginOpts.rename))
22+
.pipe(gulp.dest(destinations.js));
23+
},
24+
fonts: function() {
25+
return gulp.src(sources.vendor.fonts)
26+
.pipe(plugins.plumber())
27+
.pipe(gulp.dest(destinations.fonts));
28+
},
29+
styles: function() {
30+
return gulp.src(sources.vendor.css)
31+
.pipe(plugins.plumber())
32+
.pipe(plugins.concat('vendor.css'))
33+
.pipe(gulp.dest(destinations.css))
34+
.pipe(plugins.minify(pluginOpts.minify))
35+
.pipe(plugins.rename(pluginOpts.rename))
36+
.pipe(gulp.dest(destinations.css));
37+
},
38+
img: function() {
39+
return gulp.src(sources.img)
40+
.pipe(plugins.plumber())
41+
.pipe(gulp.dest(destinations.img));
42+
},
43+
json: function() {
44+
return gulp.src(sources.json)
45+
.pipe(plugins.plumber())
46+
.pipe(gulp.dest(destinations.js));
47+
}
48+
};
49+
50+
module.exports = assets;

build-tasks/deploy.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
var gulp = require('gulp'),
2+
gConfig = require('../gulp-config'),
3+
pluginOpts = gConfig.pluginOpts,
4+
sources = gConfig.paths.sources,
5+
destinations = gConfig.paths.destinations,
6+
env = require('./utils').getEnv(),
7+
plugins = require('gulp-load-plugins')(pluginOpts.load);
8+
9+
var deploy = {
10+
deploy: function () {
11+
return gulp.src(sources.overwatch)
12+
.pipe(plugins.deploy());
13+
}
14+
};
15+
16+
module.exports = deploy;

build-tasks/markup.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
var gulp = require('gulp'),
2+
gConfig = require('../gulp-config'),
3+
pluginOpts = gConfig.pluginOpts,
4+
sources = gConfig.paths.sources,
5+
destinations = gConfig.paths.destinations,
6+
env = require('./utils').getEnv(),
7+
plugins = require('gulp-load-plugins')(pluginOpts.load);
8+
9+
var markup = {
10+
compile: function() {
11+
return gulp.src(sources.docs)
12+
.pipe(plugins.plumber())
13+
.pipe(plugins.pug(pluginOpts.pug))
14+
.pipe(gulp.dest(destinations.html));
15+
},
16+
watch: function() {
17+
gulp.watch(sources.markup, ['markup:compile']);
18+
}
19+
};
20+
21+
module.exports = markup;

build-tasks/script.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
var gulp = require('gulp'),
2+
browserify = require('browserify'),
3+
source = require('vinyl-source-stream'),
4+
buffer = require('vinyl-buffer'),
5+
fs = require('fs'),
6+
gConfig = require('../gulp-config'),
7+
pluginOpts = gConfig.pluginOpts,
8+
sources = gConfig.paths.sources,
9+
destinations = gConfig.paths.destinations,
10+
env = require('./utils').getEnv(),
11+
plugins = require('gulp-load-plugins')(pluginOpts.load);
12+
13+
var scripts = {
14+
compile: function () {
15+
var b = browserify({
16+
entries: [
17+
'./src/script/app.js'
18+
],
19+
transform: 'babelify',
20+
extensions: '.js',
21+
debug: env.mapped ? true: false
22+
});
23+
24+
return b.bundle()
25+
.pipe(plugins.plumber())
26+
.pipe(source(gConfig.pkg.name + '.js'))
27+
.pipe(buffer())
28+
.pipe(env.mapped ? plugins.sourcemaps.init({loadMaps: true}): plugins.gUtil.noop())
29+
.pipe(plugins.wrap(pluginOpts.wrap))
30+
.pipe(plugins.header(fs.readFileSync('./LICENSE', 'utf-8')))
31+
.pipe(env.stat ? plugins.size(pluginOpts.gSize): plugins.gUtil.noop())
32+
.pipe(gulp.dest(destinations.js))
33+
.pipe(plugins.uglify(pluginOpts.uglify))
34+
.pipe(plugins.rename(pluginOpts.rename))
35+
.pipe(env.mapped ? plugins.sourcemaps.write('./'): plugins.gUtil.noop())
36+
.pipe(env.stat ? plugins.size(pluginOpts.gSize): plugins.gUtil.noop())
37+
.pipe(gulp.dest(env.dist ? destinations.dist: destinations.js));
38+
39+
},
40+
watch: function() {
41+
gulp.watch(sources.script, ['script:compile']);
42+
}
43+
};
44+
45+
module.exports = scripts;

build-tasks/serve.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
var gulp = require('gulp'),
2+
browsersync = require('browser-sync'),
3+
vss = require('vinyl-source-stream'),
4+
vb = require('vinyl-buffer'),
5+
vf = require('vinyl-file'),
6+
gConfig = require('../gulp-config'),
7+
opts = gConfig.pluginOpts,
8+
src = gConfig.paths.sources,
9+
dest = gConfig.paths.destinations;
10+
/*
11+
start; creates local static livereload server using browser-sync.
12+
*/
13+
var server = {
14+
start: function() {
15+
var server = browsersync.create();
16+
server.init(opts.browserSync);
17+
return server.watch(src.overwatch, function(evt, file) {
18+
if (evt === 'change' && file.indexOf('.css') === -1)
19+
server.reload();
20+
if (evt === 'change' && file.indexOf('.css') !== -1)
21+
vf.readSync(file)
22+
.pipe(vss(file))
23+
.pipe(vb())
24+
.pipe(server.stream());
25+
});
26+
}
27+
};
28+
29+
module.exports = server;

build-tasks/style.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
var gulp = require('gulp'),
2+
gConfig = require('../gulp-config'),
3+
pluginOpts = gConfig.pluginOpts,
4+
sources = gConfig.paths.sources,
5+
destinations = gConfig.paths.destinations,
6+
env = require('./utils').getEnv(),
7+
plugins = require('gulp-load-plugins')(pluginOpts.load);
8+
9+
var style = {
10+
compile: function() {
11+
return gulp.src(sources.style, {base: 'src/style'})
12+
.pipe(plugins.plumber())
13+
.pipe(plugins.order(pluginOpts.order.stylus))
14+
.pipe(plugins.concat(gConfig.pkg.name + '.styl'))
15+
.pipe(plugins.stylus())
16+
.pipe(plugins.prefix(pluginOpts.prefix))
17+
.pipe(gulp.dest(destinations.css))
18+
.pipe(plugins.minify())
19+
.pipe(plugins.rename(pluginOpts.rename))
20+
.pipe(gulp.dest(destinations.css));
21+
},
22+
watch: function() {
23+
gulp.watch(sources.style, ['style:compile']);
24+
}
25+
};
26+
27+
module.exports = style;

0 commit comments

Comments
 (0)