This boilerplate comes with bunch of preconfigured stuffs and best practises to help you kickstart your project easier & quicker...
If you like this project, do leave a π ! π
Sample Demo π (only shows that Tailwind, Material components are integrated)
Make sure you have node.js latest stable & @angular-cli installed on your system before running below commands
npx ng-new-app your-app-name
if you don't have npx, Run -
sudo npm i ng-new-app -g
and
ng-new-app your-app-name
npm start
and start coding πKeep 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)
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
modulesafter-login
modulesSharedModule - folder with bunch of SCAM (Single Component Angular Module) modules only to be shared globally and imported in feature modules
components, pipes, directives
as SCAM pattern (sample scam component as independent module included: recommended rather than creating big shared module)Pipes, Directives, Components, Models, Validators
folders to organiseshared.module.ts
)annotations @shared
, @feature
, @core
added in tsconfig.json
for easy import
HTTP Request Interceptor ποΈ
Tailwind and post-build PurgeCSS Configuration
tailwind.config.js
)Angular Material Component & CDK integrated
_mat_*.scss
filesSuperpowerd 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)
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
[newβ¨] Pre-commit husky hook, run whatever command you want before git commit. By default prettifying changed/staged files and running lint is enabled, you can comment out run tests too. Refer .husky/pre-commit file for this operations. This helps you maintian same quality across team workspaces.
[newβ¨] Test-coverage report and its workflow (github action). Check index.html in generated coverage folder. Thanks to @sapatgit for adding this and @sjetha for improvising it with best solution.
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 prettier:staged |
Runs prettier on only staged (changed) files | |
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 test:coverage |
Runs all the jests test cases and generate coverage report | @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 |
Under auth-login-page branch
, there is a sample login page designed.
Looking for contributors to build signup, forgot password pages and integration with Firebase with a minimal configuration to change for any new project. PRs welcomeβπ». Look for project/issues tab.
Thanks goes to these wonderful people (emoji key):
Pranav Sarda π» π π π‘ π¨ |
Shafiq Jetha β οΈ π» π§ |
Deekshith Raj Basa π» π‘ |
Saptarshi Majumdar π π» |
This project follows the all-contributors specification. Contributions of any kind welcome!