{"id":18266798,"url":"https://github.com/mrdav30/meancore","last_synced_at":"2025-09-04T05:38:24.332Z","repository":{"id":36505773,"uuid":"171361947","full_name":"mrdav30/MEANcore","owner":"mrdav30","description":"MEANcore - Open Source MEAN stack Boiler Plate","archived":false,"fork":false,"pushed_at":"2024-03-27T04:26:33.000Z","size":3756,"stargazers_count":14,"open_issues_count":45,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-03-27T05:32:52.010Z","etag":null,"topics":["ag-grid","angular","bootstrap5","es6","expressjs","javascript","mean","mongodb","mongoose","nodejs","passport","puppeteer","typescript"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrdav30.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.MD","funding":null,"license":"LICENSE.MD","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-02-18T21:56:36.000Z","updated_at":"2024-04-14T21:22:16.285Z","dependencies_parsed_at":"2023-12-20T18:25:14.932Z","dependency_job_id":"09a70d2e-a412-4672-a70a-2e086f7dc649","html_url":"https://github.com/mrdav30/MEANcore","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrdav30%2FMEANcore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrdav30%2FMEANcore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrdav30%2FMEANcore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrdav30%2FMEANcore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrdav30","download_url":"https://codeload.github.com/mrdav30/MEANcore/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247260213,"owners_count":20909957,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ag-grid","angular","bootstrap5","es6","expressjs","javascript","mean","mongodb","mongoose","nodejs","passport","puppeteer","typescript"],"created_at":"2024-11-05T11:24:55.906Z","updated_at":"2025-04-04T22:30:29.999Z","avatar_url":"https://github.com/mrdav30.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![MEANcore Logo](https://github.com/mrdav30/MEANcore/blob/master/modules/core/client/assets/images/logo.png) MEANcore](https://github.com/mrdav30/MEANcore) \n\n[![Gitter](https://img.shields.io/gitter/room/mrdav30/MEANcore)](https://gitter.im/MEANcore/community)\n[![depencies status](https://img.shields.io/david/mrdav30/MEANcore)](https://david-dm.org/mrdav30/MEANcore)\n[![devDependencies Status](https://img.shields.io/david/dev/mrdav30/MEANcore)](https://david-dm.org/mrdav30/MEANcore?type=dev)\n[![Known Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/mrdav30/MEANcore)](https://snyk.io/test/github/mrdav30/MEANcore?targetFile=package.json)\n# MEAN Stack Starter Kit\n\nMEANcore is an open-source boilerplate solution based on the MEAN stack and provides a solid starting point for [MongoDB](http://www.mongodb.org/), [Node.js](http://www.nodejs.org/), [Express](http://expressjs.com/), and [Angular](https://angular.io/) based applications. This project includes modern tools and workflow based on [angular-cli](https://github.com/angular/angular-cli), best practices from the community, a scalable base template and a good learning base.\n\n### Benefits\n\n- Quickstart a project in seconds and focus on features, not on frameworks or tools\n\n- Industrial-grade tools, ready for usage in a continuous integration environment and DevOps\n\n- Scalable architecture with base app template including example components, services and tests\n\n- Module based development for both client and server\n\n## Before You Begin\nBefore you begin, it's recommend you read about the basic building blocks that assemble a MEAN stack application:\n* MongoDB - Go through [MongoDB Official Website](https://www.mongodb.com/) and proceed to their [Official Manual](http://docs.mongodb.org/manual/), which should help you understand NoSQL and MongoDB better.\n* Express - The best way to understand express is through its [Official Website](http://expressjs.com/), which has a [Getting Started](http://expressjs.com/starter/installing.html) guide, as well as an [ExpressJS](http://expressjs.com/en/guide/routing.html) guide for general express topics. You can also go through this [StackOverflow Thread](http://stackoverflow.com/questions/8144214/learning-express-for-node-js) for more resources.\n* Angular - Angular's [Official Website](https://angular.io/) is a great starting point.\n* Node.js - Start by going through [Node.js Official Website](http://nodejs.org/) and this [StackOverflow Thread](http://stackoverflow.com/questions/2353818/how-do-i-get-started-with-node-js), which should get you going with the Node.js platform in no time.\n\nCheckout our blog [Techievor](https://techievor.com) built on meancore for a full rundown on how to setup the MEAN stack with MEANcore:\n* [Windows](https://techievor.com/blog/post/2019/02/28/how-to-install-the-mean-stack-on-windows)\n* [CentOS](https://techievor.com/blog/post/2019/03/03/how-to-install-the-mean-stack-on-centos)\n\n## Prerequisites\nMake sure you have installed all of the following prerequisites on your development machine:\n* Git - [Download \u0026 Install Git](https://git-scm.com/downloads). OSX and Linux machines typically have this already installed.\n* Node.js - [Download \u0026 Install Node.js](https://nodejs.org/en/download/) and the npm package manager. If you encounter any problems, you can also use this [GitHub Gist](https://gist.github.com/isaacs/579814) to install Node.js.  This version of MEANcore requires at minimum version \u003e=14.0.0 of Node.js, v14.15.0 being the recommended.\n* MongoDB - [Download \u0026 Install MongoDB](http://www.mongodb.org/downloads), and make sure it's running on the default port (27017). This version of MEANcore requires at minimum version \u003e=4.2, v4.2.15 being the recommended.\n\n# Getting Started\n\n1. Go to project folder and create a .env file to setup your environment\n```\nNODE_ENV='development'\nPRODUCTION=\nHTTP_PROXY=\n\nMONGO_SEED_LOG_RESULTS=true\n\nGOOGLE_ANALYTICS_ID=''\nGOOGLE_CLIENT_EMAIL=''\nGOOGLE_PRIVATE_KEY=\"\"\nGOOGLE_VIEW_ID=\nRECAPTCHA_SECRET_KEY=''\nRECAPTCHA_SITE_KEY=''\n\nMAILER_FROM='support@meancore.com'\nMAILER_SERVICE_PROVIDER=\nMAILER_HOST='smtp.ethereal.email'\nMAILER_PORT=587\nMAILER_USER='username'\nMAILER_SECRET='pass'\nMAILER_TEST=true\n```\n\n2. Setup link-package:\n```bash\nnpm run init\n```\n This command will setup git hooks and preemptively bundle all package.json files located under the modules directory.\n\n3. Next install dependencies:\n ```bash\n npm install\n ```\n\n4. Run the MongoDB Seed (Optional)\nTo have the default menu feature(s), role(s), and/or user account(s) at runtime:\n```bash\nnpm run seed\n```\nThis will try to seed the features, roles, and users based on the defined NODE_ENV in your env config. You have to copy the user passwords from the console and store it somewhere safe.\n\n5. Running with TLS (Optional)\nThe application will start by default with the secuire configuration (SSL mode) turned off and listen on port 3000.  To run your application in a secure manner, you'll need to use OpenSSL and generate a set of self-signed certificates.  Unix-based users can use the following command:\n```bash\nnpm run generate-ssl-certs\n```\nWindows users can follow the instructions found [here](https://support.citrix.com/article/CTX128656).  After you've generated the key and certificate, ensure they are placed in the config/sslcerts folder.\n\n6. Then launch development server, and open `localhost:4200` in your browser:\n ```bash\n npm run start:dev\n ```\n\n# Running in Production\n\nTo run MEANcore with production environment settings, you must set the following env variables:\n```\nNODE_ENV='production'\nPRODUCTION=true\n```\n\nTo enable/disable SSL mode in a production environment, set the HOST_SECURE variable in your env config.\n\nExplore config/env/production.js for additional production environment configuration options.\n\n# Project Structure\n\n```\nconfig/                      configuration for express\ndist/                        compiled bundled client version\nmodules/**                   contains various modules that can be bundled together\n|- client/                      project source code for client\n|  |- app/                      app components\n|  |  |- app.component.*        app root component (shell)\n|  |  |- app.module.ts          app root module definition\n|  |  |- app-routing.module.ts  app routes\n|  |- assets/                   app assets (images, fonts, sounds...)\n|  |- environments/             values for various build environments\n|  |  features/                 additional modules and components\n|  |- theme/                    app global scss variables and theme\n|  |- index.html                html entry point\n|  |- main.scss                 global style entry point\n|  |- main.ts                   app entry point\n|  |- polyfills.ts              polyfills needed by Angular\n|  +- test.ts                   unit tests entry point\n|- e2e/                         end-to-end tests\n|- server/                      project source code for server\nproject/                         bundled client modules\nshared_modules/              custom modules that are shared between the client and server\ntools/                       scripts for configuration and managing the application\n|- bundle-modules.js         bundles all module's client folder under project for ng build\n|- bundle-packages.js        bundles all module's packages into a single file in project root\n|- generate-sitemap.js       generates a sitemap.xml with all routes in project\n|- generate-ssl-certs.sh     generate self-signed certs for dev testing\n|- init-core.js              creates npm \u0026 git env vars for git hooks\n|- link-packages.js          replaces npm install/uninstall to keep all module packages in sync\n|- seed-db.js                seeds the db with default configuration based on config\n|- set-env.ts                run to configure environment configuration based on process.env\n|- unbundle-packages.js      reverse of bundle-packages\nreports/                     test and coverage reports\n.env                         process.env variable configuration\nproxy.conf.js                backend proxy configuration\nserver.js                    script to launch express\n```\n\n# Main Tasks\n\nTask automation is based on [NPM scripts](https://docs.npmjs.com/misc/scripts).\n\nTasks                         | Description\n------------------------------|---------------------------------------------------------------------------------------\nnpm run init                  | Creates npm \u0026 git environment variables for git hooks used for link-packages\nnpm run bundle:packages       | Bundles all packages under modules directory into single file used by root\nnpm run unbundle:packages     | Reverses bundle:packages\nnpm run link:install          | Replaces npm install; used to keep linked module packages in sync\nnpm run link:uninstall        | Replaces npm uninstall; used to keep linked module packages in sync\nnpm run bundle:modules        | Bundles all module's client folder into project directory for ng build\nnpm run watch:dev             | Watches each module client directory for changes and rebundles into project folder for ng to pick up\nnpm run build:dev             | Lint code and build app for development in `dist/` folder\nnpm run build:prod            | Lint code and build app for production in `dist/` folder\nnpm run client:dev            | Run development ng server on `http://localhost:4200/` only\nnpm run server:dev            | Run development express server only on `http://localhost:3000/`\nnpm run server:prod           | Run production express server only\nnpm run start:dev             | Builds client and runs development ng server on `http://localhost:4200/` using proxy config for express endpoints to `http://localhost:3000/`\nnpm run start:prod            | Builds client for prod and runs production express server\nnpm run test:client           | Lint code and run unit tests once for continuous integration\nnpm run lint:client           | Lint client code\nnpm run lint:server           | Lint server code\nnpm run e2e                   | Run e2e tests using [Protractor](http://www.protractortest.org)\nnpm run generate-ssl-certs    | Generates self-signed certificates on Unix-based systems using OpenSSL\nnpm run seed                  | Seeds the database with defaults based on defined configuration\n\n## Link Packages\nThe follow parameters are used with link:install \u0026 link:uninstall\n```\nparms:                     \n  |--pkg={name of npm package} \n  |--type={type of dependency: blank or dependencies; dev or devDependencies} \n  |--mod={target mod; can leave blank for core}\n```\n\n## Development Server\n\nRun `npm run start:dev` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change\nany of the source files.\nYou should not use `ng serve` directly, as it does not use the backend express configuration.\n\n## Code Scaffolding\n\nRun `npm run generate -- component \u003cname\u003e` to generate a new component. You can also use\n`npm run generate -- directive|pipe|service|class|module`.\n\nIf you have installed [angular-cli](https://github.com/angular/angular-cli) globally with `npm install -g @angular/cli`,\nyou can also use the command `ng generate` directly.\n\n## Running Unit Tests\n\nRun `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).\n\n## Running End-to-End Tests\n\nRun `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).\n\n## Further Help\n\nTasks are mostly based on the `angular-cli` tool. Use `ng help` to get more help or go check out the\n[Angular-CLI README](https://github.com/angular/angular-cli).\n\n# What's In The Box\n\nThe app template is based on [HTML5](http://whatwg.org/html), [TypeScript](http://www.typescriptlang.org) and\n[Sass](http://sass-lang.com).\n\n#### Tools\n\nDevelopment, build and quality processes are based on [angular-cli](https://github.com/angular/angular-cli) and\n[NPM scripts](https://docs.npmjs.com/misc/scripts), which includes:\n\n- Optimized build and bundling process with [Webpack](https://webpack.github.io)\n- Cross-browser CSS with [autoprefixer](https://github.com/postcss/autoprefixer) and\n  [browserslist](https://github.com/ai/browserslist)\n- Asset revisioning for [better cache management](https://webpack.github.io/docs/long-term-caching.html)\n- Server-side rendering for web-crawlers using [Puppeteer](https://github.com/GoogleChrome/puppeteer)\n- Unit tests using [Jasmine](http://jasmine.github.io) and [Karma](https://karma-runner.github.io)\n- End-to-end tests using [Protractor](https://github.com/angular/protractor)\n- Static code analysis: [ESLint](https://github.com/eslint/eslint), [Angular-ESLint](https://github.com/angular-eslint/angular-eslint), [Stylelint](http://stylelint.io) and [HTMLHint](http://htmlhint.com/)\n\n#### Libraries\n\n- [Mongoose.js](https://mongoosejs.com/)\n- [Express.js](https://expressjs.com/)\n- [Angular](https://angular.io)\n- [Node.js](https://nodejs.org/en/)\n- [Ag-Grid](https://www.ag-grid.com/)\n- [Font Awesome](http://fontawesome.io)\n- [NgBootstrap](https://ng-bootstrap.github.io/#/home)\n- [Bootstrap](https://getbootstrap.com/docs/5.0/getting-started/introduction/)\n- [RxJS](http://reactivex.io/rxjs)\n- [Moment.js](https://momentjs.com/)\n- [Lodash](https://lodash.com)\n- [Async](https://caolan.github.io/async/)\n- [Passport.js](http://www.passportjs.org/)\n- [Puppeteer](https://github.com/GoogleChrome/puppeteer)\n- [Jimp](https://github.com/oliver-moran/jimp)\n- [PngQuant](https://pngquant.org/)\n\n## Contributing\nPull requests are welcome from the community! Just be sure to read the [contributing](https://github.com/mrdav30/MEANcore/blob/master/CONTRIBUTING.MD) doc to get started.\n\n## Credits\nSpecial thanks to the [MEAN.JS](https://github.com/meanjs/mean) team for the hard work they put into their project.  I used their base for many projects over the years and learned a lot from what they accomplished.\n\n# License\n\n[License](https://github.com/mrdav30/MEANcore/blob/master/LICENSE.MD)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrdav30%2Fmeancore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrdav30%2Fmeancore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrdav30%2Fmeancore/lists"}