The application is a web text editor where the user can create notes or code snippets with or without an internet connection and where the user can reliably retrieve them for later use. The integrated service worker and Cache API's ensure that the application will remain fully functional even without and active internet connection. This application allows the user to access visited pages even if the application is offline.
The URL of the GitHub repository is https://github.com/stellalph/19-PWA-Text-Editor.git and the repository name is 19-PWA-Text-Editor.
🚀The application has been deployed to Heroku and the URL of the deployed application is:-
https://mighty-waters-80466.herokuapp.com/
-
This text editor require a number of methods and store data to an IndexedDB database to be builded up.
-
This application will require the installation of Node.js and various npm packages.
-
Node Package Manager (npm) is a software manager and installer which puts the modules in place so that the node project can utilize it, and also, it manages dependency conflicts intelligently and initialized using npm init. The package.json will be generated and will contains all the details of the application in which the user have inputted during the npm initialization.
-
This application will use the following npm packages:-
* npm install express (express.js) * npm install --save-dev webpack (Webpack) * npm install webpack-dev-server --save-dev (webpack-dev-server) * npm install --save-dev webpack-pwa-manifest (WebpackPwaManifest) * npm install babel (Babel) * npm install --save-dev css-loader (CSS-loader) * npm install concurrently --save (run multiple commands concurrently.) (Concurrently) * npm npm install idb (IndexedDB)
-
The required modules are bundled in the package.json file and at CLI or integrated terminal type in npm run install, the modules will be installed.
GIVEN a text editor web application,
WHEN I open my application in my editor
THEN I should see a client server folder structure
Below is the screenshot of the client server folder structure. The folder structure have been set up or given in this structure.
WHEN I run `npm run start` from the root directory
THEN I find that my application should start up the backend and serve the client
WHEN I run the text editor application from my terminal
THEN I find that my JavaScript files have been bundled using webpack
WHEN I run my webpack plugins
THEN I find that I have a generated HTML file, service worker, and a manifest file
Below is the screenshot of the running at npm run start and npm run build
Below is the screenshot of the generated HTML, service worker and a manifest file
WHEN I use next-gen JavaScript in my application
THEN I find that the text editor still functions in the browser without errors
WHEN I open the text editor
Below is the screenshot of the text editor "Just Another Text Editor (J.A.T.E)"
THEN I find that IndexedDB has immediately created a database storage
WHEN I enter content and subsequently click off of the DOM window
THEN I find that the content in the text editor has been saved with IndexedDB
WHEN I reopen the text editor after closing it
THEN I find that the content in the text editor has been retrieved from our IndexedDB
Below is the screenshot of content in the text editor has been retrieved from the IndexedDB"
WHEN I click on the Install button
THEN I download my web application as an icon on my desktop
Below is the screenshot of icon on the desktop"
WHEN I load my web application
THEN I should have a registered service worker using workbox
WHEN I register a service worker
THEN I should have my static assets pre cached upon loading along with subsequent pages and static assets
Below is the screenshot of the static assets pre cached upon loading with subsequent pages and static assets"
WHEN I deploy to Heroku
THEN I should have proper build scripts for a webpack application
- The Unit Ahead : Progressive Web Applications (PWA)
- Module 19 Mini-Project: Deploy Contact Directory App on Heroku with Script
- Request-Response : The Full-Stack Blog : Heroku Deployment Guide
This project is licensed under the terms of the MIT license.