Coder Social home page Coder Social logo

ocombe / angular2-seed-advanced Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nathanwalker/angular-seed-advanced

0.0 3.0 0.0 7.54 MB

An advanced Angular2 seed project with support for ngrx/store, ng2-translate, lodash, NativeScript and more coming soon...

License: MIT License

TypeScript 67.97% JavaScript 19.09% CSS 5.22% HTML 7.72%

angular2-seed-advanced's Introduction

Angular 2 Seed AdvancedAngular 2 Seed Advanced Integrations

Angular 2 Style Guide Build Status Build Status MIT license Dependency Status devDependency Status Stack Share Stories in Ready

Want to use Angular 2 for a large project? Do you need potential i18n support? Enhanced testing support? Oh and building for multiple platforms too? Web, native Mobile (Android/iOS), and even Desktop (Windows/Mac - coming soon!)?

This is an advanced seed project for Angular 2 apps based on Minko Gechev's angular2-seed that expands on all of it's great features to include core support for:

Integration with:

  • ngrx/store RxJS powered state management, inspired by Redux
  • ngrx-store-router middleware for syncing state with Angular 2 Router.
  • ng2-translate for i18n
    • Usage is optional but on by default
    • Up to you and your team how you want to utilize it. It can be easily removed if not needed.
  • lodash Helps reduce blocks of code down to single lines and enhances readability
  • NativeScript cross platform mobile (w/ native UI) apps. Setup instructions here.
Multiple Platforms
The zen of multiple platforms. Chrome, Android and iPhone all running the same code.

Table of Contents

Additional features coming soon...

  • Electron cross platform desktop apps.
  • provider for LocalStorage (abstraction for IndexedDB, WebSQL, localStorage, perhaps a port of localForage)
  • sophisticated setup for Service Worker
  • integration with ng2-bootstrap

Enhanced development workflow

  • Decorators for components which reduce boilerplate for common component setups
  • Introduction of frameworks to help organize your code for different platforms:
    • app.framework: your shared application architecture code (grow your app here or create new frameworks)
    • core.framework: foundation layer (decorators and low-level services)
    • desktop.framework: coming soon... Electron specific code
    • nativescript.framework: NativeScript specific code
    • test.framework: test specific code providing conveniences to make testing your code easier and faster

Enhanced testing support options

  • mocks for various services
  • configurable provider blocks for easy test setup of common application providers
    • tired of setting up similar providers over and over again for different tests?
    • configure a reusable test provider which can be configured on a case-by-base basis
    • see example here
    • watch video explanation coming soon
  • helpers for end-to-end (e2e, integration) tests
  • convenient shorthand to reduce test setup boilerplate and enhance speed of writing tests
    • are your test cases buried by multiple import lines requiring you to scroll just to get to the substance of the test?
    • removes noise allowing you to better focus on the substance of the test
    • provides full intellisense support
    • allows your team to add unique shorthands for various testing scenarios specific to your application needs
    • plays nice with tslint options like "no-unused-variable": true as the api hangs off a plain Object instead of globals
      • what's the value of that you ask? have you ever isolated a test with iit or ddescribe but didn't import those or vice versa, used iit leaving an unused it now in your tests? yeah, tslint will be all over you :/
      • avoids unused variable warnings altogether in tests since you are always using a valid key from the shorthand Object
    • see example here
    • watch video explanation coming soon

Advice: If your project is intended to target a single platform (i.e, web only), then angular2-seed is likely more than suitable for your needs. However if your project goals are to target multiple platforms (web, native mobile and native desktop), with powerful out of the box library support and highly configurable/flexible testing options, then you might want to keep reading.

Prerequisites

  • node v4.x.x or higher and npm 2.14.7.
  • ts-node installed as global. If you don't, use:
npm install -g ts-node
  • To run the NativeScript app:
npm install -g nativescript
npm install -g typescript

Usage

git clone --depth 1 https://github.com/NathanWalker/angular2-seed-advanced.git
cd angular2-seed-advanced

# install the project's dependencies
npm install
# watches your files and uses livereload by default
npm start
# api document for the app
npm run docs

# dev build
npm run build.dev
# prod build
npm run build.prod

Run NativeScript App

npm install -g nativescript  // if you don't already have it installed globally
cd nativescript  // we set things up from `nativescript` directory because {N} does not use the seed build
tns install

// you will see TypeScript warnings, this is normal, you can ignore :)
npm run start.ios   // iOS simulator

// or...

npm run start.android   // Android emulator - requires an image setup via AVD Manager (see {N} docs for more)

Testing

npm test

# Debug - In two different shell windows
npm run build.test.watch      # 1st window
npm run karma.start           # 2nd window

# code coverage (istanbul)
# auto-generated at the end of `npm test`
# view coverage report:
npm run serve.coverage

# e2e (aka. end-to-end, integration) - In three different shell windows
# Make sure you don't have a global instance of Protractor

# npm run webdriver-update <- You will need to run this the first time
npm run webdriver-start
npm run serve.e2e
npm run e2e

# e2e live mode - Protractor interactive mode
# Instead of last command above, you can use:
npm run e2e.live

You can learn more about Protractor Interactive Mode here

Web Configuration Options

Default application server configuration

var PORT             = 5555;
var LIVE_RELOAD_PORT = 4002;
var DOCS_PORT        = 4003;
var APP_BASE         = '/';

Configure at runtime

npm start -- --port 8080 --reload-port 4000 --base /my-app/

How best to use for your project

Setup

  1. Download a zip of the seed. This allows you to manually setup origin/upstream
  2. git remote add origin ....your private repo....
  3. git remote add upstream https://github.com/NathanWalker/angular2-seed-advanced.git
  4. Create a new framework for your application in src/frameworks to build your codebase out. Say your app is called AwesomeApp, then create awesomeapp.framework and start building out all your components and services in there. Create other frameworks as you see fit to organize.
  5. If you don't want an integration that comes out of box with this seed; for example. let's say you don't want to use i18n. Then just delete the i18n.framework, remove ng2-translate as dependency root package.json and nativescript/package.json. Then remove the references to i18n throughout.
  6. Remove src/components since those are just samples and create a new folder for your components, let's say src/pages. It's not absolutely necessary to remove and create a new differently named folder for your components but it will make merging in upstream changes a bit smoother.

Merging latest upstream changes

  1. git remote fetch upstream
  2. git merge upstream/master you could rebase, but it wouldn't be worth it as the conflict resolution can often be more painful if there are conflicts
  3. Handle any conflicts to get latest upstream into your application. If you removed src/components as mentioned above, they may show back up when merging in latest upstream. You can just remove the folder again.
  4. Continue building your app.

If you have any suggestions, please post here.

Contributing

Please see the CONTRIBUTING file for guidelines.

License

MIT

angular2-seed-advanced's People

Contributors

aboeglin avatar aegyed91 avatar devanp92 avatar e-oz avatar evanplaice avatar henetiriki avatar inkidotcom avatar jakepartusch avatar jerryorta-dev avatar jesperronn avatar joshwiens avatar juristr avatar larsthorup avatar ludohenin avatar luxdie avatar markharding avatar mgechev avatar mjwwit avatar nareshbhatia avatar natarajanmca11 avatar nathanwalker avatar nightapes avatar ocombe avatar ojacquemart avatar patrickjs avatar pgrzeszczak avatar ryzy avatar tarlepp avatar tuikiken avatar typekpb avatar

Watchers

 avatar  avatar  avatar

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.