20
ANGULARJS ADVANCED STARTUP SHARED OF EXPERIENCES Created by / Gianluca Arbezzano @GianArb

AngularJS advanced project management

Embed Size (px)

Citation preview

Page 1: AngularJS advanced project management

ANGULARJS ADVANCEDSTARTUP

SHARED OF EXPERIENCESCreated by / Gianluca Arbezzano @GianArb

Page 2: AngularJS advanced project management

BIG PROJECT != LITTLE PROJECTMaintainability, reusable code & modulability, tools

Page 3: AngularJS advanced project management

SEED PROJECTThe life is made of choice

How can I write a good UI?How can I manage login/logout?Where is my data?A good foldering is a secret of successDeploy?

For me seed project is perfect for the tests but it don'tresponde at this questions

Page 4: AngularJS advanced project management

BOWERPackage manager

Page 5: AngularJS advanced project management

BOWER.IObower.json configuration file

"name": "my­app", "version": "0.0.1", "dependencies": "angular": "~1.3", "angular­local­storage": "~0.1" , "devDependencies": "angular­mocks": "*"

Page 6: AngularJS advanced project management

GRUNTTask runner

Page 7: AngularJS advanced project management

GRUNT-CONTRIB-CLEAN clean: [ '<%= build_dir %>', '<%= compile_dir %>' ]

Page 8: AngularJS advanced project management

GRUNT-CONTRIB-WATCH delta: options: livereload: true , gruntfile: files: 'Gruntfile.js', tasks: [ 'jshint:gruntfile' ], options: livereload: false , assets: files: [ 'src/assets/**/*' ], tasks: [ 'copy:build_app_assets' ]

Page 9: AngularJS advanced project management

GRUNT-CONTRIB-CONCAT concat: build_css: src: [ '<%= vendor_files.css %>', '<%= less.build.dest %>' ], dest: '<%= less.build.dest %>'

Page 10: AngularJS advanced project management

GRUNT-CONTRIB-JSHINT jshint: src: [ '<%= app_files.js %>' ], test: [ '<%= app_files.jsunit %>' ], gruntfile: [ 'Gruntfile.js' ], options: curly: true, immed: true, newcap: true, noarg: true, sub: true, boss: true, eqnull: true , globals: ,

Page 11: AngularJS advanced project management

GRUNT-AWS s3: options: accessKeyId: "<%= conf.aws.accessKeyId %>", secretAccessKey: "<%= conf.aws.secretAccessKey %>", cache: false, access: "public­read", bucket: "<%= conf.aws.bucket %>" , build: cwd: "build/", src: "**"

Deploy?

Page 12: AngularJS advanced project management

GRUNT-CONTRIB-LESS less: build: src: [ '<%= app_files.less %>' ], dest: '<%= build_dir %>/assets/<%= pkg.name %>­<%= pkg.version %>.css', options: compile: true, compress: false, noUnderscores: false, noIDs: false, zeroUnits: false

How can I write a good UI?

Page 13: AngularJS advanced project management

GRUNT-CONTRIB-HTML2JS html2js: app: options: base: 'src/app' , src: [ '<%= app_files.atpl %>' ], dest: '<%= build_dir %>/templates­app.js'

Page 14: AngularJS advanced project management

APPLICATION TREE build.config.js bower.json configuration.json.dist Gruntfile.js package.json README.md src app app.js app.spec.js home home.js home.less home.spec.js home.tpl.html assets fonts index.html less main.less variables.less

A good foldering is a secret of success

Page 15: AngularJS advanced project management

SINGLE MODULE build.config.js bower.json package.json README.md src home home.js home.less home.spec.js home.tpl.html

Every module is indipendent and splittable

Page 16: AngularJS advanced project management

BUILD.CONFIG.JS build_dir: 'build', compile_dir: 'bin', vendor_files: js: [ 'bower_components/angular/angular.js', 'bower_components/jquery/dist/jquery.js', 'bower_components/bootstrap/dist/js/bootstrap.js', 'bower_components/angular­ui­router/release/angular­ui­router.js', 'bower_components/angular­ui­utils/modules/route/route.js', 'bower_components/angular­cookies/angular­cookies.js' ], css: [ ], assets: [ ]

Page 17: AngularJS advanced project management

INDEX.HTML<html> <head> <% styles.forEach( function ( file ) %> <link rel="stylesheet" type="text/css" href="<%= file %>" /> <% ); %>

<% scripts.forEach( function ( file ) %> <script type="text/javascript" src="<%= file %>"></script> <% ); %> </head> <body>

</body></html>

Page 18: AngularJS advanced project management

ROUTINGui-routing

angular.module( 'ng­startup.home', ['ui.router.state']).config(function config( $stateProvider ) $stateProvider.state( 'home', url: '/home', views: "main": controller: 'HomeCtrl', templateUrl: 'home/home.tpl.html' , data: pageTitle: 'Home' );

).controller( 'HomeCtrl', function HomeController( $scope, $stateParams )

);

Page 19: AngularJS advanced project management

NGUTILS... Open Source Experience ...

: Remote source, API, cognito, firebase(TODO)..cr-remote

: Login and authenticationcr-auth

: Role and authorizationcr-acl

: Session manager, wrap of cr-session agular-localstorage

: Aws integration, Cognito is ready, SQS and Dynamoare WIP!

cr-aws

Follow this project and help us with feedback and PRs

Page 20: AngularJS advanced project management

THE END- -

ng-startupAngularJs Utils [ngUtils]