The Darker Side of PWAs You Might Not Be Aware of

Similar to the apple that fell on Newton’s head and changed the way we understood gravitational forces, progressive web apps are changing the way we understand applications by providing an app-like experience in the web form.

Progressive web apps are one of the technologies originally proposed by Google. The term progressive web app was first uttered by Frances Berriman and Alex Russell in 2015.

It was a way of describing applications that take advantage of new features supported by modern browsers, including service workers and web app manifests, and also lets users upgrade web apps to progressive web applications regardless of their native operating system.

PWAs are also described as user experiences that have the reach of the web and are characterized by the following by Google.

  • Reliable — Load instantly and never show the downasaur (a.k.a the T-Rex), even in uncertain network conditions.
  • Fast — Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • Engaging — Feel like a natural app on the device, with an immersive user experience.

#javascript

What is GEEK

Buddha Community

The Darker Side of PWAs You Might Not Be Aware of
Were  Joyce

Were Joyce

1642110180

Spring: A Static Web Site Generator Written By GitHub Issues

Spring

Spring is a blog engine written by GitHub Issues, or is a simple, static web site generator. No more server and database, you can setup it in free hosting with GitHub Pages as a repository, then post the blogs in the repository Issues.

You can add some labels in your repository Issues as the blog category, and create Issues for writing blog content through Markdown.

Spring has responsive templates, looking good on mobile, tablet, and desktop.Gracefully degrading in older browsers. Compatible with Internet Explorer 10+ and all modern browsers.

Get up and running in seconds.

中文介绍

Quick start guide

For the impatient, here's how to get a Spring blog site up and running.

First of all

  • Fork the Spring repository as yours.
  • Goto your repository settings page to rename Repository Name.
  • Hosted directly on GitHub Pages from your project repository, you can take it as User or organization site or Project site(create a gh-pages branch).
  • Also, you can set up a custom domain with Pages.

Secondly

  • Open the index.html file to edit the config variables with yours below.
$.extend(spring.config, {
  // my blog title
  title: 'Spring',
  // my blog description
  desc: "A blog engine written by github issues [Fork me on GitHub](https://github.com/zhaoda/spring)",
  // my github username
  owner: 'zhaoda',
  // creator's username
  creator: 'zhaoda',
  // the repository name on github for writting issues
  repo: 'spring',
  // custom page
  pages: [
  ]
})
  • Put your domain into the CNAME file if you have.
  • Commit your change and push it.

And then

  • Goto your repository settings page to turn on the Issues feature.
  • Browser this repository's issues page, like this https://github.com/your-username/your-repo-name/issues?state=open.
  • Click the New Issue button to just write some content as a new one blog.

Finally

  • Browser this repository's GitHub Pages url, like this http://your-username.github.io/your-repo-name, you will see your Spring blog, have a test.
  • And you're done!

Custom development

Installation

  • You will need a web server installed on your system, for example, Nginx, Apache etc.
  • Configure your spring project to your local web server directory.
  • Run and browser it, like http://localhost/spring/dev.html .
  • dev.html is used to develop, index.html is used to runtime.

Folder Structure

spring/
├── css/
|    ├── boot.less  #import other less files
|    ├── github.less  #github highlight style
|    ├── home.less  #home page style
|    ├── issuelist.less #issue list widget style
|    ├── issues.less #issues page style
|    ├── labels.less #labels page style
|    ├── main.less #commo style
|    ├── markdown.less #markdown format style
|    ├── menu.less #menu panel style
|    ├── normalize.less #normalize style
|    ├── pull2refresh.less #pull2refresh widget style
|    └── side.html  #side panel style
├── dist/
|    ├── main.min.css  #css for runtime
|    └── main.min.js  #js for runtime
├── img/  #some icon, startup images
├── js/
|    ├── lib/  #some js librarys need to use
|    ├── boot.js  #boot
|    ├── home.js  #home page
|    ├── issuelist.js #issue list widget
|    ├── issues.js #issues page
|    ├── labels.js #labels page
|    ├── menu.js #menu panel
|    ├── pull2refresh.less #pull2refresh widget
|    └── side.html  #side panel
├── css/
|    ├── boot.less  #import other less files
|    ├── github.less  #github highlight style
|    ├── home.less  #home page style
|    ├── issuelist.less #issue list widget style
|    ├── issues.less #issues page style
|    ├── labels.less #labels page style
|    ├── main.less #commo style
|    ├── markdown.less #markdown format style
|    ├── menu.less #menu panel style
|    ├── normalize.less #normalize style
|    ├── pull2refresh.less #pull2refresh widget style
|    └── side.html  #side panel style
├── dev.html #used to develop
├── favicon.ico #website icon
├── Gruntfile.js #Grunt task config
├── index.html #used to runtime
└── package.json  #nodejs install config

Customization

  • Browser http://localhost/spring/dev.html, enter the development mode.
  • Changes you want to modify the source code, like css, js etc.
  • Refresh dev.html view change.

Building

  • You will need Node.js installed on your system.
  • Installation package.
bash

$ npm install

*   Run grunt task.

    ```bash
$ grunt
  • Browser http://localhost/spring/index.html, enter the runtime mode.
  • If there is no problem, commit and push the code.
  • Don't forget to merge master branch into gh-pages branch if you have.
  • And you're done! Good luck!

Report a bug

Who used

If you are using, please tell me.

Download Details:
Author: zhaoda
Source Code: https://github.com/zhaoda/spring
License: MIT License

#spring #spring-framework #spring-boot #java 

The Darker Side of PWAs You Might Not Be Aware of

Similar to the apple that fell on Newton’s head and changed the way we understood gravitational forces, progressive web apps are changing the way we understand applications by providing an app-like experience in the web form.

Progressive web apps are one of the technologies originally proposed by Google. The term progressive web app was first uttered by Frances Berriman and Alex Russell in 2015.

It was a way of describing applications that take advantage of new features supported by modern browsers, including service workers and web app manifests, and also lets users upgrade web apps to progressive web applications regardless of their native operating system.

PWAs are also described as user experiences that have the reach of the web and are characterized by the following by Google.

  • Reliable — Load instantly and never show the downasaur (a.k.a the T-Rex), even in uncertain network conditions.
  • Fast — Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • Engaging — Feel like a natural app on the device, with an immersive user experience.

#javascript

anita maity

anita maity

1618667723

Sidebar Menu Using Only HTML and CSS | Side Navigation Bar

how to create a Sidebar Menu using HTML and CSS only. Previously I have shared a Responsive Navigation Menu Bar using HTML & CSS only, now it’s time to create a Side Navigation Menu Bar that slides from the left or right side.

Demo

#sidebar menu using html css #side navigation menu html css #css side navigation menu bar #,pure css sidebar menu #side menu bar html css #side menu bar using html css

A 4-Step Guide to Help Beginners Get Started on Coding Projects

Starting something new is always difficult. When I working on my first coding project, I was wondering where to begin. I wondered what technologies I should use and whether I would come up with a good project idea. Today we will be going over my beginner’s guide to coding projects. I want to help you answer the same questions I asked myself when I worked on my first project. This will be especially helpful for people with little to no experience working on coding projects. If this post is helpful, please consider subscribing to my YouTube channel or check out my other articles for more content like this!

If you do not have any experience coding, that is completely fine! I recommend you take one of these free, online courses that will teach you the fundamentals of programming and a programming language: Java (commonly used to develop Android apps, web backends, etc.), Python (commonly used for data science and backend web development), HTML + CSS + JavaScript (used for frontend and backend web development).

1. Identify Your Technologies

I recommend mostly using technologies you are familiar with. You can use at most one or two new technologies. This will add some challenge to the project to encourage you to pick them up as you go, but will not overwhelm you such that you will not be able to make progress. In addition to establishing technologies, you also want to decide on the format of the project. This could be a web app, mobile app, database project, etc — this may also influence what technologies you need to use.

2. Come Up With an Idea

I recommend keeping things simple here. When I was working on my first project, I would keep questioning my ideas. I kept trying to build something innovative, but eventually, I understood that this was not the goal of the project. I should not judge the success of this project on how many users I have or whether I can build the next billion dollar company with it. The goal of this project is for you to learn and so long as you achieve that, the project is a success. Some common ideas for a first project include a personal website, simple mobile app, or following a tutorial and building on top of that.

3. Work on the Project

You need to find what motivates you to work on the project. You want to be working on it regularly. Also, you will inevitably get stuck trying to figure something out or debugging your project. It is important to remember that everyone faces this and that there are plenty of resources out there to help. For example, simply searching the question you have or the error message you received can yield answers. Websites such as Stack Overflow were built to allow the community to help coders who are encountering a blocker. Use these sites to get unblocked and you will be on your way to completing that project.

4. Share Your Project on GitHub

GitHub is a website that allows anyone to view and collaborate on open source projects. GitHub splits these up into repositories of files that make up the project itself. If you have never used git (a version control system) or GitHub, then I recommend reading this guide which will run you through the basics.

Once your project is complete, you should put up your project in one or more repositories on GitHub. This helps for two main reasons. First, you can easily share your projects with others. All it takes is sharing the link to your GitHub profile on your resume for recruiters, hiring managers, interviewers, and more to view your projects. Second, if you are working on a website, GitHub pages takes care of hosting the website for you. All you need to do is upload your files to a GitHub repository, set it up with GitHub pages, and your website will be published at .github.io.

Source of Image

I hope you found this story informative! Please share it with a friend you think might benefit from it as well! If you liked the post/video, feel free to like and subscribe to my YouTube account and check out my other articles for more content like this. Also, follow me on Twitter for updates on when I am posting new content and check me out on Instagram. I hope to see you all on the next one!

If you prefer to follow along via my YouTube video, you can watch it here!

#side-project #project-planning #programming #coding #side-projects #build-a-side-project #how-to-start-coding-projects #self-improvement

Eldora  Bradtke

Eldora Bradtke

1597206720

How to Generate Server-Side PDF Reports With Puppeteer, D3 & Handlebars

Looking for a way to create a design-heavy, data-driven, beautifully styled PDF report—server-side with similar tools to what you are already using on the front-end? Stop your Google search. You’ve come to the right place. I was in the same boat as you a few months ago while helping a client with this exact problem. In order to accomplish this feat, I developed a four-step solution using Puppeteer, D3, and handlebars. In this post, I’ll give you step by step instructions on creating server-side pdf reports. Let’s dive in.

An example of a PDF page generated using this method.

An example of a PDF page generated using this method.

In this post, we’ll cover:

  • Setting up Puppeteer and Handlebars
  • Creating a generator to make our PDF
  • Building out a handlebars template
  • Adding the finishing touches

The CHallenges of Creating These PDF Reports:

Because we’re using a template framework to access standard web technologies along with Puppeteer to manage the PDF, we’ll need to think about these things during development:

  • Pages will manually need to be constrained.
  • We won’t have access to CSS media props other than “screen.” (no “page-break-after” or the print media type)
  • We won’t be able to use dev tools to debug irregularities once the PDF is compiled and rendered.
  • Puppeteer itself adds extra build time and size to your deployments.
  • Generating a report can take a while depending on file size.

For this example, let’s assume we already have the base of our project up and running Node/Express, and some type of ORM and DB solutions. We’re all set to feed our sweet, sweet data into a report.

The Tools We Need to Make This Happen

Handlebars

HTML templating framework from the Mustache family. This allows for Partial templating (fancy talk for components) and custom and built-in helper functionality to expand on our logic.

npm install handlebars

Example using partials and built-in blocks

{{#each poleComparison as |page|}}
<div class="page">
  {{#each page.pairs as |polePair|}}
    {{> comparison-header polePair=polePair }}
        <div class="comparison-tables">
            {{> comparison-body polePair=polePair }}
        </div>
  {{/each}}
  {{> footer @root }}
</div>
{{/each}}

Puppeteer

A node library that will provide us access to a chrome headless instance for generating the PDF based on our compiled Handlebars templates.

npm install puppeteer

A list of use cases:

  • Generate screenshots and PDFs of pages.
  • Crawl a SPA (Single-Page Application) and generate pre-rendered content (i.e. “SSR” (Server-Side Rendering)).
  • Create an up-to-date, automated testing environment.
  • Test Chrome Extensions.

D3 (Data-Driven Documents)

D3.js is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG, and CSS. D3’s emphasis on web standards gives you the full capabilities of modern browsers without tying yourself to a proprietary framework, combining powerful visualization components and a data-driven approach to DOM manipulation.

<script src="https://d3js.org/d3.v5.min.js"></script> 

#javascript #server-side #d3.js #js #handlebars #puppeteer #server-side development