All Projects β†’ Shyam-Chen β†’ Angular Starter

Shyam-Chen / Angular Starter

Licence: mit
πŸ“ A boilerplate for HTML5, Angular, Material, TypeScript, and ReactiveX. Angular 11 | Webpack 4 | Firebase | Hosting | Functions | Workbox | PostCSS | TSLint | Jest | Puppeteer | Headless Chrome | Testing | Unit | E2E | REST | GraphQL | Apollo | Lazy Loading | AoT Compilation | Modular

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Angular Starter

Vue Starter
🐩 A boilerplate for HTML5, Vue, Vue Router, i18n, Tailwind, Windi, Netlify, and Vite.
Stars: ✭ 120 (+81.82%)
Mutual labels:  reactivex, material
Rxswift Chinese Documentation
RxSwift δΈ­ζ–‡ζ–‡ζ‘£
Stars: ✭ 1,107 (+1577.27%)
Mutual labels:  reactivex
Materialette
Materialette - A material design color palette
Stars: ✭ 1,056 (+1500%)
Mutual labels:  material
Ct Material Kit Pro React Native
Material Kit PRO React Native is a fully coded app template built over Galio.io, React Native and Expo
Stars: ✭ 57 (-13.64%)
Mutual labels:  material
Materialfilepicker
Picking files since 2015
Stars: ✭ 1,056 (+1500%)
Mutual labels:  material
Youtube Play Icon
Material style morphing play-pause drawable for Android
Stars: ✭ 57 (-13.64%)
Mutual labels:  material
Flutter validation login form bloc pattern rxdart
[Functional reactive programming (FRP)]πŸ’§ πŸ’§ πŸ’§ [Pure RxDart] Validation login form by using the BLoC pattern with RxDart - A new Flutter project featuring a faked authentication interface to demonstrate validation. Implemented with BloC pattern.
Stars: ✭ 45 (-31.82%)
Mutual labels:  reactivex
Rnmaterial
Make Fun with RnMaterial on WordPress.
Stars: ✭ 64 (-3.03%)
Mutual labels:  material
Starter Kit
πŸ“¦ Angular 11+ starter kit for enterprise-grade projects
Stars: ✭ 1,102 (+1569.7%)
Mutual labels:  material
Dynamicdata
Reactive collections based on Rx.Net
Stars: ✭ 1,083 (+1540.91%)
Mutual labels:  reactivex
Paper Ripple
Material Design Ripple effect in pure JS & CSS.
Stars: ✭ 55 (-16.67%)
Mutual labels:  material
Particle
Home of the extension YouTube Plus that allows you to experience more on YouTube
Stars: ✭ 1,057 (+1501.52%)
Mutual labels:  material
Material About Library
Makes it easy to create beautiful about screens for your apps
Stars: ✭ 1,099 (+1565.15%)
Mutual labels:  material
Material Design Theme
🎨 A ex-theme for Discord according to Google's Material design Guidelines. Now moved to https://github.com/rauenzi/Nox
Stars: ✭ 50 (-24.24%)
Mutual labels:  material
Fiftyshadesof
An elegant context-care loading placeholder for Android
Stars: ✭ 1,110 (+1581.82%)
Mutual labels:  material
Viewtooltip
A fluent tooltip for Android
Stars: ✭ 1,029 (+1459.09%)
Mutual labels:  material
Materialdesigncolor
This project shows the color in material design
Stars: ✭ 55 (-16.67%)
Mutual labels:  material
Battery Meter View
πŸ”‹ Material design battery meter (i.e. level, state) view for Android
Stars: ✭ 57 (-13.64%)
Mutual labels:  material
Vue Openapi
OpenAPI viewer component for VueJS
Stars: ✭ 66 (+0%)
Mutual labels:  material
Material Vue Daterange Picker
a date-range-picker follows the Material Design spec powered by vue.js (alpha)
Stars: ✭ 64 (-3.03%)
Mutual labels:  material

Angular Starter

🐯 A boilerplate for Angular, Material, TypeScript, and ReactiveX.

Project Information
Live Demo Develop Demo Master Demo
Develop Branch Build Status Coverage Status
Master Branch Build Status Coverage Status
Npm Package dependencies Status devDependencies Status

Table of Contents

Getting Started

Follow steps to execute this boilerplate.

  1. Clone this boilerplate
$ git clone --depth 1 https://github.com/Shyam-Chen/Angular-Starter <PROJECT_NAME>
$ cd <PROJECT_NAME>
  1. Install dependencies
$ yarn install
  1. Start a local server
$ yarn serve
  1. Compile and bundle code
$ yarn build
  1. Check code quality
$ yarn lint
  1. Runs unit tests
$ yarn unit
  1. Runs end-to-end tests
$ yarn e2e

Key Features

This seed repository provides the following features:

Dockerization

Dockerize an application.

  1. Build and run the container in the background
$ docker-compose up -d <SERVICE>
  1. Run a command in a running container
$ docker-compose exec <SERVICE> <COMMAND>
  1. Remove the old container before creating the new one
$ docker-compose rm -fs
  1. Restart up the container in the background
$ docker-compose up -d --build <SERVICE>
  1. Push images to Docker Cloud
# .gitignore

  .DS_Store
  node_modules
  npm
  public
  functions
  coverage
+ dev.Dockerfile
+ stage.Dockerfile
+ prod.Dockerfile
  *.log
$ docker login
$ docker build -f tools/<dev|stage|prod>.Dockerfile -t <IMAGE_NAME>:<IMAGE_TAG> .

# checkout
$ docker images

$ docker tag <IMAGE_NAME>:<IMAGE_TAG> <DOCKER_ID_USER>/<IMAGE_NAME>:<IMAGE_TAG>
$ docker push <DOCKER_ID_USER>/<IMAGE_NAME>:<IMAGE_TAG>

# remove
$ docker rmi <REPOSITORY>:<TAG>
# or
$ docker rmi <IMAGE_ID>
  1. Pull images from Docker Cloud
# docker-compose.yml

  <dev|stage|prod>:
-   image: <dev|stage|prod>
-   build:
-     context: .
-     dockerfile: tools/<dev|stage|prod>.Dockerfile
+   image: <DOCKER_ID_USER>/<IMAGE_NAME>:<IMAGE_TAG>
    volumes:
      - yarn:/home/node/.cache/yarn
    tty: true

Configuration

Project environments

Change to your project.

// .firebaserc
{
  "projects": {
    "development": "<DEV_PROJECT_NAME>",
    "staging": "<STAGE_PROJECT_NAME>",
    "production": "<PROD_PROJECT_NAME>"
  }
}

Set an active project for working direct

$ yarn firebase use development

Default environments

Set your local environment variables. (use this.<ENV_NAME> = process.env.<ENV_NAME> || <LOCAL_ENV>;)

// env.js
function Environments() {
  this.NODE_ENV = process.env.NODE_ENV || 'development';

  this.PROJECT_NAME = process.env.PROJECT_NAME || '<PROJECT_NAME>';

  this.HOST_NAME = process.env.HOST_NAME || '0.0.0.0';

  this.SITE_PORT = process.env.SITE_PORT || 8000;
  this.SITE_URL = process.env.SITE_URL || `http://${this.HOST_NAME}:${this.SITE_PORT}`;

  this.FUNC_PORT = process.env.FUNC_PORT || 5000;
  this.FUNC_URL = process.env.FUNC_URL || `http://${this.HOST_NAME}:${this.FUNC_PORT}/${this.PROJECT_NAME}/us-central1`;

  this.APP_BASE = process.env.APP_BASE || '/';

  this.GOOGLE_ANALYTICS = process.env.GOOGLE_ANALYTICS || '<GOOGLE_ANALYTICS>';

  this.SENTRY_DSN = process.env.SENTRY_DSN || null;
  this.RENDERTRON_URL = process.env.RENDERTRON_URL || null;
}

Deployment environment

Set your deployment environment variables.

# tools/<dev|stage|prod>.Dockerfile

# envs --
ENV SITE_URL <SITE_URL>
ENV FUNC_URL <FUNC_URL>
# -- envs

CI environment

Add environment variables to the CircleCI build.

CODECOV_TOKEN
DOCKER_PASSWORD
DOCKER_USERNAME
FIREBASE_TOKEN

SEO friendly

Enable billing on your Firebase Platform and Google Cloud the project by switching to the Blaze plan.

Serve dynamic content for bots.

// firebase.json
    "rewrites": [
      {
        "source": "**",
-       "destination": "/index.html"
+       "function": "app"
      }
    ],

Deploy rendertron instance to Google App Engine.

$ git clone https://github.com/GoogleChrome/rendertron
$ cd rendertron
$ gcloud auth login
$ gcloud app deploy app.yaml --project <RENDERTRON_NAME>

Set your rendertron instance in deployment environment.

# tools/<dev|stage|prod>.Dockerfile

# envs --
ENV RENDERTRON_URL <RENDERTRON_URL>
# -- envs

Directory Structure

The structure follows the LIFT Guidelines.

.
β”œβ”€β”€ functions
β”‚   β”œβ”€β”€ index.js
β”‚   β”œβ”€β”€ package.json
β”‚   └── yarn.lock
β”œβ”€β”€ src
β”‚   β”œβ”€β”€ __tests__
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ _<THING>  -> app of private or protected things
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ assets  -> datas, fonts, images, medias, styles
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ core  -> core feature module
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ <FEATURE>  -> feature modules
β”‚   β”‚   β”œβ”€β”€ __tests__
β”‚   β”‚   β”‚   β”œβ”€β”€ <FEATURE>.component.spec.js
β”‚   β”‚   β”‚   └── <FEATURE>.e2e-spec.js
β”‚   β”‚   β”œβ”€β”€ _<THING>  -> feature of private or protected things
β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”œβ”€β”€ <FEATURE>.component.css
β”‚   β”‚   β”œβ”€β”€ <FEATURE>.component.html
β”‚   β”‚   β”œβ”€β”€ <FEATURE>.component.ts
β”‚   β”‚   └── <FEATURE>.module.ts
β”‚   β”œβ”€β”€ <GROUP>  -> module group
β”‚   β”‚   └── <FEATURE>  -> feature modules
β”‚   β”‚       β”œβ”€β”€ __tests__
β”‚   β”‚       β”‚   β”œβ”€β”€ <FEATURE>.component.spec.js
β”‚   β”‚       β”‚   └── <FEATURE>.e2e-spec.js
β”‚   β”‚       β”œβ”€β”€ _<THING>  -> feature of private or protected things
β”‚   β”‚       β”‚   └── ...
β”‚   β”‚       β”œβ”€β”€ <FEATURE>.component.css
β”‚   β”‚       β”œβ”€β”€ <FEATURE>.component.html
β”‚   β”‚       β”œβ”€β”€ <FEATURE>.component.ts
β”‚   β”‚       └── <FEATURE>.module.ts
β”‚   β”œβ”€β”€ shared  -> shared feature module
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ app-routing.module.ts
β”‚   β”œβ”€β”€ app.component.css
β”‚   β”œβ”€β”€ app.component.html
β”‚   β”œβ”€β”€ app.component.ts
β”‚   β”œβ”€β”€ app.module.ts
β”‚   β”œβ”€β”€ index.html
β”‚   └── main.ts
β”œβ”€β”€ tools
β”‚   └── ...
β”œβ”€β”€ .editorconfig
β”œβ”€β”€ .firebaserc
β”œβ”€β”€ .gitignore
β”œβ”€β”€ .postcssrc
β”œβ”€β”€ .stylelintrc
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ LICENSE
β”œβ”€β”€ README.md
β”œβ”€β”€ circle.yml
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ env.js
β”œβ”€β”€ firebase.json
β”œβ”€β”€ jest.config.js
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ tslint.json
β”œβ”€β”€ webpack.config.js
└── yarn.lock
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].