All Projects → patrickmichalina → Fusebox Angular Universal Starter

patrickmichalina / Fusebox Angular Universal Starter

Licence: mit
Angular Universal seed project featuring Server-Side Rendering, @fuse-box bundling, material, firebase, Jest, Nightmare, and more

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Fusebox Angular Universal Starter

Angular Prest
pREST component for Angular
Stars: ✭ 16 (-87.88%)
Mutual labels:  angularjs, angular2, angular4, angular5
Coreui Free Bootstrap Admin Template
CoreUI is free bootstrap admin template
Stars: ✭ 11,038 (+8262.12%)
Mutual labels:  scss, angularjs, angular2, angular4
Angular2
Angular 2 Seed
Stars: ✭ 75 (-43.18%)
Mutual labels:  angularjs, angular2, angular4, angular5
Angular4-seed
Angular 4 Seed for Angular Forms
Stars: ✭ 37 (-71.97%)
Mutual labels:  angularjs, angular2, angular4, angular5
Angular5 Seed
Angular5 Seed for Application
Stars: ✭ 222 (+68.18%)
Mutual labels:  angularjs, angular2, angular4, angular5
Ngx Meta
Dynamic page title & meta tags utility for Angular (w/server-side rendering)
Stars: ✭ 331 (+150.76%)
Mutual labels:  seo, meta-tags, angular2, angular4
Angulartics2
Vendor-agnostic analytics for Angular2 applications.
Stars: ✭ 963 (+629.55%)
Mutual labels:  angular2, angular4, angular5
Angular Tree Component
A simple yet powerful tree component for Angular (>=2)
Stars: ✭ 1,031 (+681.06%)
Mutual labels:  angular2, angular4, angular5
Angular Admin Lte
AdminLte for Angular 2
Stars: ✭ 109 (-17.42%)
Mutual labels:  angular2, angular4, angular5
Drip Ionic3
「水滴打卡」App Open Source Code Base On Ionic V3 Framework
Stars: ✭ 74 (-43.94%)
Mutual labels:  angular2, angular4, angular5
Ngx Permissions
Permission and roles based access control for your angular(angular 2,4,5,6,7,9+) applications(AOT, lazy modules compatible
Stars: ✭ 749 (+467.42%)
Mutual labels:  angular2, angular4, angular5
Root Bootstrap 4 Admin Template With Angularjs Angular 2 Support
Root is Boostrap 4 Admin Template with Angular 2 and AngularJS support
Stars: ✭ 54 (-59.09%)
Mutual labels:  scss, angularjs, angular2
Aspnetcore Angular Universal
ASP.NET Core & Angular Universal advanced starter - PWA w/ server-side rendering for SEO, Bootstrap, i18n internationalization, TypeScript, unit testing, WebAPI REST setup, SignalR, Swagger docs, and more! By @TrilonIO
Stars: ✭ 1,455 (+1002.27%)
Mutual labels:  angular2, angular4, angular5
Nebular
💥 Customizable Angular UI Library based on Eva Design System 🌚✨Dark Mode
Stars: ✭ 7,368 (+5481.82%)
Mutual labels:  angular2, angular4, angular5
Ngautocomplete
Light-weight autocomplete component for Angular.
Stars: ✭ 52 (-60.61%)
Mutual labels:  angularjs, angular2, angular4
Material Dashboard Angular2
Material Dashboard Angular
Stars: ✭ 814 (+516.67%)
Mutual labels:  scss, angular2, angular4
Springbootangularhtml5
♨️ Spring Boot 2 + Angular 11 + HTML5 router mode + HTTP interceptor + Lazy loaded modules
Stars: ✭ 89 (-32.58%)
Mutual labels:  angular2, angular4, angular5
Ngx Papaparse
Papa Parse wrapper for Angular
Stars: ✭ 83 (-37.12%)
Mutual labels:  angular2, angular4, angular5
Ng2 Flatpickr
Angular 2+ wrapper for flatpickr (https://github.com/chmln/flatpickr)
Stars: ✭ 91 (-31.06%)
Mutual labels:  angular2, angular4, angular5
Clever Bootstrap 4 Admin Template With Angularjs Angular 2 Support
Clever is Boostrap 4 Admin Template with Angular 2 and AngularJS support
Stars: ✭ 98 (-25.76%)
Mutual labels:  scss, angularjs, angular2

This project is archived and an improved version has been moved to https://github.com/patrickmichalina/fusing-angular

Introduction

CircleCI codecov dependencies Status devDependencies Status Greenkeeper badge Angular Style Guide Fusebox-bundler

Provides an extremely fast seed project for the development of Angular Universal (isomorphic) projects. Check out the live app

Project Goals

This starter project is designed to get a basic application up and running with basic implementations of core features most applications need. It uses Firebase for the authentication and the database layers.

Note: Firebase doesn't have official support for Angular Universal at this time. However, we have implemented some of the basic features to render and transfer server state to the browser. Once an official support is released, we will use that.

Features

  • [x] Angular as the application framework
  • [x] Angular Material as the UI language and component library
  • [x] Angular Flex Layout for dynamic responsive layouts
  • [x] FuseBox as the TypeScript/JavaScript bundler
  • [x] Jest for unit and component testing
  • [x] Nightmare for UI testing
  • [x] Sparky as the task runner
  • [x] Fully typed build tools using TypeScript
  • [x] Production and development builds
  • [x] Manage your type definitions using @types
  • [x] Simple Heroku Deployment
  • [x] HttpStateTransfer for caching server responses on client boostrap (no flickering)
  • [x] CDN asset configuration
  • [x] Automatic sitemap generation
  • [x] SCSS support for professional grade CSS management
  • [x] Brotli compression with gzip fallback
  • [x] CircleCI unit testing support
  • [x] Full favicon icon generation for multiple devices derived from a single seed image
  • [x] SEO support for Title and Meta tags
  • [x] OG (Open Graph) tags for social sharing
  • [x] Simple Ad-Blocker detection service
  • [x] Vendor-agnostic analytics using angulartics2
  • [x] Generic token based Authentication service with JWT cookie support.
  • [x] Both Client and Server build tasks
  • [x] Hot Module Reloading for faster browser reloads during client development
  • [ ] Ahead-of-Time (AOT) compilation support
  • [x] angular-tslint-rules as configuration preset for TSLint and codelyzer.
  • [x] Automatic static file cache invalidation
  • [x] Lazy Loaded modules
  • [x] Analyze bundle sizes by using source-map-explorer
  • [x] Support for Angular Mobile Toolkit (Service Worker)
  • [x] Tree-Shaking for production builds

Built by AngularUniversal.com. For additional help please checkout our services

Quick Start

Note that we strongly recommend node >= v7.0.0 and npm >= 4.0.0.

To start the seed use:

$ git clone --depth 1 https://github.com/patrickmichalina/fusebox-angular-universal-starter
$ cd fusebox-angular-universal-starter

# Add Firebase Admin values to your project
# in a ".env" file for local deveopment
# in environment variables for other environments
See [Environment Variables](#environment-variables)

# install the project's dependencies
$ npm install

# start the Angular Universal server
$ npm start

# start the server while watching tests and updating app documentation
$ npm run start.deving

# start the Angular Universal server w/ AOT build step
$ npm run start.aot
# can also be called passing the parameter --aot
# npm start --aot

# start the application in Client only mode (not server driven), with HMR enabled
$ npm run start.spa

# start the server in production mode
$ npm run start.prod

Table of Contents

Bundling

Checkout how blazing fast bundling can be using FuseBox!

fuse-box

Testing

# single test run
$ npm test 

# single test with coverage results
$ npm run test.coverage

# continuous testing
$ npm run test.watch

# e2e testing (primarilly for CI builds)
$ npm run test.e2e.ci

# continuous e2e testing
$ npm run test.e2e.watch

jest

Configuration

Coming Soon

@Types

When you include a module that doesn't include typings, you can include external type definitions using the npm @types repo.

i.e, to have youtube api support, run this command in terminal:

npm i -D @types/youtube @types/gapi @types/gapi.youtube

Environment Variables

# it is important to set the following environmental variables on your CI server (examples below)
HOST : angular.patrickmichalina.com # the root origin of your application server
CI : true 

# for Heroku Builds
HEROKU : true # to build on heroku, ssl settings are setup using this flag
NPM_CONFIG_PRODUCTION : false # to download all depenedencies on Heroku, including devDependencies

# Firebase Admin SDK
FB_SERVICE_ACCOUNT_PRIVATE_KEY_ID: Some_Secret
FB_SERVICE_ACCOUNT_PRIVATE_KEY: Some_Secret
FB_AUTH_KEY: Some_Secret

File Structure

We use the component approach in our starter. This is the standard for developing Angular apps and a great way to ensure maintainable code

fusebox-angular-universal-starter/
 ├──.fusebox/                       * working folder for the js bundler
 ├──.vscode/                        * Visual Studio Code settings 
 ├──coverage/                       * stores recent reporting of test coverage
 ├──dist/                           * output files that represent the bundled application and its dependencies
 ├──node_modules/                   * project depdendencies
 |
 ├──src/
 |   ├──client/                     * client Angular code. (most your work should be done here)
 |   └──server/                     * server code
 |
 ├──tools/
 |   ├──config/
 |   |   ├──app.config.ts          * configuration interface for the web applications
 |   |   ├──build.config.ts        * configuration values for the build system
 |   |   ├──build.interfaces.ts    * configuration interfaces for the build system
 |   |   └──build.transformer.ts   * build system config transform helper
 |   |
 |   ├──env/
 |   |   ├──base.ts                * base app configuration 
 |   |   ├──dev.ts                 * dev app configuration
 |   |   ├──**.ts                  * arbitrary configuration called via the flag --env-config
 |   |   └──prod.ts                * production app configuration
 |   |
 |   ├──scripts/                   * misc. build helper scripts
 |   ├──tasks/                     * Sparky tasks
 |   ├──test/                      * testing system related configuration
 |   └──web/                       * static assets used for common web functions
 |
 ├──.gitignore                     * GIT settings
 ├──circl.yml                      * CirclCI configuration file
 ├──CODE_OF_CONDUCT.md             * standard code of conduct information
 ├──codecov.yml                    * codecov.io configuration file
 ├──CONTRIBUTING.md                * standard contributor information
 ├──fuse.ts                        * FuseBox entry point
 ├──LICENSE                        * software license
 ├──package-lock.json              * what npm uses to manage it's dependencies
 ├──package.json                   * what npm uses to manage it's dependencies
 ├──Procfile                       * Heroku deployment setting
 ├──README.md                      * project information
 ├──test-report.xml                * JUNIT test results
 ├──tsconfig-aot.json              * typescript config for AOT build using @angular-cli (ngc)
 └──tsconfig.json                  * typescript config

Change Log

You can follow the Angular change log here.

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].