Giter VIP home page Giter VIP logo

kickoff's Introduction

Kickoff

A lightweight front-end framework for creating scalable and performant, responsive sites

devDependency Status Build status Dependency Status XO code style bitHound Overall Score

Developed and maintained by Ashley Nolan & Zander Martineau

Features

Feature Description
#webperf Performance-first, responsive philosophy
🚍 Rock-solid build tasks We use gulp & webpack to deliver the best task runner & developer experience for your project
👓 Unopinionated & extendable A few common UI elements, a grid & some other base styles. The rest is up to you.
🔮 Future proof Build complex layouts with flexbox & use ES2015 (ES6) for your javascript.
😠 Lean & mean CSS: 8.68 kB gzipped
JS: 2 kB gzipped
It is a boilerplate after all 😉

Tasks

Command Description
npm start Basic dev server using Browsersync
npm run watch Watch all files for changes
npm run deploy Install all dependencies and compile all assets for production deployment
npm run compile:all Compile the CSS & JS, compress the images and run any other compilation tasks needed to run your app
npm run compile:release Add the --release flag to any other task, e.g. gulp javascript --release or gulp css --release
npm run compile:css Sass (Libsass via node-sass), Postcss with Autoprefixer, CSSNano, Source Maps & more..
npm run compile:js Babel, Webpack
npm run compile:svg Auto-generated SVG sprites
npm run compress:images Image compression with imagemin
npm run lint:js Lint JS using xo
npm run fix:js Fix JS linting issues using xo
npm run lint:css Lint CSS using stylelint. We use the https://github.com/stylelint/stylelint-config-standard rules for our linting
npm test Run javascript and css tests
npm run clean:all Clean the compiled files
npm run copy:all Run the copy tasks - useful for things like webfonts etc
npm run release-patch Creates a patch release using release-it
npm run release-minor Creates a minor release using release-it
npm run release-major Creates a major release using release-it
npm run release-premajor Creates a premajor release using release-it

📝 Demos and documentation

Kickoff's demo and documentation site is hosted at trykickoff.com.


Yeoman generator

Our Yeoman Generator is the best way to get Kickoff each time you want to start a new project, visit trykickoff.com/docs/yeoman.html for more info.



🐛 Bugs and feature requests

Have a bug or a feature request? Please search for existing and closed issues. If your problem or idea is not addressed yet, please open a new issue.


Browser compatibility

Kickoff has been tested in the following browsers:

Chrome (latest) Firefox (latest) Safari (latest) Edge (latest) Opera (latest)
Chrome Firefox Safari Microsoft Edge Opera

We also support older versions of Internet Explorer but the support is limited. For example, the Kickoff grid relies on flexbox so Modernizr is needed to detect for it and then we can provide a fallback.


Maintainers and contributors

Zander Martineau Ashley Nolan Nic Bell
Zander Ashley Nic
Twitter Twitter Twitter
Github Github Github
Site Site Site

Community

If you're using Kickoff we'd love to hear about it; please e-mail us at [email protected]

Keep track of development and community news by following @TryKickoff on Twitter.

Contributing

Please read our contribution guidelines before contributing to Kickoff.

Versioning

For transparency into our release cycle and in striving to maintain backward compatibility, Kickoff is maintained under the Semantic Versioning guidelines. Sometimes we screw up, but we'll adhere to those rules whenever possible.


Sponsored by

TMW Unlimited...

Kickoff was created by Ash and Zander while working at TMW. TMW continue to provide sponsorship for the development of the project as well as trykickoff.com domain renewals, stickers etc.

kickoff's People

Contributors

ashleynolan avatar denzbrade avatar greenkeeperio-bot avatar johanmouchet avatar mrmartineau avatar munkychop avatar nicbell avatar rentorm 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  avatar  avatar  avatar  avatar  avatar

kickoff's Issues

custom build name problem

When create a custom build, everything is fine apart from the config that is still called KO.

KM = custom name
//initialise KM object
var KM = {};
KO.Config.init();

Styleguide updates and improvements

As part of the next slew of updates, I want to improve the styleguide. As #47 mentions, it is currently a little confusing to use the styleguide, and maintain it, while working on a project.

My tasks at the moment are:

  • Improve the styleguide’s design
  • Use Statix to manage the styleguide - this should make it easier to develop allowing devs to create all components as includes and have multiple pages if need be.
  • Styleguides should look like the site that you're developing but I would like some Kickoff branding somewhere on the page (probably a footer or something

I recently found Heroku's styleguide, we could take some inspiration from that.. @ashleynolan do we want to have code snippets in ours as well?

Version 7 - TODO

  • ES2015 by default using babel - most of this work has already been done in the ES2015 branch
  • Eslint - switch to use eslint instead of jscs and jshint - most of this work has already been done in the ES2015 branch
  • Flexbox - provide a good, flexbox-based alternative to the kickoff grid and block-grids. My recommendation is to use suitcss/components-grid (I think this may need to be ported to Sass for ease of use..). Would be nice to install CSS dependencies with npm though..
  • Remove Grunticon - I think there are better icon solutions out there. Perhaps we don't need to include one at all. Controversial??
  • Drop IE8 support. I think its time now. We can remove the 2 CSS file generation, the question in the Yeoman generator and various other things..
  • Other CSS improvements. I have a list of various things I'd like to do after having read @LeaVerou's CSS book recently

What do you think @nicbell, @ashleynolan & @munkychop? Did I miss anything? Should we remove any files, rearrange any directories? I would like Kickoff to be as useful as possible.

Next version of Kickoff

Hey @ashleynolan & @nicbell, here's my list for the next version of Kickoff, please add any other things that you'd like. I don't think this is a v6, but probably a v5.1.0.. what do you think?

  • Switch to Browserify? see #57
    • Switch to minifify in the Browserify build
    • Remove grunt-contrib-uglify
    • Remove chotto if we move to Browserify build is not needed anymore
  • Add a modifier to .l-blockGrid > .l-blockgrid--guttered. Thanks @nicbell
    • remove dependency on unordered lists @nicbell, will you be able to do this?
  • Update custom radios & checkboxes. 50% done by @mrmartineau
  • Remove some grunt plugins
    • Remove Grunt photobox, what do you think?
  • Update package.json to move some items in optionalDependencies. @nicbell
  • Refactor the .media element so it doesn't always stack on skinny viewports
  • Simplify tables @ashleynolan #61
  • Add jsHint and scsslint tasks @ashleynolan
  • Use cutting the mustard test for loading shims

Next major version

Please could you put any items you'd like to have in the next major version of Kickoff, whether it be v4.2.0 or v5.0.0. We can then work out a roadmap for releasing the new features.

/cc @ashleynolan

Update Kickoff docs site

  • Switch scss with new version
  • Update all new features
  • Revisit documentation for each feature
  • Improve 'getting started' page, possibly a getting started screencast
  • Add a blog

Type sizing

I saw on Dropbox's Scooter framework, that they have helper classes for type size. We have kind of have this at the moment with our headings:

// Use the helper classes to emulate styles for another element
// For example: h3.h1 or h3.alpha
h1, .h1, .alpha {
    @include font-size($type-largest);
    margin-bottom: $baseline * 2;
}

h2, .h2, .beta {
    @include font-size($type-large);
}

h3, .h3, .gamma {
    @include font-size($type-mid);
}

h4, .h4, .delta {
    @include font-size($type-base);
}

h5, .h5, .epsilon,
h6, .h6, .zeta {
    @include font-size($type-small);
    margin-bottom: 0;
}

What do you think of removing the helper classes from the above and making more generi classes like below:

/**
 * Type sizes
 */
.type-micro    { @include font-size($type-micro); }
.type-smallest { @include font-size($type-smallest); }
.type-smaller  { @include font-size($type-smaller); }
.type-small    { @include font-size($type-small); }
.type-base     { @include font-size($type-base); }
.type-mid      { @include font-size($type-mid); }
.type-large    { @include font-size($type-large); }
.type-largest  { @include font-size($type-largest); }
.type-jumbo    { @include font-size($type-jumbo); }

We could even have this so it is made perfectly clear what sizes each element uses:

/**
 * Type sizes
 */
.type-micro         { @include font-size($type-micro); }
.type-smallest      { @include font-size($type-smallest); }
.type-smaller       { @include font-size($type-smaller); }
.type-small, h5, h6 { @include font-size($type-small); }
.type-base, p, h4   { @include font-size($type-base); }
.type-mid, h3       { @include font-size($type-mid); }
.type-large, h2     { @include font-size($type-large); }
.type-largest, h1   { @include font-size($type-largest); }
.type-jumbo         { @include font-size($type-jumbo); }

Which would ultimately look something like this:

/**
 * Paragraphs
 */
p {
    font-family: $font-family-base;
    margin-top: 0;
    margin-bottom: $baseline;

    // Measure - ideally about 65 chars per line
    // max-width: $type-base * 30 + px;

    // & small {
    //  color: lighten($color-text, 10%);
    // }
}

/**
 * Headings
 */
h1, h2, h3, h4, h5, h6 {
    margin: 0;
    font-family: $font-family-headings;
    font-weight: $font-weight-headings;
    line-height: $line-height-headings;
    text-rendering: optimizelegibility; // Fix the character spacing for headings
    margin-top: 0;
    margin-bottom: $baseline;

    small {
        font-weight: normal;
    }
}

// Use the helper classes to emulate styles for another element
// For example: h3.h1 or h3.alpha
h1 {
    margin-bottom: $baseline * 2;
}

h5
h6 {
    margin-bottom: 0;
}

// Only give these headings a margin-top if they are after other elements
* + h1, * + .h1, * + .alpha,
* + h2, * + .h2, * + .beta,
* + h3, * + .h3, * + .gamma,
* + h4, * + .h4, * + .delta {
    margin-top: $baseline;
}

small {
    font-size: 80%;
}

/**
 * Type sizes
 */
.type-micro                { @include font-size($type-micro); }
.type-smallest             { @include font-size($type-smallest); }
.type-smaller              { @include font-size($type-smaller); }
.type-small, h5, h6, small { @include font-size($type-small); }
.type-base, p, h4          { @include font-size($type-base); }
.type-mid, h3              { @include font-size($type-mid); }
.type-large, h2            { @include font-size($type-large); }
.type-largest, h1          { @include font-size($type-largest); }
.type-jumbo                { @include font-size($type-jumbo); }

Would love some feedback on this please @munkychop @CiaranPark @ashleynolan @nicbell

jQuery based replacement for select boxes

Hi gents,

Great framework you have created, well done!

I've got an idea I would like to share. Recently working on complex multiselect form field structure I came across nice jQuery based replacement. I think this would be great addition to this framework.

Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.
http://ivaynberg.github.io/select2/select2-latest.html

Best wishes,
Rento

Moving to Gulp

Just putting this in to discuss any future work on our plans to try moving the framework over to use Gulp instead of Grunt.

I’ll be putting together a branch for this this week, so that we can see if there are any unforeseen things we need to address, but now GruntIcon is being removed from the project this should be a straightforward task.

Bower workflow

I'd like to integrate Bower into Kickoff in a more seamless way. Historically I would bower install whatever and then just add the file to the <%=config.js.fileList%> array in the Gruntfile config. Is this the best way to handle bower dependencies?

There are some Grunt plugins that move the bower dependencies to another folder, out of the bower_components, the js/libs/ folder for example. Is that preferable?

/cc @nicbell @ashleynolan @munkychop

Input background

Line 115 of _forms.scss should be

background-color: $input-background;

Because it is settable in the colour palette.

Sass: folder organisation change

I would like to rename scss/partials to scss/modules, then remove the components directory and bring all the "components" *.scss into this new modules folder. I think it is confusing to have this differentiation when there is no obvious reason behind it (I know we (@ashleynolan & I) discussed it at length a while back). Thoughts?

/cc @nicbell @munkychop

Remove Placeholder Mixin

The placeholder mixin was originally used because Autoprefixer didn’t add prefixes to :placeholder declarations.

This has since been fixed, so we should remove the placeholder mixin and test that Autoprefixer now adds this during the compile step.

See related issue that was raised on the site repo.

All offset columns are generated as "g-offset1"

It looks like all offsets are being generated as g-offset1.
The bug is on line 121 of _choreographic-grid.scs
.g-row > .g-offset1 { the '1' should be dynamic.

This is the current output.

    .g-row > .g-offset1 {
        margin-left: 0.03157895%;
    }

    .g-row > .g-offset1:first-child {
        margin-left: 10.03157895;
    }

    .g-row > .g-offset1 {
        margin-left: 0.14736842%;
    }

    .g-row > .g-offset1:first-child {
        margin-left: 20.14736842;
    }

Update latest version of normalize.css

Normalize has been updated many times since we last updated it, so we should update it. I saw on the project Github page that it can be installed with npm, so I thought that we could ensure we always use the latest version if we add to package.json and then reference it in _dependencies.scss. This would be amazing but the lib would be in the npm_modules folder, which would make writing the path annoying so we may need to write a post npm install script to copy the file across..

Thoughts?

/cc @ashleynolan @nicbell

Reconsider the structure of specific color variables in Kickoff

Having been using Kickoff for more minimal sites lately, I’ve found that it can be a bit of a chore when removing parts that are not needed to not simply be able to remove the specific scss from the dependencies.scss and not be left with any artifacts anywhere else.

However, you then also have to go into color-palette.scss and variables.scss and remove variables specific to these features.

As a possible enhancement, would be good to talk over the possibility of moving these variables to the top of their respective component files. I feel it also could make the color-palette.scss more clear for new users and not be quite as full-on, as I think it’s becoming a bit unclear on which variables are the most important being used in a build.

Thoughts?

Releasing the next version - TODO

Hi team (@nicbell & @ashleynolan), there are still a few things to do for the next version before it can be released.

  • Complete all tasks in #60
  • Port all changes to the generator, see TryKickoff/generator-kickoff#10 for what's needed
  • Update any documentation on the trykickoff.com site.
    • I have made many improvements but I will need some help with the homepage content. Have a look, you will see that I have added a feature overview section that needs completing.
  • Update the changelog with any changes (this is nearly completed)
  • Write a blog post about the release

Is there anything else?

Remove some styles

I would like to remove a few styles from Kickoff. Horizontal definition lists, some nav list styles and some other things.. I don't think they're useful to Kickoff's core.. do you agree @ashleynolan @nicbell?

Here's the sauce:

Horizontal Definition list

.dl-horizontal {
    @include clearfix;

    dt {
        @include text-overflow();
        float: left;
        clear: left;
        width: 220px;
        text-align: right;
    }

    dd {
        margin-left: 240px;
    }
}

Nav styles

We could keep .unstyled but remove nav ul & nav ol...

/**
 * Unstyled lists
 */
.unstyled,
nav ul, nav ol {
    margin: 0;
    padding: 0;
    list-style: none;
    list-style-image: none;
}

Blockquote

/**
 * Blockquotes
 */
blockquote {
    padding-left: 10px;
    margin: $baseline;
    border-left: 4px solid lighten(#000, 80%);

    p {
        margin-bottom: 0;
        @include font-size($type-base);
        font-weight: 300;
    }

    small {
        display: block;
        color: lighten(#000, 70%);

        &:before {
            content: '\2014 \00A0';
        }
    }
}

// Quotes
q,
blockquote {
    &:before,
    &:after {
        content: "";
    }
}

Address

// Addresses
address {
    display: block;
    margin-bottom: $baseline;
    font-style: normal;
}

Close Button

/**
 * Close Button: for lightboxes etc
 */
.btnClose {
    position: absolute;
    right: 20px;
    top: 20px;

    display: block;
    height: 20px;
    width: 20px;
    line-height: 17px;

    background: #000;
    color: $color-primary;
    text-align: center;
    border-radius: 5px;
    cursor: pointer;
    user-select: none;

    &:hover {
        color: #fff;
        border-radius: 50px;
    }
}

Using multiple grunt tasks at start of project setup

I’ve found it a little tricky in terms of when starting a project and using the styleguide along-side the setup docs and statix build (when using the generator).

For example, if I run grunt start, and then immediately try and run grunt styleguide, it cannot serve up the styleguide via grunt-connect because the ports it requires to do so are already in use by the earlier started grunt connect task.

We just need to tweak this so that it is possible to run these tasks simultaneously when working on a project, without having to edit the grunt configs to allow for this.

Look at defaults for tables

Currently the defaults for tables aren’t all that sensible as they tend to be used without classes in content (especially if using a CMS as they are used for tabular content).

So, going to look at making the default styles for tables more useful – providing simple defaults that can be extended.

Will also update the docs once this work is complete.

imagemin: grunticon

When running the build task, this error persists:

Running "imagemin:grunticon" (imagemin) task
Fatal error: Cannot read property 'contents' of undefined

Removing 'newer:imagemin:grunticon' from the 'icons' task allows the build to proceed.

npm cache clean && npm install grunt-contrib-imagemin was attempted but does not solve the problem.

Adding a JS Test Framework to Kickoff

It’s long been a goal to integrate some kind of JS test framework into Kickoff.

Obviously, this could be quite rocky ground, as there are lots of different options out there and I think this will be where the generator will definitely come in handy for including/excluding testing from potential setups.

If we do implement this, should it be as a feature branch – like the Browserify setup – that we then only include as an option in the generator. Or should this be something we build into the master of Kickoff?

Thoughts please @mrmartineau, @munkychop and @nicbell :)

Getting started with Kickoff

I have created a very basic checklist-style page to help new users to Kickoff get started.. (that was a mouth-full). I'd like some feedback from people familiar with the project.

Please ignore the design for now, but could @nicbell, @ashleynolan, @bardius and @tommaton spare some time to check it out?

The easiest way to view it is to download Kickoff and open /_docs/index.html but if you want to be clever, try this:

git clone https://github.com/tmwagency/kickoff.git -b next 'kickoff-next' && cd kickoff-next && npm install && grunt start

By the way, grunt start is a new task I have setup that I think would be useful when beginning new projects as well. It creates a local copy of jQuery, uglify's the js, compiles Sass and opens up the start page, in this case, the new checklist page.

Let me know what you think, pull requests always welcome.

Issue with grunt-icon/NPM, causing error

Grunt-icon seems to be causing issues when I go to npm install from a new Kickoff (and Statix) build.

I’m running node v5.4.1 and npm v3.3.12 (see included screengrab).

screen shot 2016-01-19 at 10 45 22

It seems from a bit of hunting around online that this is an NPM issue itself rather than with grunticon, as trying to install worker-farm separately also doesn’t work for me. As this is a dependency for grunticon this is why the error appears.

Not sure how often this issue occurs but may be worth seeing if it affects anyone else as it’ll stop people from being able to run Kickoff.

After following all the steps I get this error .

DEPRECATION WARNING: Passing --sourcemap without a value is deprecated.
Sourcemaps are now generated by default, so this flag has no effect.
DEPRECATION WARNING: Passing --sourcemap without a value is deprecated.
Sourcemaps are now generated by default, so this flag has no effect.
Error: File to import not found or unreadable: functions/compact.
Load path: /Users/fabz/Dropbox/fabzelaida/FABZTV2014/Fabz/kickoff
on line 1 of scss/functions/_functions.scss
from line 18 of scss/_dependencies.scss
from line 9 of scss/kickoff.scssError: File to import not found or unreadable: functions/compact.
Load path: /Users/fabz/Dropbox/fabzelaida/FABZTV2014/Fabz/kickoff
on line 1 of scss/functions/_functions.scss
from line 18 of scss/_dependencies.scss
from line 17 of scss/kickoff-old-ie.scss

Use --trace for backtrace.
Use --trace for backtrace.
Warning: Exited with error code 1 Use --force to continue.

Restyle scrollbars

This might seem frivolous but I think it would be good to provide our own styling for scrollbars. Slack has done this and I think it looks great. Thoughts?

/cc @ashleynolan @CiaranPark

When selecting statix in Yeoman generator missing comma in Gruntfile

In V6 of Kickoff when using the Kickoff generator and choosing to use Statix a comma is missing from the complie task in the Gruntfile after images.

grunt.registerTask('compile', [
        /* 'checks', / uncomment this line if you want to run linting checks on your SCSS/JS as part of your build*/
        'browserify',
        'postscss',
        'images'
        'copy:statix',
        'assemble',
        'shimly',
        'copy:modernizr'
    ]);

Sass components

I've been thinking about adding some more sass components, these could be simple like we have already or more involved like the off-canvas/drawer navigation, with JS included etc.

Are there any that you'd like to include?

/cc @ashleynolan @CiaranPark @nicbell

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.