{"id":15011905,"url":"https://github.com/emirpasic/qam","last_synced_at":"2025-04-09T19:12:39.082Z","repository":{"id":18419760,"uuid":"84251713","full_name":"emirpasic/qam","owner":"emirpasic","description":"Node.js Web Application Boilerplate","archived":false,"fork":false,"pushed_at":"2022-12-06T23:21:30.000Z","size":489,"stargazers_count":6,"open_issues_count":8,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-23T21:04:23.525Z","etag":null,"topics":["es6","express","less","node","qam","webframework","website"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emirpasic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-07T22:17:03.000Z","updated_at":"2022-02-16T21:33:41.000Z","dependencies_parsed_at":"2023-01-11T20:28:59.937Z","dependency_job_id":null,"html_url":"https://github.com/emirpasic/qam","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/emirpasic%2Fqam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emirpasic%2Fqam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emirpasic%2Fqam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emirpasic%2Fqam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emirpasic","download_url":"https://codeload.github.com/emirpasic/qam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247648977,"owners_count":20972945,"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":["es6","express","less","node","qam","webframework","website"],"created_at":"2024-09-24T19:41:52.551Z","updated_at":"2025-04-09T19:12:39.060Z","avatar_url":"https://github.com/emirpasic.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![qam logo](https://cloud.githubusercontent.com/assets/3115942/23819499/7e6e0f86-0607-11e7-9b7e-64649bf1ee3c.png)\n\nNode.js Web Application Boilerplate.\n\nQuick-start your backend and frontend with this boilerplate.\n\n## Features\n\n- Start the Node.js express server in single process or multi process mode\n- Compile and bundle frontend Javascript (ECMAScript 6)\n- Compile and bundle frontend CSS from LESS\n- Logging\n- Configurations\n- Error handling\n- CORS\n- Automatic server restart and compilations during development\n\n## Getting started\n\n- Install [Node.js](https://nodejs.org/en/) v6\n- Install yarn: ` npm install -g yarn `\n- Install dependencies: ` yarn `\n- Install gulp: ` npm install -g gulp `\n\n## Running in development\n\n- From shell: ` NODE_ENV=local gulp `\n- From WebStorm follow [these settings](https://cloud.githubusercontent.com/assets/3115942/23781962/105b8408-0551-11e7-8037-9fbbf348d73d.png)\n\n## Running in production\n\n- Compile your assets: ` gulp jsx:compile \u0026\u0026 gulp less:compile `\n- Start server: ` NODE_ENV=production node app.js `\n\n## Directory structure\n\n- **assets** *private assets*\n  - **jsx** *frontend javascript that will be compiled*\n  - **less** *less files*\n- **config** *configurations*\n  - **config.js** *main configuration file*\n- **middleware** *express middleware*\n- **public** *public assets*\n  - **css** *compiled css files*\n  - **js** *compiled frontend javascript*\n- **routes** *all routes*\n  - **routes.js** *entry point for all routes*\n- **util** *utility and helper functions*\n- **views** *ejs files and templates*\n- **app.js** *entry point of the application server*\n- **gulpfile.js** *various gulp tasks*\n\n## Technology stack (reasoning)\n\n- [x] Node.js v6 (fast and battle-tested process based async architecture, ECMAScript 6)\n- [x] Server side ECMAScript 6 (arrow functions, classes, template strings, spread, etc.)\n- [x] yarn as packaging manager (faster and safer than npm and removes the need for shrinkwrap)\n- [x] Express as web application framework (popular, fast, unopinionated, minimalist)\n- [x] Node.js native cluster (more processes for more throughput)\n- [x] Logging with winston and winston-express\n- [x] Configurations simply though Javascript\n- [x] Routing natively with Express.Router (simple, thus fast)\n- [x] EJS for templates\n- [x] LESS for CSS (less is more)\n- [x] Partial templates with EJS (simple and no magic from using other libraries)\n- [x] Frontend side Javascript (ECMAScript 6) compilation and injection with babel and browserify\n- [x] Watchers for automatic frontend Javascript builds in development\n- [x] Watchers for automatic LESS compilations in development\n- [x] Watchers for automatic server restarts in development with nodemon\n- [ ] Caching (Nginx reverse proxy cache, S3, Memcached or files)\n- [ ] ESLint (linting for better code readability)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femirpasic%2Fqam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femirpasic%2Fqam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femirpasic%2Fqam/lists"}