BundularJS
BundularJS is .
Features:
- Serverless - Zero maintenance of any server
- 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
Tools Used:
- Firebase - Database, auth, Cloud Functions
- Netlify - CI/CD, hosting, pre-rendering, routing, DNS management, SSL
- libx.js (npm) - Swiss army knife full of useful modules and helpers
- libx.fuser (npm) - A prebuilt framework of script bundles, styles and configurations. Also serves as bundler (like Webpack), and dev env server.
Initial Setup:
- 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/libx.fuser --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
Running Locally:
Run local server: node fuser-client.js --secret=<?>
.
With api (local Firebase Cloud Functions): node fuser-client.js --secret=<?> --api
.
Useful Commands:
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/libx.fuser --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/libx.fuser --secrets-lock
- Encrypt your secrets filenode node_modules/libx.fuser --secrets-unlock
- Decrypt your secrets filefirebase deploy -P <project> --only functions:'<functionsGroupName>.<functionName>' --token <token>
- Deploy only one specific Cloud function from your api
Contributing
Fork into your own repo, run locally, make changes and submit PullRequests to the main repository.
License
All projects and packages in this repository are MIT licensed.