{"id":16765208,"url":"https://github.com/devlato/palo","last_synced_at":"2025-03-16T11:26:09.439Z","repository":{"id":19898329,"uuid":"23163337","full_name":"devlato/palo","owner":"devlato","description":"Bunch of old shitcode that pretends to structure an express.js app","archived":false,"fork":false,"pushed_at":"2016-01-31T22:56:09.000Z","size":74,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-22T23:26:54.950Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devlato.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-20T20:36:07.000Z","updated_at":"2022-09-21T17:29:02.000Z","dependencies_parsed_at":"2022-07-20T17:50:03.601Z","dependency_job_id":null,"html_url":"https://github.com/devlato/palo","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlato%2Fpalo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlato%2Fpalo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlato%2Fpalo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlato%2Fpalo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devlato","download_url":"https://codeload.github.com/devlato/palo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243859931,"owners_count":20359616,"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":[],"created_at":"2024-10-13T05:28:45.289Z","updated_at":"2025-03-16T11:26:09.415Z","avatar_url":"https://github.com/devlato.png","language":"JavaScript","readme":"# Palo -- ES6-powered Express + React + Webpack + Jade\n\nAll modern technologies in one bundle: \nECMAScript 6/7 via Babel + Express 4 + React + Webpack + FlightPlan + SASS + Redux + Jade\n\nTo run in dev mode, type ```npm run dev``` or ```pm2 start pm2.local.json``` to run in watch mode.\nTo build project, type ```npm run build```.\n\n## Installation\n\n1. Global dependencies: \n```\nnpm i -g \\\n    babel@6.3.26 \\\n    babel-cli@6.3.17 \\\n    gulp@3.9.0 \\\n    bower@1.7.1 \\\n    expect@1.13.4 \\\n    flightplan@0.6.8 \\\n    karma@0.13.15 \\\n    karma-jsdom-launcher@1.0.1 \\\n    karma-mocha@0.2.1 \\\n    karma-mocha-reporter@1.1.3 \\\n    karma-sourcemap-loader@0.3.6 \\\n    karma-webpack@1.7.0 \\\n    kexec@2.0.2 \\\n    mocha@2.3.4 \\\n    nock@3.6.0 \\\n    node-sass@3.4.2 \\\n    pm2@0.15.10 \\\n    rimraf@2.4.4 \\\n    react-addons-test-utils@0.14.3 \\\n    redux-mock-store@0.0.3 \\\n    webpack-dev-server@1.14.0\n```\n\n2. Dependencies\n```\nnpm i\n```\n\n## Features\n\n1. ES6 + ES2015 via Babel + ESlint\n2. React + helmet\n3. SASS and LESS support\n4. Autobuild all with Webpack\n5. Automated deploy\n6. PM2 support\n7. Redux\n8. Jade support from-the-box\n9. Sprite build from images directory\n10. Remote repository data fetch and Model+Service architectute, so you can attach any another ORM like Sequelize\n11. Comfortable project structure: \n```\n├── app\n│   ├── actions\n│   │   ├── ...\n│   │   └── // actions with redux\n│   ├── client.jsx                         // client-side entry point\n│   ├── components\n│   │   ├── common                         // common react components\n│   │   │   ├── authenticateComponent.jsx  // predefined component wrapper to check authentication status\n│   │   │   ├── ...\n│   │   │   └── // other common components\n│   │   ├── components                     // compoments like buttons etc.\n│   │   │   ├── ...\n│   │   │   └──  // included component wrapper to check authentication status\n│   │   └── pages\n│   │       ├── ...\n│   │       └── // page components which can be included as sub-components of routes in routes.jsx\n│   ├── constants\n│   │   ├── ...\n│   │   ├── actionTypes.js                 // predefined action types for redux\n│   │   └── // other constants\n│   ├── createDevToolsWindow.js            // script to show devtools with stack traces etc.\n│   ├── elements\n│   │   ├── ...\n│   │   ├── Header.jsx                     // predefined script to render html head properly with helmet etc.\n│   │   └── // other constants\n│   ├── helmconfig.js                      // helmet config\n│   ├── images\n│   │   ├── favicon.png                    // base favicon\n│   │   └── favicons\n│   │       ├── apple-icon-152x152.png     // apple touch icon\n│   │       ├── chrome-icon-192x192.png    // chrome icon\n│   │       ├── favicon-16x16.png          // basic favicon\n│   │       ├── ms-icon-144x144.png        // msie icon\n│   │       ├── ...\n│   │       └── // page components which can be included as sub-components of routes in routes.jsx\n│   ├── reducers\n│   │   ├── ...\n│   │   ├── index.js                       // reducer loader\n│   │   └── user.js                        // predefined user reducer\n│   │   └── // other reducers\n│   ├── routes.jsx                         // client-side router configuration\n│   ├── scss                               // preferred SCSS structure is similar to components dir structure\n│   │   ├── common\n│   │   │   ├── helpers.scss\n│   │   │   ├── main.scss\n│   │   │   ├── mixins.scss\n│   │   │   └── settings.scss\n│   │   ├── components\n│   │   │   ├── _layout.scss\n│   │   │   ├── _login.scss\n│   │   │   └── _logout.scss\n│   │   ├── pages\n│   │   │   └── _profile.scss\n│   │   └── sprites\n│   │       ├── ...\n│   │       └── // generated sprite styles\n│   ├── server.jsx                         // entry point to server-side rendeting script\n│   ├── sprites\n│   │   ├── ...\n│   │   └── // generated sprite images\n│   ├── store\n│   │   └── configureStore.js\n│   └── utils\n│       ├── classnames.js\n│       └── immutableHelpers.js\n├── package.json\n├── pm2.development.json                   // pm2 configuration in development mode\n├── pm2.local.json                         // pm2 configuration in development mode with file watch\n├── pm2.production.json                    // pm2 configuration in production mode\n├── public\n│   └── assets\n│   │   ├── ...\n│   │   └── // webpack generated output\n├── runtime\n│   └── logs\n│       ├── stderr.log                     // application logs stdout output\n│       └── stdout.log                     // application logs stderr output\n├── server\n│   ├── app.js                             // server entry point\n│   ├── configuration\n│   │   ├── config.js                      // server common configuration\n│   │   ├── development.js                 // server enviroment-based configuration\n│   │   ├── production.js                  // server enviroment-based configuration\n│   │   └── local.js                       // server local configuration (unneccessary)\n│   ├── controllers\n│   │   ├── EntryPointController.js        // predefined client-side html entry point generator\n│   │   ├── ServerStatusController.js      // server statuc controller (to show uptime, release version etc.)\n│   │   ├── SessionController.js           // login/logout etc.\n│   │   ├── SingleUserController.js        // single user controller\n│   │   └── UserCollectionController.js    // user collection controller\n│   ├── core\n│   │   ├── base\n│   │   │   ├── Component.js\n│   │   │   ├── Controller.js\n│   │   │   ├── Exception.js\n│   │   │   ├── Model.js\n│   │   │   └── Service.js\n│   │   ├── bootstrap.js\n│   │   ├── components\n│   │   │   ├── Pager.js\n│   │   │   └── RemoteRequest.js\n│   │   ├── constants\n│   │   │   ├── index.js\n│   │   │   └── paths.js                   // framework files locations, so to change where some files are placed you can set it here\n│   │   ├── enumerations\n│   │   │   ├── Environments.js\n│   │   │   ├── HttpMethods.js\n│   │   │   ├── PagerSortDirections.js\n│   │   │   └── ServerParameters.js\n│   │   ├── exceptions\n│   │   │   ├── ComponentAutowireException.js\n│   │   │   ├── CoreException.js\n│   │   │   ├── HttpNotFoundException.js\n│   │   │   ├── NotImplementedMethodException.js\n│   │   │   └── SessionException.js\n│   │   └── skeleton-config.js\n│   ├── enumerations\n│   │   └── pager\n│   ├── exceptions\n│   │   └── UserNotFoundException.js\n│   ├── middlewares                        // predefined middlewares\n│   │   ├── after\n│   │   │   └── requestException.js\n│   │   └── before\n│   │       ├── jsonRequest.js\n│   │       ├── passport.js\n│   │       ├── pureSend.js\n│   │       ├── requestTime.js\n│   │       ├── safeRequest.js\n│   │       ├── serveStatic.js\n│   │       ├── session.js\n│   │       ├── webpackDev.js\n│   │       └── webpackHot.js\n│   ├── models\n│   │   └── User.js                        // predefined remote repository model\n│   ├── runtime\n│   ├── services\n│   │   └── UserService.js                 // predefined user service\n│   └── views\n│       └── index.jade                     // client-side entry point html template\n└── webpack\n    ├── settings.js                        // webpack common environment-agnostic settings\n    ├── webpack.config.development.js      // webpack + hot reload config\n    └── webpack.config.production.js       // webpack production config\n```\n\n## TODO \n\n1. Implement Flightplan.js deployment script (restore) to deploy via ```npm run deploy:target``` ot via ```fly target```.\n2. Refactor configuration (divide config declaration from data instantiation)\n3. Add support to load middleware from node_modules without compatibility wrapper\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlato%2Fpalo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevlato%2Fpalo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlato%2Fpalo/lists"}