This site is hosted on Heroku Cloud platform. You may check this app at https://afternoon-caverns-60896.herokuapp.com/
NOTE: I may need to whitelist your email addresses in the Mailgun configuration before you can successfully use this.
- Clone this repo
git clone [email protected]:nobso/hybrid-mailer.git
- Change directory into
mailer
cd hybrid-mailer
- Install the packages
npm install
- Export the mailgun credentials
export MG_DOMAIN=[REPLACE WITH DOMAIN]
export MG_PRIVATE_KEY=[REPLACE WITH PRIVATE KEY]
export SG_PRIVATE_KEY=[REPLACE WITH PRIVATE KEY]
- Run the app
npx gulp
- The page will open automatically, if not hit the browser with
http://localhost:4000
Note: That console log error message (with HTTP status code 422) was thrown during the form validation, so its an intended behavior.
- Install Node Version Manager
- Install NodeJS
- Install NPM
- This comes with NodeJS but its always good to check the version and make sure its upto date
- This project is built using version
6.13.4
- Scaffolding
- express-generator allows us to create a skeleton for a web application when we work with ExpressJS
pug
templating engine - Though there are a lot of other options available, i chose this based on the following reasons- Page layout inheritance
- Include option
- Loop/control statements
- Client side rendering
- Easy to learn
- CSS engines
- There are multiple choices like SASS, STYLUS, LESS etc, but i went with vanilla CSS because this is a simple project and does not need any complicated or more reusable CSS components
npm install
the required packages- Fix the vulnerabilities issues by running the audits
nodemon
for auto reloading the server for changesbrowser-sync
for refresing the browsergulp
for running the tasks
config.yml
to keep the application configuration based on the environment
This site is 100% accessible
This site is 100% SEO compliant
All the functionalities work even if there is no JavaScript support available on the client side
The overall performance measured by LightHouse is A Grade.
- All the assets are minified
- CSS and JS served from respective single URL
- Web page size is kept minimal
This site is 100% responsive. It renders well on a variety of devices and window or screen sizes. I've tested using simulators. This site even renders good on landscape/portrait orientation.
I've tested this app manually in the following browsers and devices
- Browsers
- Chrome (Version 79.0.3945.130 (Official Build) (64-bit)), Fire
- Firefox (72.0.2 (64-bit)
- Safari (Version 13.0.4 (15608.4.9.1.3))
- Simulators
- iPhone 5/SE
- iPhone 6/7/8
- iPhone X
- iPad, iPad Pro
- Galaxy S5
- Pixel 2/XL
- Real Devices
- iPhone 8
- For now, all the strings are hardcoded, we should add Internatiolization
i18n
support - CDN support for serving the assets
- PWA support
- Email Campaign HTML form should have a CAPTCHA support
- Multiple email recipients
- Unit and functional tests
- CI/CD integration