Giter VIP home page Giter VIP logo

greatvivek11 / angular-material-starter-template Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sardapv/angular-material-starter-template

0.0 0.0 0.0 1.85 MB

๐Ÿ„ Angular 12 boilerplate that comes with Material-UI, Tailwind, Purgecss, Jest & Cypress Support, Optimal project structure, Interceptor with already some code, sourcemap analyzer tools, all pre-configured and much more...

Home Page: https://pranavsarda.hashnode.dev/simpler-boilerplate-for-your-next-angular-project

License: MIT License

JavaScript 22.05% TypeScript 62.71% HTML 5.54% SCSS 9.70%

angular-material-starter-template's Introduction

angular-material-starter-template ๐Ÿ„

All Contributors

Lint-Prettier-Prettier:verify-Tests-CypressTests-Build-Purgecss-Deploy GitHub GitHub release (latest by date)

Angular materialUI TailwindCSS Cypress Jest Angular_lint PurgeCSS SourcemapExplorer WebpackBundleAnalyzer

logo

This boilerplate comes with bunch of preconfigured stuffs and best practises to help you kickstart your project easier & quicker...

If you do like this project, do leave a ๐ŸŒŸ ! ๐Ÿ˜Š

Sample Demo ๐Ÿš€ (only shows that Tailwind, Material components are integrated)

How to get started?

make sure you have node and npm installed on your system before running below commands

  • Run npx ng-new-app your-app-name
    (if you don't have npx, Run - sudo npm i ng-new-app -g then ng-new-app your-app-name)
  • Read instructions carefully after its successful, refer readme if any doubt.
  • Runng serve

What does it offer?

Well, you might have noticed badges on top ๐Ÿ˜‰, but keep on reading for detailed summary ๐Ÿท

  • Project Structure inspired form Rik De Vos's blog - tl:dr 3 main modules

    • CoreModule - only to be imported in Appmodule

      • Auth Guard with basic check

      • Basic Auth service (Refer model in model folder & change accordingly)

        • login
        • refreshtoken
        • storetoken
        • getTokens
        • logout
      • A broadcaster service included which listens to your key:value pair of events anywhere in app. Here is how to use to share data across modules,components

        • constructor(private _broadcatser: BroadcasterService) {}
        • to broadcast and listen anywhere

          this._broadcatser.broadcast('mykey', 'myvalue');
          
          // to listen inside any component inject service there and do simply below
          
          /* use this service with takeUntil from rxJS and local Subject &
           * destroy in OnDestroy to prevent memory leaks
           */
          
          this._broadcatser.listen('mykey').subscribe({
              next:(data) => console.log(data) // your broadcasted value
            })
          }
    • FeatureModule - all lazyloaded pages/modules goes here

      • before-login modules
      • after-login modules
    • SharedModule - folder with bunch of SCAM (Single Component Angular Module) modules only to be shared globally and imported in feature modules

      • Can have customcomponents, pipes, directives as SCAM pattern (sample scam component as independent module included: recommended rather than creating big shared module)
      • CustomPipes, Directives, Components, Models, Validators folders to organise
      • index.ts provided for shared.module.ts (to organise imports only for items to include inshared.module.ts)
    • annotations @shared, @feature, @core added in tsconfig.json for easy import

  • HTTP Request Interceptor ๐Ÿ‘€๏ธ

    • in service.ts use endpoints without baseurl as e.g '/action/endpoint'
    • request cloner
    • header modifier
    • success and error handler
    • refresh token handler (inspired from Rich Franzmeier's blog)
  • Tailwind and post-build PurgeCSS Configuration ๐Ÿ˜

    • Tailwind configuration with font, theme and other properties (refertailwind.config.js)
    • Note: Tailwind's own purgecss only takes care of tailwind classes, for overall application, post-build purgecss is best (I will write an article explaining why)
  • Angular Material Component & CDK integrated ๐Ÿ˜Ž

    • Material theme starter pack included, just change colors,font inside_mat_*.scss files
  • Superpowerd with Jest for unit testing and Cypress for e2e testing (instead of karma and protractor). Special Thanks to contribution by @sjetha for this and eslint integration.

  • ESLint integrated as recommended by Angular

  • Prettier configured (with resolved conflicts between ESLint) - no VS extension being used by team? run command to check if follows rules/ run prettier on all in one go! Thanks to @deekshithrajbasa for this โœŒ๐Ÿป

  • Global route-loader progressbar on top like github, using ngx-loading-bar package

  • Self-XSS warning for use of console on prod build. Inspect & Check console here

  • Icons and Typography (CDN links - index.html) ๐Ÿค“

    • Angular Material Icons added
    • Default Poppins, OpenSans font integrated
  • pollyfills (for safari) 'web-animations-js' added for animations support inside @Component decorator

  • Local source analyzing tools webpack-bundle-analyzer and source-map-explorer, Local prod-build deploy and test with purgecss

There is a command for everything you need! ๐Ÿ’ƒ

command What it does? Thanks to Plugin
npm start Starts the server in dev mode ๐Ÿคท๐Ÿปโ€โ™‚๏ธ
npm run lint Runs ESLint on project
npm run prettier Runs prettier on entire src folder
npm run prettier:verify Runs prettier-check and throws error if fails
npm run final-build Takes prod build and runs PurgeCSS script
npm run prod-test Takes a final-build deployes on local server and give you url to run serve
npm run purgecss Run PurgeCSS job to reduced style.css size into few kbs purgecss
npm run source Takes a final-build and opens up source-map-explorer view source-map-explorer
npm run webpack-analyze Takes a final-build and opens up webpack-bundle-analyzer view webpack-bundle-analyzer
npm run test Runs all the jests test cases @briebug/jest-schematic
npm run e2e Opens up Cypress View to run your e2e tests in browser @briebug/cypress-schematic
npm run e2e:ci Runs cypress tests in console (used for CI/CD) @briebug/cypress-schematic

Contributors โœจ

Thanks goes to these wonderful people (emoji key):


Pranav Sarda

๐Ÿ’ป ๐Ÿ“ ๐Ÿ“– ๐Ÿ’ก ๐ŸŽจ

Shafiq Jetha

โš ๏ธ ๐Ÿ’ป

Deekshith Raj Basa

๐Ÿ’ป ๐Ÿ’ก

This project follows the all-contributors specification. Contributions of any kind welcome!

angular-material-starter-template's People

Contributors

allcontributors[bot] avatar deekshithrajbasa avatar fasterinnerlooper avatar imgbotapp avatar sardapv 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.