bundularjs is a framework, bundler and a static-site generator, all combined. Based on libx.js.
bundularjs Can allow you build webapps which are:
- Serverless - Zero maintenance of servers
- Static - All resources are compiled, built and bundled ahead of time
- Progressive - Crucial resources loaded immediately while other components are loaded when needed
- Slick - Jade/Pug engine is used to precompile neat declarative markdown into HTML
- Continuously Deployed - Changes are automatically deployed and served, based on the git branch
- Edge technology - Using Firebase to store and propagate changes to all viewer in real time, manage user authentication and serverless+microservices using Cloud Functions
- libx.js (npm) - Swiss army knife full of useful modules and helpers
- bundularjs (npm) - A prebuilt framework of script bundles, styles and configurations. Also serves as bundler (like Webpack), and dev env server.
- Firebase - Database, auth, Cloud Functions
- Netlify - CI/CD, hosting, pre-rendering, routing, DNS management, SSL
This project grabs statuses and information from LeasePilot's github repo and PivotalTracker.
The infrastructure used here is bundularjs & libx.js which provide a framework of predefined bundles, configs and heavily modified version of AngularJS (1.7) to make it progressive and modern. Also provides a handy workspace by using a specifically designed bundler and local server to generate static (pre-compiled) & bundled webapp.
The tools used, mainly Firebase & Netlify, allows the maintenance seamless and effortless by continue deployment, hosting, dns, and enhanced database & synchronization.
npm install --save bundularjs
Grab latest fuser.js:
curl -O -L https://raw.githubusercontent.com/Livshitz/bundularjs/master/tools/fuser.js
- Clone the repo and
cd
into the project folder npm install
to install dependencies for the webappnpm install -g firebase-tools
- Firebase:
- Create account in Firebase and grab your personal token by running
firebase login:ci
- Create new project and realtime-database
cp src/project-secrets-empty.json src/project-secrets.json
- Get your service account ('private key'), copy it's content to the file
src/project-secrets.json
- Create a private passphrase to secure your secrets file
export FUSER_SECRET_KEY=<your-secret>
- Lock your secrets file
node node_modules/bundularjs --secrets-lock
- Edit
src/project.json
file with relevant paths to your new Firebase project
- Create account in Firebase and grab your personal token by running
- Netlify (optional):
- Create new project and point to your cloned repo
Run local server: node fuser-client.js --secret=<?>
.
With api (local Firebase Cloud Functions): node fuser-client.js --secret=<?> --api
.
node fuser-client.js
- Build & run local frontend server with watch and hot-reloadnode fuser-client.js --build
- Build onlynode fuser-client.js --api
- Build & run local frontend server with local backend (cloud functions)node node_modules/bundularjs --api-run
- Run local backend onlynode fuser-client.js --env=prod
- Run local frontend server with production configuration (bundling & compression enabled)node fuser-client.js --api-deploy
- Deploy whole api backendnode node_modules/bundularjs --secrets-lock
- Encrypt your secrets filenode node_modules/bundularjs --secrets-unlock
- Decrypt your secrets filefirebase deploy -P <project> --only functions:'<functionsGroupName>.<functionName>' --token <token>
- Deploy only one specific Cloud function from your api
Fork into your own repo, run locally, make changes and submit PullRequests to the main repository.
All projects and packages in this repository are MIT licensed.