pushgeek-web-push-services v1.0.1
PushGeek Rollout Server
Rollout server is simple drip marketing automation tool which help to enggage more and more users with the website, which have features like
🚀 Technologies
- ⚡ Express — A web framework for Node.js
- 🐮Bull — Premium Queue package for handling distributed jobs
- 🚒 Handlebars - Html Engine
- 📧 Web-push, nodemailer
- 🏪 MongoDB, Redis
- 🔀 Nginx
- 🚚 Docker
⚡️ Feature List
- Push Message Broadcasting
- DDoS Protection
- Schedule Jobs Worker
- Fast caches managed
- OAuth
- Login With multiple social platform
- Cart Service
- Product Display
- International Localization Features
- Text Analysiss
- nudity detection
- more coming soon
🔥 Instrustions 🧑🏼💻 Commands
Installing Nodejs , NPM and NVM
sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash~/.nvm/nvm.sh nvm install nodeCross Check Installed Versions
node -vnpm -vnvm --versionClone Source Code
git clone https://github.com/saurabharch/rolloutnpm install##OR
yarn install./node_modules/.bin/web-push generate-vapid-keys- Generating Vapid Public and Private Key copy it and Update in config folder files key_dev.js , key_prod.js and also paste your Vapid Public Key in your Service Worker File app.js
node server.jsRunning Imutable stack with PM2
npm install -g pm2Run as root user in Linux
- in watch mode or simple
sudo pm2 start --name server-name index.js -- --name server-name --port 5500 --watch- standalone running at by default port 5500 on a single intance
sudo pm2 start --name server-name index.js- save as running always after on every boot performe on system
sudo pm2 startup- save all the setting with pm2
sudo pm2 save- Running Rollout Server using PM2 with babel as interpreter setting is Here
Setting Up with Nginx Proxy as a load balancer
✋🏻 PREQUESTS
sudo apt-get install nginxsudo add-apt-repository ppa:certbot/certbotsudo apt-get updatesudo apt install python-certbot-nginxGenerate SSL Certificate using certbot command
sudo certbot --nginx -d pushgeek.com -d www.pushgeek.comAlternate Command
sudo certbot certonly --standalone -d pushgeek.com www.pushgeek.comAuto Renewal Certficate with certbot
sudo certbot --dry-runALLOW PORTS FOR NGINX AND SETUP FIREWALL
sudo ufw default deny incomingsudo ufw default allow outgoingsudo ufw allow sshsudo ufw allow 'Nginx Full'sudo ufw delete allow 'Nginx HTTP'sudo ufw enablesudo ufw allow httpsudo ufw allow httpssudo ufw status- (should say active)
sudo ufw statussudo ufw allow 443/tcp (should required)
systemctl status nginx- (above config applied)
sudo vim /etc/nginx/sites-available/rolloutsudo ln -s sites-available/rollout sites-enable/rolloutsudo nginx -tsudo service nginx restartsudo /etc/init.d/nginx reloadsudo journalctl -xeCheck nginx service worker status
sudo systemctl status nginxinstalling fail2ban protecting DDoS
sudo apt-get install fail2banFile Structure
|
|
|________________________./congif
| |
| |____keys_prod.js
| |
| |____keys_dev.js
| |
| |____keys.js
|
|
|________________________./public
| |
| |____index.html
| |
| |____sw.js
| |
| |____app.js
|
|
|________________________./model
| |
| |____subscribers_model.js
|
|
|
|________________________./router
| |
| |____push.js
| |
| |____subscribe.js
| |____keygen.js
|
|___________________________server.jsNotes (Opinionated)
DO NOT do this for a real project of this size, this is to learn. A Microservice architecture is for BIG projects with a lot of people.
People will tell you that you can do it at small scale and it is true but you can also remove ants with a nuclear bomb.
Docker containers can be used without using Microservices, they are not the same thing!
This is the most common way I see people build container based projects but my personal favourite is using a queue for all container to container communication.
Rule of thumb thoughts (Opinionated)
Docker containers = good for almost all project sizes Microservices = good for big companies with a lot of code and people Sweetspot = Monolith app and databases in containers
👨🏼💻 Author
📝 License
👋 Official site Pushgeek is made with ❤️ by © RainDigi IT Pvt. Ltd.
4 years ago