New docs

This commit is contained in:
Alicia Sykes 2018-06-17 11:34:43 +01:00
parent ac1c067f4c
commit 5c94e0242f
62 changed files with 7388 additions and 178 deletions

1
docs/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
node_modules

View File

9
docs/.travis.yml Normal file
View File

@ -0,0 +1,9 @@
language: node_js
node_js:
- "9.0.0"
install:
- npm i -g yarn webpack webpack-cli webpack-dev-server && yarn
before_script:
- yarn run build

22
docs/LICENSE.md Normal file
View File

@ -0,0 +1,22 @@
## The MIT License (MIT)
### Copyright (c) Alicia Sykes <alicia@as93.net>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sub-license, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included install
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANT ABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
![License](https://upload.wikimedia.org/wikipedia/commons/f/f8/License_icon-mit-88x31-2.svg)

View File

@ -1,144 +0,0 @@
# The Checklist
## Passwords
Ideally you should use a different, and secure password to access each service you use. To securely manage all of these, a password manager is usually the best option.
Most reported data breaches [this Verizon report](http://www.verizonenterprise.com/resources/reports/rp_dbir-2016-executive-summary_xg_en.pdf) are caused by involved weak, default or stolen passwords. Massive amounts of private data was stolen because of this.
For everything you could ever want to know about passwords, check out [this guide](https://heimdalsecurity.com/blog/password-security-guide/).
| **Security** | **Priority** | **Details and Hints** |
| -------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Use a strong password** | Recommended | Check how strong your password is at: [HowSecureIsMyPassword.net](https://howsecureismypassword.net). Try to get a got mixture of upper and lower-case letters, numbers and symbols. Avoid names, places and dictionary words where possible, and aim to get a decent length. Have a look at [How Long will it take to Crack my Password](https://www.betterbuys.com/estimating-password-cracking-times/). |
| **Dont save your password in browsers** | Recommended | Most modern browsers offer to save your credentials when you log into a site. Dont allow this! As they are not encrypted, hence can allow easy access into your accounts. Also do not store passwords in a .txt file or any other unencrypted means. Ideally use a password manager. |
| **Use different passwords for each account you have** | Recommended | If one password gets compromised, it can give hackers access to your other online sites, so it is highly recommended not to reuse the same passwords. In order to manage having hundreds of different passwords, use a [password manager](https://en.wikipedia.org/wiki/Password_manager). Have a look at [LastPass](https://www.lastpass.com), [DashLane](https://www.dashlane.com), [KeePass](https://keepass.info) or [Robo Forms 8](https://www.roboform.com). |
| **Be cautious when logging in on someone elses device** | Recommended | Ideally you wouldnt ever log into any of your services on someone elses device, since you cant be sure that they dont have any malware. If you do, ensure that your in a private session (like Incognito mode) so that nothing gets saved |
| **Avoid password hints** | Optional | It is likely that there is a lot of information about you online, so it can be an easy task for a hacker to find out which high school you went to, or what your Mums name is. |
| **Never answer online security questions truthaly** | Optional | Instead, create a password inside your password manager to store your fictitious answer. This will stop people guessing your place of birth or mothers mainen name. |
| **Dont use a 4-digit pin to access your phone** | Optional | Dont use a short pin to access your smartphone or computer. Instead use a text password. |
| **Use an offline password manager** | Advanced | Consider an offline password manager, encrypted by a strong password. If you work across two or more computers, this could be stored on an encrypted USB. [KeePass](http://keepass.info/) is a strong choice |
| **If possible, try to avoid bio-metric and hardware-based authentication** | Advanced | Fingerprint sensors, face-detection and voice-recognition are all easily hackable. Where possible replace these with traditional passwords. |
| P**assword protect your BIOS and drives** | Advanced | A BIOS or UEFI password helps to make an inexperienced hackers life a bit harder if they get hold of your PC or hard drive, [here is a guide on how to do it](https://www.howtogeek.com/186235/how-to-secure-your-computer-with-a-bios-or-uefi-password/). |
## 2-Factor Authentication
This is a secure method of logging in, where you supply not just your password, but also an additional code usually from a device that only youd have access to.
| **Security** | **Priority** | **Details and Hints** |
| ------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Use an authenticator.** | Recommended | Use [Google Authenticator](https://support.google.com/accounts/answer/1066447) where sites offer 2-FA. Alternative authenticators include: [Authy](https://authy.com), [FreeOTP](https://freeotp.github.io), [LastPassAuthenticator](https://lastpass.com/auth/) and [AuthenticatorPlus](https://www.authenticatorplus.com). SMS codes are ubiquitous, but easy to break so although better than nothing, not ideal. Another option is a hardware-based 2FA, such as [Yubico](https://www.yubico.com/security-keys-authentication/), although with limited compatibility and of course a physical cost. Check out [this list of apps/ sites which provide the option of 2FA](https://twofactorauth.org/). |
## Browser and Search
Most modern web browsers allow for addons and extensions, these can access anything that you do online, avoid installing anything that may not be legitimate and check permissions first. Be aware that ever website that you interact with, including search engines will likely be keeping records of all your activity. Last year Kaspersky reported [over a million data exploits caused by malicious sites](https://securelist.com/it-threat-evolution-q1-2017-statistics/78475/).
For more browser security pointers, check out: [Heres How To Get Solid Browser Security](https://heimdalsecurity.com/blog/ultimate-guide-secure-online-browsing/)
| **Security** | **Priority** | **Details and Hints** |
| -------------------------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Deactivate ActiveX** | Recommended | [ActiveX](https://en.wikipedia.org/wiki/ActiveX) is barley used nowadays, but Microsoft browsers have it enabled by default. It acts as a middleware between Java and Flash applications and your PC. But it is commonly used for malicious sites to run scripts directly on your PC. See [this article](https://www.howtogeek.com/162282/what-activex-controls-are-and-why-theyre-dangerous/) for more details. |
| **Disable Flash** | Recommended | Adobe Flash has been around since the dawn of the internet, however it has been falling in popularity for a while. It brings with it many unpatched vulnerabilities (a few of which you can [read about here](https://www.comparitech.com/blog/information-security/flash-vulnerabilities-security/)). See [this guide](https://www.howtogeek.com/222275/how-to-uninstall-and-disable-flash-in-every-web-browser/), on how to disable Flash player, or [this guide for more details on how dangerous it can be](https://www.tomsguide.com/us/disable-flash-how-to,news-21335.html). |
| **Block Trackers** | Recommended | Consider installing a browser extension, such as [Privacy Badger](https://www.eff.org/privacybadger), to stop advertisers from secretly tracking you |
| **Block scripts from bad origin** | Recommended | Use an extension such as [uBlock Origin](https://github.com/gorhill/uBlock), to block anything being loaded from an external or unverified origin. |
| **Force HTTPS only traffic** | Recommended | Ensure that you only use websites through https. Its recomended to use an extension such as [HTTPS Everywhere](https://www.eff.org/https-everywhere), to force all sites to load securely. |
| **Only use trusted browser addons and extensions** | Recommended | Both Firefox and Chrome webstore allow you to check what permissions access rights an extension requires before you install it. Check the reviews. Only install extensions you really need. |
| **Always keep your browser up-to-date** | Recommended | Browser vulnerabilities are constantly being discovered and patched, so its important to keep it up to date, to avoid a zero-day exploit. |
| **Use a private search engine** | Optional | Take a look at [DuckDuckGo](https://duckduckgo.com) or [StartPage](https://www.startpage.com). Neither store cookies or cache anything. |
| **Consider a privacy browser** | Optional | Google openly collects usage data on Chrome usage. There are several privacy browsers out there which minimise the amount of data collected. Have a look at [Brave Browser](https://brave.com), [Yandex](https://browser.yandex.com), or [Comodo](https://www.comodo.com/home/browsers-toolbars/browser.php). As a more extreme choice, consider [Tor](https://www.torproject.org/). |
| **Disable JavaScript** | Advanced | Many modern web apps, are JavaScript based, so disabling it will greatly reduce your browsing experience. But if you really want to go all out, then it will reduce your attack surface. Read more about the growing [risk of JavaScript malware](https://heimdalsecurity.com/blog/javascript-malware-explained/). |
## VPN
A Virtual Private Network (VPN) allows you to securely connect to the internet, when you visit a site, your visiting it through the secure VPN connection and not broadcasting your own IP address, therefore hiding your identity on the sites you visit, to both your ISP anyone else trying to track you, they can also encrypt your traffic so you can browse more securely on public networks. Theyre really easy to setup. To learn more about what a VPN is, how it works and how to choose one, checkout [this PC Mag article](http://uk.pcmag.com/software/138/guide/the-best-vpn-services-of-2018).
| **Security** | **Priority** | **Details and Hints** |
| ------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Use a VPN** | Recommended | Ideally use a paid-for VPN, as theyre considerably better quality so wont affect your speeds, nor show adds. Take a look at [VyprVPN](https://www.goldenfrog.com/vyprvpn), [NordVPN](https://nordvpn.com), [IPVanish](https://www.ipvanish.com) and [TunnelBear](https://www.tunnelbear.com). |
## Emails
Nearly 50 years since the first email was sent, theyre still very much a big part of our day-to-day life, and will probably continue to be for the near future. So considering how much trust we put in them, its surprising how fundamentally insecure this infrastructure is. Email-related fraud [is on the up](https://www.csoonline.com/article/3247670/email/email-security-in-2018.html), and without taking basic measures you could be at risk. (For basic enterprise pointers, see [this article](https://digitalguardian.com/blog/what-email-security-data-protection-101)).
If a hacker gets access to your emails, it provides a gateway for your other accounts to be compromised, therefore email security is paramount for your digital safety.
These links are also useful for additional simple measures that you can take to specifically protect a [Yahoo](https://heimdalsecurity.com/blog/complete-guide-e-mail-security/#yahoo), [GMail](https://heimdalsecurity.com/blog/complete-guide-e-mail-security/#gmail), [Outlook](https://heimdalsecurity.com/blog/complete-guide-e-mail-security/#outlook) and [AOL](https://heimdalsecurity.com/blog/complete-guide-e-mail-security/#aol) account.
| **Security** | **Priority** | **Details and Hints** |
| -------------------------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Have more than one email address** | Recommended | Keeping your important and safety-critical messages separate from trivial subscriptions such as newsletters, is a very good idea. Be sure to use different passwords. This will also make recovering a compromised account after an email breach easier. |
| **Keep security in mind when logging into emails** | Recommended | Your email account is one of the most important to protect with a secure password. Only sync your emails with your phone, if it is secured (encrypted with password). Dont allow your browser to save your email password. Prevent man-in-the-middle attacks by only logging in on a secured browser. |
| **Always be weary of phishing and scams** | Recommended | If you get an email from someone you dont recognize, dont reply, dont click on any links, and absolutely dont download an attachment. Keep an eye out for senders pretending to be someone else, such as your bank, email provider or utility company. Check the domain, read it, ensure its addressed directly to you, and still dont give them any personal details. Check out [this guide, on how to spot phishing emails](https://heimdalsecurity.com/blog/abcs-detecting-preventing-phishing/). |
| **Dont share sensitive over email** | Optional | Emails are very very easily intercepted. Also you cant know how secure your recipients environment is. Dont share anything personal, such as bank details, passwords, confidential information over email. Ideally, dont use email as any primary method of communication. |
| **Dont connect third-party apps to your email account** | Optional | If you give a third-party app (like Unroll.me) full access to your inbox, this makes you vulnerable to cyber attacks. The app can be compromised and, as a consequence, cyber criminals would gain unhindered access to all your emails and their contents. |
| **Consider switching to a more secure email provider** | Optional | Email providers such as [ProtonMail](https://protonmail.com), [CounterMail](https://countermail.com), [HushMail](https://www.hushmail.com) (for business users) or [MailFence](https://mailfence.com) allow for end-to-end encryption, full privacy as well as more security-focused features. |
## Social Media
| **Security** | **Priority** | **Details and Hints** |
| --------------------------------------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Check your privacy settings** | Recommended | Most social networks allow you to control your privacy settings. Ensure that your profile can only be viewed by people who you are in your friends list, and you know personally. |
| **Only put info on social media that you wouldnt mind being public** | Recommended | Even with tightened security settings, dont put anything online that you wouldnt want to be seen by anyone other than your friends. Dont reply soley on the social networks security. |
| **Dont give social networking apps permissions they dont need** | Recommended | By default many of the popular social networking apps, will ask for permission to access your contacts, your call log, your location, your messaging history etc.. If they dont need this access- dont grant it. |
| **Revoke access for apps your no longer using** | Recommended | Instructions: [Facebook](https://www.facebook.com/settings?tab=applications), [Twitter](https://twitter.com/settings/applications), [LinkedIn](https://www.linkedin.com/psettings/third-party-applications), [Instagram](https://www.instagram.com/accounts/manage_access/). |
| **Remove meta data before uploading media** | Optional | Most smartphones and some cameras automatically attach a comprehensive set of additional data to each photograph., This usually includes things like time, date, location, camera model, user etc. Remove this data before uploading. See [this guide](https://www.makeuseof.com/tag/3-ways-to-remove-exif-metadata-from-photos-and-why-you-might-want-to/) for more info. |
| **Dont have any social media accounts** | Advanced | It may seem a bit extreme, but if your serious about data privacy and security, stay away from entering information on any social media platform. |
## Your Devices
| **Security** | **Priority** | **Details and Hints** |
| --------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Turn of connectivity features that arnt being used** | Recommended | When your not using WiFi, Bluetooth, NFC or anything else- turn those features off. These are commonly used to easily hack individuals. |
| **Uninstall apps that you dont need** | Recommended | Dont have apps that your not using on your phone, as they can be collecting data in the background. Dont install apps from non-legitimate sources, or apps with few reviews. |
| **Dont grant apps permissions that they dont need.** | Recommended | If an app doesnt need access to your camera- dont grant it access. Same with any features of your phone, be wary about what each app has access to. |
| **Consider running a custom ROM if you have an Android device** | Advanced | Your default OS tracks information about your usage, and app data, constantly. Consider a security-focused custom ROM, such as [Lineage](https://lineageos.org) or [CopperheadOS](https://copperhead.co/android/). |
## SMS and Calls
Both SMS texting and traditional phone calls are not secure. Avoid it whenever there is a reasonable alternative, and dont use these means to communicate anything secure. Be wary of who you share your phone number with
| **Security** | **Priority** | **Details and Hints** |
| -------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Dont use SMS - Use E2E encrypted messaging apps** | Optional | [iMessage is secure](https://techcrunch.com/2014/02/27/apple-explains-exactly-how-secure-imessage-really-is/). For non-Apple users [Signal](https://signal.org) is the most secure option. As of late 2016 [WhatsApp](https://www.whatsapp.com) is also [end-to-end-encrypted using the Signal protocol](https://signal.org/blog/whatsapp-complete/). Keep in mind that although the transmission may be secured, breaches can still be cause if your, or your recipients device has been compromised. |
| **Use a secure email provider** | Optional | Most email providers completely invade your privacy intercepting both messages sent and received. [ProtonMail](https://protonmail.com) is a secure email provider, that is open source and offers end-to-end encryption. There are alternative secure mail providers (such as [CounterMail](https://countermail.com), [HushMail](https://www.hushmail.com) and [MailFence](https://mailfence.com))- but [ProtonMail](https://protonmail.com) has both a clear interface and strong security record. |
| **Avoid using your real phone number when signing up for an account or service** | Optional | Where possible, avoid giving out your real phone number while creating accounts online. You can create phone numbers using services such as [Google Voice](https://voice.google.com) or [Skype](https://www.skype.com/en/features/online-number/). For temporary usage you can use a service like [iNumbr](https://www.inumbr.com) that generates a phone number that forwards messages and calls to your main number. |
## Your Router
| **Security** | **Priority** | **Details and Hints** |
| --------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Dont use a default password** | Recommended | Change your router password- [here is a guide as to how](https://www.lifewire.com/how-to-change-your-wireless-routers-admin-password-2487652). |
| **Use WPA2** | Recommended | WPA and WEP make it very easy for a hacker to gain access to your router. Use a [WPA2](https://en.wikipedia.org/wiki/Wi-Fi_Protected_Access) password instead. Ensure it is strong: 12+ alpha-numeric characters, avoiding dictionary words. |
| **Ideally hide your SSID** | Optional | An SSID (or Service Set Identifier) is simply your network name. If it is not visible, it is much less likely to be targeted. You can usually hide it after logging into your router admin panel, [see here for more details](https://www.lifewire.com/hide-your-wireless-network-from-your-internet-leeching-neighbors-2487655). |
| **Avoid the free router from your ISP** | Optional | Typically theyre manufactured cheaply in bulk in China, and firmware updates which fix crucial security flaws arent released regularly |
| **Kill unused process and services** | Advanced | Services like Telnet and SSH (Secure Shell) that provide command-line access to devices should never be exposed to the internet and should also be disabled on the local network unless they're actually needed. In general, [any service thats not used should be disabled](https://www.securityevaluators.com/knowledge/case_studies/routers/soho_service_hacks.php) to reduce attack surface |
## Operating Systems
Although Windows and OS X are easy and convenient, they both are far from secure. Your OS provides the interface between hardware and your applications, so if compromised can have detrimental effects.
| **Security** | **Priority** | **Details and Hints** |
| ------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Keep your OS up-to-date** | Recommended | Microsoft, Apple and ChromeOS release regular updates, which fix security risks. Always keep your device updated. |
| **Consider Switching to Linux** | Advanced | Linux is considerably [more secure](https://www.pcworld.com/article/202452/why_linux_is_more_secure_than_windows.html) than both OSX and Windows. Some distros are still more secure than others, so its worth choosing the right one to get a balance between security and convenience. |
|

View File

@ -1,11 +0,0 @@
![logo](_media/icon.svg)
# Personal Security Checklist
> A Curated List of Cyber Security Essentials to Protect your Digital Life in 2018
* Quick-reference checklist covering everything from beginer concepts through to advanced privacy princaples.
* The aim of this guide is to provide an essential reference of the steps which can be taken to minimise your risk of being hacked or spied on.
[GitHub](https://github.com/Lissy93/personal-security-checklist)
[Get Started](#the-checklist)

1
docs/dist/analytics.js vendored Normal file
View File

@ -0,0 +1 @@
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/dist/",r(r.s=2)}({2:function(e,t){var r=r||[];r.push(["_setAccount","UA-XXXXXXXX-Y"]),r.push(["_trackPageview"]),function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src=("https:"==document.location.protocol?"https://ssl":"http://www")+".google-analytics.com/ga.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}});

BIN
docs/dist/assets/cover.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

BIN
docs/dist/assets/icon.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
docs/dist/icons/android-chrome-36x36.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
docs/dist/icons/android-chrome-48x48.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
docs/dist/icons/android-chrome-72x72.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
docs/dist/icons/android-chrome-96x96.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

BIN
docs/dist/icons/favicon-16x16.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 B

BIN
docs/dist/icons/favicon-32x32.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
docs/dist/icons/favicon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

58
docs/dist/icons/manifest.json vendored Normal file
View File

@ -0,0 +1,58 @@
{
"name": "personal-security-checklist-docs",
"short_name": "personal-security-checklist-docs",
"description": null,
"dir": "auto",
"lang": "en-US",
"display": "standalone",
"orientation": "any",
"start_url": "/?homescreen=1",
"background_color": "#fff",
"icons": [
{
"src": "android-chrome-36x36.png",
"sizes": "36x36",
"type": "image/png"
},
{
"src": "android-chrome-48x48.png",
"sizes": "48x48",
"type": "image/png"
},
{
"src": "android-chrome-72x72.png",
"sizes": "72x72",
"type": "image/png"
},
{
"src": "android-chrome-96x96.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "android-chrome-144x144.png",
"sizes": "144x144",
"type": "image/png"
},
{
"src": "android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "android-chrome-256x256.png",
"sizes": "256x256",
"type": "image/png"
},
{
"src": "android-chrome-384x384.png",
"sizes": "384x384",
"type": "image/png"
},
{
"src": "android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}

1
docs/dist/lib/css/bulma.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
docs/dist/lib/css/vue.css vendored Normal file

File diff suppressed because one or more lines are too long

1
docs/dist/lib/font/raleway.min.css vendored Normal file
View File

@ -0,0 +1 @@
@font-face{font-family:Raleway;src:url(fonts/Raleway-Thin.ttf) format('truetype');font-style:normal;font-weight:100;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-Thin-Italic.ttf) format('truetype');font-style:italic;font-weight:100;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-ExtraLight.ttf) format('truetype');font-style:normal;font-weight:200;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-ExtraLight-Italic.ttf) format('truetype');font-style:italic;font-weight:200;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-Light.ttf) format('truetype');font-style:normal;font-weight:300;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-Light-Italic.ttf) format('truetype');font-style:italic;font-weight:300;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-Regular.ttf) format('truetype');font-style:normal;font-weight:400;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-Regular-Italic.ttf) format('truetype');font-style:italic;font-weight:400;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-Medium.ttf) format('truetype');font-style:normal;font-weight:500;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-Medium-Italic.ttf) format('truetype');font-style:italic;font-weight:500;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-SemiBold.ttf) format('truetype');font-style:normal;font-weight:600;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-SemiBold-Italic.ttf) format('truetype');font-style:italic;font-weight:600;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-Bold.ttf) format('truetype');font-style:normal;font-weight:700;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-Bold-Italic.ttf) format('truetype');font-style:italic;font-weight:700;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-ExtraBold.ttf) format('truetype');font-style:normal;font-weight:800;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-ExtraBold-Italic.ttf) format('truetype');font-style:italic;font-weight:800;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-Black.ttf) format('truetype');font-style:normal;font-weight:900;text-rendering:optimizeLegibility}@font-face{font-family:Raleway;src:url(fonts/Raleway-Black-Italic.ttf) format('truetype');font-style:italic;font-weight:900;text-rendering:optimizeLegibility}/*# sourceMappingURL=raleway.min.css.map */

2
docs/dist/lib/js/d3.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
docs/dist/lib/js/docsify.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
docs/dist/lib/js/emoji.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(){function o(){for(var o=Docsify.dom.getNode("#main"),e=Docsify.dom.findAll(o,"script"),n=e.length;n--;){var i=e[n];if(i&&i.src){var t=document.createElement("script");Array.prototype.slice.call(i.attributes).forEach(function(o){t[o.name]=o.value}),i.parentNode.insertBefore(t,i),i.parentNode.removeChild(i)}}}window.$docsify.plugins=[].concat(function(e){e.doneEach(o)},window.$docsify.plugins)}();

1
docs/dist/lib/js/ga.min.js vendored Normal file
View File

@ -0,0 +1 @@
!function(){function n(n){!function(){var n=document.createElement("script");n.async=!0,n.src="https://www.google-analytics.com/analytics.js",document.body.appendChild(n)}(),window.ga=window.ga||function(){(window.ga.q=window.ga.q||[]).push(arguments)},window.ga.l=Number(new Date),window.ga("create",n,"auto")}function o(){window.ga||n($docsify.ga),window.ga("set","page",location.hash),window.ga("send","pageview")}$docsify.plugins=[].concat(function(n){$docsify.ga?n.beforeEach(o):console.error("[Docsify] ga is required.")},$docsify.plugins)}();

1
docs/dist/lib/js/gitalk.min.js vendored Normal file
View File

@ -0,0 +1 @@
!function(){$docsify.plugins=[].concat(function(n){var t=Docsify.dom;n.mounted(function(n){var i=t.create("div");i.id="gitalk-container";var e=t.getNode("#main");i.style="width: "+e.clientWidth+"px; margin: 0 auto 20px;",t.appendTo(t.find(".content"),i);var o=t.create("script");o.textContent="gitalk.render('gitalk-container')",t.appendTo(t.body,o)})},$docsify.plugins)}();

1
docs/dist/lib/js/search.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
docs/dist/lib/js/zoom-image.min.js vendored Normal file

File diff suppressed because one or more lines are too long

56
docs/dist/manifest.json vendored Normal file
View File

@ -0,0 +1,56 @@
{
"short_name": "Security Checklist",
"name": "Personal Security Checklist",
"icons": [
{
"src": "dist/icons/android-chrome-36x36.png",
"type": "image/png",
"sizes": "36x36"
},
{
"src": "dist/icons/android-chrome-48x48.png",
"type": "image/png",
"sizes": "48x48"
},
{
"src": "dist/icons/android-chrome-72x72.png",
"type": "image/png",
"sizes": "72x72"
},
{
"src": "dist/icons/android-chrome-96x96.png",
"type": "image/png",
"sizes": "96x96"
},
{
"src": "dist/icons/android-chrome-144x144.png",
"type": "image/png",
"sizes": "144x144"
},
{
"src": "dist/icons/android-chrome-192x192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "dist/icons/android-chrome-256x256.png",
"type": "image/png",
"sizes": "256x256"
},
{
"src": "dist/icons/android-chrome-384x384.png",
"type": "image/png",
"sizes": "384x384"
},
{
"src": "dist/icons/android-chrome-512x512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": "/index.html/?source=pwa",
"background_color": "#BCA9F5",
"display": "standalone",
"scope": "/",
"theme_color": "#121f42"
}

1
docs/dist/voronoi-app.js vendored Normal file

File diff suppressed because one or more lines are too long

1
docs/dist/voronoi-styles.css vendored Normal file
View File

@ -0,0 +1 @@
.links{stroke:#121f42;stroke-opacity:.2}.polygons{fill:none;stroke:#121f42}.polygons :first-child{fill:#f4be1a}.deselect-polygon{fill:#121f42!important}.sites{fill:none;stroke:#121f42}.sites :first-child{fill:#121f42;stroke:#121f42}.v-0{fill:#121f42}.v-1{fill:#132146}.v-2{fill:#14234a}.v-3{fill:#15254e}.v-4{fill:#162752}.v-5{fill:#172856}.v-6{fill:#192a5a}.v-7{fill:#1a2c5e}.v-8{fill:#1b2e62}.v-9{fill:#1c3066}.github-corner svg{fill:#f4be1a}.progress{background:#f4be1a}path.octo-arm,path.octo-body{fill:#121f42}section.cover .cover-main h1 a span{color:#f4be1a}section.cover .cover-main blockquote p{color:#e8e8e8}section.cover .cover-main p:last-child a{color:#f4be1a;border-radius:3px;border:2px solid #f4be1a}section.cover .cover-main p:last-child a:hover{background:#f9da7b;opacity:1}section.cover .cover-main p:last-child a:last-child{color:#272727;background:#f4be1a}section.cover .cover-main p:last-child a:last-child:hover{background:#f9da7b;opacity:1}section.cover .cover-main .cover-footer{position:absolute;bottom:2em;width:100%;text-align:center}section.cover .cover-main .cover-footer a{display:inline-block;color:#f4be1a;padding:1em 2em;min-width:200px;border-radius:3px;border:2px solid transparent}section.cover .cover-main .cover-footer a:hover{border:2px solid #f4be1a}body,html{margin:0;padding:0;height:100%;width:100%;position:relative;overflow-y:auto}#vonoroi{min-height:100%;min-width:100%;position:absolute}a,div,h1,h2,h3,p,span{font-family:Raleway,sans-serif}.markdown-section a{color:#121f42}.markdown-section a:hover,.markdown-section code,.markdown-section pre>code,.sidebar ul li.active>a{color:#f4be1a}.sidebar-toggle span{background-color:#f4be1a}section.content{background:#fff}div.p404{width:80%;margin:1em auto}div.p404 h1,div.p404 h2{text-align:center}div.p404 h1{font-weight:700;font-size:5em}div.p404 h2{font-size:2em}div.p404 .p404-links{margin:20% auto}div.p404 .p404-links a{text-align:center;color:#121f42;min-width:180px;display:inline-block;margin:.5em;padding:.25em .5em;border:2px solid transparent;border-radius:3px}div.p404 .p404-links a:hover{border:2px solid #121f42}

View File

@ -1,24 +1,116 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Personal Security Checklist</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="A Curated List of Cyber Security Essentials to Protect your Digital Life in 2018">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css">
<link rel="stylesheet" href="assets/as93-docs-theme.css">
</head>
<body>
<div id="app"></div>
<script>
window.$docsify = {
name: 'Personal Security Checklist',
repo: 'https://github.com/Lissy93/personal-security-checklist',
coverpage: true,
coverpage: 'cover-page.md'
}
</script>
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
</body>
</html>
<html>
<head>
<!-- Site Basic Meta Info -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<!-- Site Basic Name Info -->
<title>Personal Security Checklist</title>
<meta name="author" content="Alicia Sykes">
<meta name="description" content="A checklist of basic things you should do, to stay safer online">
<meta name="keywords" content="voroni,d3,demo,lissy93">
<meta name="image" content="dist/assets/cover.png">
<link rel="canonical" href="https://lissy93.github.io/personal-security-checklist/#/" />
<!-- App Manifest -->
<link rel="manifest" href="dist/manifest.json">
<meta name="theme-color" content="#121f42"/>
<!-- Schema.org for Google -->
<meta itemprop="name" content="Personal Security Checklist">
<meta itemprop="description" content="A checklist of basic things you should do, to stay safer online">
<meta itemprop="image" content="dist/assets/cover.png">
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Personal Security Checklist">
<meta name="twitter:description" content="A checklist of basic things you should do, to stay safer online">
<meta name="twitter:image" content="dist/assets/cover.png">
<!-- Open Graph general (Facebook, Pinterest & Google+) -->
<meta name="og:title" content="Personal Security Checklist">
<meta name="og:description" content="A checklist of basic things you should do, to stay safer online">
<meta name="og:image" content="dist/assets/cover.png">
<meta name="og:url" content="https://lissy93.github.io/personal-security-checklist/#/">
<meta name="og:site_name" content="Personal Security Checklist">
<meta name="og:type" content="website">
<!-- Fonts, Icons and Styles -->
<link rel="shortcut icon" href="dist/icons/favicon.ico" type="image/vnd.microsoft.icon">
<link href="https://fonts.googleapis.com/css?family=Raleway" rel="stylesheet">
<link rel="stylesheet" href="https://unpkg.com/docsify/lib/themes/vue.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.1/css/bulma.min.css" />
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" crossorigin="anonymous">
<link rel="stylesheet" href="dist/voronoi-styles.css" type="text/css">
</head>
<body>
<div id="vonoroi"></div>
<div id="app"></div>
<script>
window.$docsify = {
name: 'Personal Security Checklist',
repo: 'https://github.com/Lissy93/personal-security-checklist',
ga: 'UA-120900119-4',
homepage: 'readme.md',
coverpage: 'pages/cover.md',
notFoundPage: 'pages/404.md',
themeColor: '#121f42',
auto2top: true,
homepage: 'https://raw.githubusercontent.com/Lissy93/personal-security-checklist/master/readme.md',
search: {
maxAge: 86400000,
paths: ['readme.md'],
placeholder: 'Type to search',
noData: 'No Results!',
},
plugins: [
function (hook) {
hook.ready(function () {
Window.finishMdRender();
})
},
function (hook) {
var footer = [
'<hr/>',
'<footer>',
'<span><a href="https://aliciasykes.com">Alicia Sykes</a> &copy;2018.</span>',
'</footer>'
].join('')
hook.afterEach(function (html) {
return html + footer
})
}
]
}
</script>
<!-- Docsify and Plugins -->
<script src="https://unpkg.com/docsify/lib/docsify.min.js"></script>
<script src="//unpkg.com/docsify-copy-code"></script>
<script src="//unpkg.com/docsify/lib/plugins/ga.min.js"></script>
<script src="//unpkg.com/docsify/lib/plugins/search.min.js"></script>
<script src="//unpkg.com/docsify/lib/plugins/zoom-image.min.js"></script>
<!-- JavaScripts (D3 and voronoi + website scripts) -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.min.js"></script>
<script src="dist/voronoi-app.js"></script>
</body>
</html>

56
docs/package.json Normal file
View File

@ -0,0 +1,56 @@
{
"name": "personal-security-checklist-docs",
"version": "1.0.0",
"description": "The documentation site for code related to the personal-security-checklist repo",
"main": "server.js",
"scripts": {
"start": "open index.html",
"serve": "node server.js",
"build": "webpack",
"dev": "webpack-dev-server",
"test": "echo \"Error: Specific tests are yet to be specified\" && exit 0",
"clean": "git clean -x && rm -r dist",
"postinstall": "webpack"
},
"keywords": [
"voroni",
"d3",
"demo",
"lissy93",
"security",
"personal-security",
"cyber-security",
"checklist"
],
"author": "Alicia Sykes",
"license": "MIT",
"devDependencies": {
"@babel/core": "^7.0.0-beta.49",
"@babel/preset-env": "^7.0.0-beta.49",
"@babel/preset-es2016": "^7.0.0-beta.49",
"babel-loader": "^8.0.0-beta.3",
"copy-webpack-plugin": "^4.5.1",
"css-loader": "^0.28.11",
"favicons-webpack-plugin": "0.0.9",
"handlebars-webpack-plugin": "^1.4.2",
"html-webpack-plugin": "^3.2.0",
"mini-css-extract-plugin": "^0.4.0",
"node-sass": "^4.9.0",
"optimize-css-assets-webpack-plugin": "^4.0.2",
"sass-loader": "^7.0.1",
"style-loader": "^0.21.0",
"ts-loader": "^4.3.0",
"typescript": "^2.9.1",
"webpack": "^4.11.1",
"webpack-cli": "^3.0.2"
},
"dependencies": {
"bulma": "^0.7.1",
"connect": "^3.6.6",
"d3": "^5.4.0",
"docsify": "^4.6.10",
"font-awesome": "^4.7.0",
"raleway-webfont": "^3.0.1",
"serve-static": "^1.13.2"
}
}

14
docs/pages/404.md Normal file
View File

@ -0,0 +1,14 @@
<div class="p404">
<h1>404</h1>
<h2>That page wasn't found</h2>
<div class="p404-links">
[<i class="fas fa-home"></i> Back to Homepage](/)
[<i class="fas fa-desktop"></i> Demo](/)
[<i class="fas fa-suitcase"></i> License](#)
</div>
<div>

9
docs/pages/cover.md Normal file
View File

@ -0,0 +1,9 @@
# Personal Security Checklist
> A list of hints and tips to stay safe in cyber space
[<i class="fab fa-github"></i> Source Code](https://github.com/Lissy93/personal-security-checklist)
[<i class="fas fa-book"></i> The List](#main)
<!-- Backup background color -->
![color](#121f42)

View File

@ -0,0 +1,41 @@
## Documentation for the GitHub Docs Site
<p align="center">
<a href="https://travis-ci.org/Lissy93/voronoi-site-template"><img data-no-zoom src="https://travis-ci.org/Lissy93/voronoi-site-template.svg?branch=master" alt="Build Status" /></a>
<a href="https://www.codacy.com/app/lissy93/voronoi-site-template?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=Lissy93/voronoi-site-template&amp;utm_campaign=Badge_Grade"><img src="https://api.codacy.com/project/badge/Grade/42869ef92bb2469e9f92bcf5de15bc94" alt="Codacy Badge" /></a>
<a href="https://david-dm.org/Lissy93/voronoi-site-template"><img data-no-zoom src="https://david-dm.org/Lissy93/voronoi-site-template/status.svg" alt="dependencies Status" /></a>
<a href="https://david-dm.org/Lissy93/voronoi-site-template?type=dev"><img data-no-zoom src="https://david-dm.org/Lissy93/voronoi-site-template/dev-status.svg" alt="devDependencies Status" /></a>
<a href="https://github.com/Lissy93/voronoi-site-template/commits/master"><img data-no-zoom src="https://img.shields.io/maintenance/yes/2018.svg?style=flat-square" alt="Maintenance" /></a>
<a href="https://codeclimate.com/github/Lissy93/voronoi-site-template/maintainability"><img data-no-zoom src="https://api.codeclimate.com/v1/badges/58e7ee2c035047d1572e/maintainability" alt="Maintainability" /></a>
</p>
## Installing
Simply clone the repo, navigate into the new directory, install dependencies, build, and your ready to go!
```console
git clone https://github.com/Lissy93/voronoi-site-template.git
cd voronoi-site-template
yarn
```
## Building, Developing and Deploying
- [**`npm run build`**](package.json#L9) *Triggers complete webpack build*
- [**`npm run start`**](package.json#L7) *Opens the standalone version*
- [**`npm run serve`**](package.json#L8) *Runs app on a lightweight node server*
- [**`npm run dev`**](package.json#L10) *Starts webpack-dev-server, for live changes*
- [**`npm run clean`**](package.json#L12) *Removes all generated files and libraries*
- [**`npm run test`**](package.json#L11) *Executes the test scripts*
*__Note:__ You should only need to modify files within the [`/src`](src/) directory, and the [`*.md`](pages/) files. Anything else will be overidden when webpack builds.*
## Credits
- This project uses [Docsify](https://github.com/QingWei-Li/docsify/) to display MD docs and for navigation
- The homepage Vonoroi visualisation was based on Mike Bostock's origional D3.js [voronoi](https://github.com/d3/d3-voronoi) script.
## License
Licensed under MIT, (C) [Alicia Sykes](https://aliciasykes.com) 2018. [Read full License](LICENSE.md).
[![License](https://upload.wikimedia.org/wikipedia/commons/f/f8/License_icon-mit-88x31-2.svg)](LICENSE.md)

5
docs/server.js Normal file
View File

@ -0,0 +1,5 @@
var connect = require('connect');
var serveStatic = require('serve-static');
connect().use(serveStatic(__dirname)).listen(8080, function(){
console.log('Server running on 8080...');
});

BIN
docs/src/assets/cover.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

BIN
docs/src/assets/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

116
docs/src/index.hbs Normal file
View File

@ -0,0 +1,116 @@
<!DOCTYPE html>
<html>
<head>
<!-- Site Basic Meta Info -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<!-- Site Basic Name Info -->
<title>{{meta.title}}</title>
<meta name="author" content="{{meta.author}}">
<meta name="description" content="{{meta.description}}">
<meta name="keywords" content="{{meta.keywords}}">
<meta name="image" content="dist/assets/cover.png">
<link rel="canonical" href="{{meta.url}}" />
<!-- App Manifest -->
<link rel="manifest" href="dist/manifest.json">
<meta name="theme-color" content="{{meta.color}}"/>
<!-- Schema.org for Google -->
<meta itemprop="name" content="{{meta.title}}">
<meta itemprop="description" content="{{meta.description}}">
<meta itemprop="image" content="dist/assets/cover.png">
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{{meta.title}}">
<meta name="twitter:description" content="{{meta.description}}">
<meta name="twitter:image" content="dist/assets/cover.png">
<!-- Open Graph general (Facebook, Pinterest & Google+) -->
<meta name="og:title" content="{{meta.title}}">
<meta name="og:description" content="{{meta.description}}">
<meta name="og:image" content="dist/assets/cover.png">
<meta name="og:url" content="{{meta.url}}">
<meta name="og:site_name" content="{{meta.title}}">
<meta name="og:type" content="website">
<!-- Fonts, Icons and Styles -->
<link rel="shortcut icon" href="dist/icons/favicon.ico" type="image/vnd.microsoft.icon">
<link href="https://fonts.googleapis.com/css?family=Raleway" rel="stylesheet">
<link rel="stylesheet" href="https://unpkg.com/docsify/lib/themes/vue.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.1/css/bulma.min.css" />
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" crossorigin="anonymous">
<link rel="stylesheet" href="dist/voronoi-styles.css" type="text/css">
</head>
<body>
<div id="vonoroi"></div>
<div id="app"></div>
<script>
window.$docsify = {
name: '{{meta.title}}',
repo: '{{meta.repo}}',
ga: '{{meta.ga}}',
homepage: 'readme.md',
coverpage: 'pages/cover.md',
notFoundPage: 'pages/404.md',
themeColor: '{{meta.color}}',
auto2top: true,
homepage: 'https://raw.githubusercontent.com/Lissy93/personal-security-checklist/master/readme.md',
search: {
maxAge: 86400000,
paths: ['readme.md'],
placeholder: 'Type to search',
noData: 'No Results!',
},
plugins: [
function (hook) {
hook.ready(function () {
Window.finishMdRender();
})
},
function (hook) {
var footer = [
'<hr/>',
'<footer>',
'<span><a href="https://aliciasykes.com">Alicia Sykes</a> &copy;2018.</span>',
'</footer>'
].join('')
hook.afterEach(function (html) {
return html + footer
})
}
]
}
</script>
<!-- Docsify and Plugins -->
<script src="https://unpkg.com/docsify/lib/docsify.min.js"></script>
<script src="//unpkg.com/docsify-copy-code"></script>
<script src="//unpkg.com/docsify/lib/plugins/ga.min.js"></script>
<script src="//unpkg.com/docsify/lib/plugins/search.min.js"></script>
<script src="//unpkg.com/docsify/lib/plugins/zoom-image.min.js"></script>
<!-- JavaScripts (D3 and voronoi + website scripts) -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.min.js"></script>
<script src="dist/voronoi-app.js"></script>
</body>
</html>

13
docs/src/locals.json Normal file
View File

@ -0,0 +1,13 @@
{
"meta":{
"title": "Personal Security Checklist",
"author": "Alicia Sykes",
"description": "A checklist of basic things you should do, to stay safer online",
"keywords": "voroni,d3,demo,lissy93",
"url": "https://lissy93.github.io/personal-security-checklist/#/",
"repo": "https://github.com/Lissy93/personal-security-checklist",
"color": "#121f42",
"ga": "UA-120900119-4"
},
"show-vonori-chart": true
}

8
docs/src/main.js Normal file
View File

@ -0,0 +1,8 @@
import './styles/voronoi-styles.scss'
import D3Voronoi from './scripts/d3-voronoi.ts'
import SmoothScrolling from './scripts/page-actions.js'
const voronoi = new D3Voronoi();
// I will go to hell for this next line
Window.finishMdRender = ()=> SmoothScrolling();

56
docs/src/manifest.json Normal file
View File

@ -0,0 +1,56 @@
{
"short_name": "Security Checklist",
"name": "Personal Security Checklist",
"icons": [
{
"src": "dist/icons/android-chrome-36x36.png",
"type": "image/png",
"sizes": "36x36"
},
{
"src": "dist/icons/android-chrome-48x48.png",
"type": "image/png",
"sizes": "48x48"
},
{
"src": "dist/icons/android-chrome-72x72.png",
"type": "image/png",
"sizes": "72x72"
},
{
"src": "dist/icons/android-chrome-96x96.png",
"type": "image/png",
"sizes": "96x96"
},
{
"src": "dist/icons/android-chrome-144x144.png",
"type": "image/png",
"sizes": "144x144"
},
{
"src": "dist/icons/android-chrome-192x192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "dist/icons/android-chrome-256x256.png",
"type": "image/png",
"sizes": "256x256"
},
{
"src": "dist/icons/android-chrome-384x384.png",
"type": "image/png",
"sizes": "384x384"
},
{
"src": "dist/icons/android-chrome-512x512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": "/index.html/?source=pwa",
"background_color": "#BCA9F5",
"display": "standalone",
"scope": "/",
"theme_color": "#121f42"
}

View File

@ -0,0 +1,153 @@
declare const d3; // D3.js is either already bundled by Webpack or fetched via CDN
export default class D3Voronoi{
/* Defining the attrinbuteds */
private target;
private svg;
private height;
private width;
private voronoi;
private sites;
private polygon;
private link;
private site;
constructor(targetContainer = '#vonoroi'){
this.target = d3.select(targetContainer);
this.renderTheAwesome()
this.watchForResize();
}
/**
* This is the main render method
*/
public renderTheAwesome(){
this.svg = this.target.append("svg");
this.width = this.target.node().getBoundingClientRect().width;
this.height = this.target.node().getBoundingClientRect().height;
this.svg.attr('width', this.width);
this.svg.attr('height', this.height);
this.mouseLeaveEvents();
/* Calculate how many sites to display and generate them */
this.sites = d3.range(300).map((d) => {
return [Math.random() * this.width, Math.random() * this.height];
});
/* Add the mouseover event, for highlighting */
let that = this;
this.svg.on('touchmove mousemove', function(){
that.sites[0] = d3.mouse(this);
that.redraw();
});
/* Initialise the D3 Voroni */
this.voronoi = d3.voronoi()
.extent([[-1, -1], [this.width + 1, this.height + 1]]);
/* Add Polygon for each site */
this.polygon = this.svg.append('g')
.attr('class', 'polygons')
.selectAll('path')
.data(this.voronoi.polygons(this.sites))
.enter().append('path')
.call(this.redrawPolygon);
/* Add Lines for each polygon */
this.link = this.svg.append('g')
.attr('class', 'links')
.selectAll('line')
.data(this.voronoi.links(this.sites))
.enter().append('line')
.call(this.redrawLink);
/* Add the actual Site */
this.site = this.svg.append('g')
.attr('class', 'sites')
.selectAll('circle')
.data(this.sites)
.enter().append('circle')
.attr('r', 2.5)
.call(this.redrawSite);
}
/**
* Triggers the render methods for polygons, lins and sites
*/
private redraw() {
const diagram = this.voronoi(this.sites);
this.polygon = this.polygon.data(diagram.polygons()).call(this.redrawPolygon);
this.link = this.link.data(diagram.links()), this.link.exit().remove();
this.link = this.link.enter().append('line').merge(this.link).call(this.redrawLink);
this.site = this.site.data(this.sites).call(this.redrawSite);
}
/**
* Renders a given polygon
* @param polygon
*/
private redrawPolygon(polygon) {
polygon
.attr('d', (d) => { return d ? 'M' + d.join('L') + 'Z' : null; })
.attr('class', (d, i) => { return 'v-' + i % 9; });
}
/**
* Sets the dimensions and positions of the links between sites
* @param link
*/
private redrawLink(link) {
link
.attr('x1', (d) => { return d.source[0]; })
.attr('y1', (d) => { return d.source[1]; })
.attr('x2', (d) => { return d.target[0]; })
.attr('y2', (d) => { return d.target[1]; });
}
/**
* Sets dimensions and positions of each given site
* @param site
*/
private redrawSite(site) {
site
.attr('cx', (d) => { return d[0]; })
.attr('cy', (d) => { return d[1]; });
}
/**
* Removes old svg and rerenders a new one
* Only used in the (hopefully) rare occasion
* that a user will resize their browser
*/
private rerender(){
this.svg.remove();
this.renderTheAwesome();
}
/**
* Work-around to make the chart work on all (most) screen sizes
* @param event
*/
private watchForResize(){
let resizeTimer = undefined;
window.addEventListener('resize', () => {
clearTimeout(resizeTimer);
return resizeTimer = setTimeout((() =>
this.rerender() ), 250);
})
}
private mouseLeaveEvents(){
let that = this;
this.svg.on('mouseleave', function() {
d3.selectAll('.polygons :first-child').attr('class', 'deselect-polygon');
});
}
}

View File

@ -0,0 +1,8 @@
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-Y']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

View File

@ -0,0 +1,12 @@
/* Smooth Scrolling for Internal Anchor Links */
export default () => {
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
document.querySelector(this.getAttribute('href').replace('/?id=', '')).scrollIntoView({
behavior: 'smooth'
});
});
});
}

36
docs/src/styles/404.scss Normal file
View File

@ -0,0 +1,36 @@
@import 'constants.scss';
div.p404 {
width: 80%;
margin: 1em auto;
h1, h2 {
text-align: center;
}
h1{
font-weight: bold;
font-size: 5em;
}
h2{
font-size: 2em;
}
.p404-links{
margin: 20% auto;
a{
text-align: center;
color: $col-cover-secondry;
min-width: 180px;
display: inline-block;
margin: 0.5em;
padding: 0.25em 0.5em;
border: 2px solid transparent;
border-radius: 3px;
&:hover{
border: 2px solid $col-cover-secondry;
}
}
}
}

View File

@ -0,0 +1,19 @@
/* Default Website Font*/
$font: 'Raleway', sans-serif;
/* Website Cover Colors */
$col-cover-primary: #f4be1a;
$col-cover-secondry: #121f42;
$col-cover-pale: #E8E8E8;
$col-cover-dark: #272727;
/* Vonoroi Chart Colors */
$col-lines: #121f42;
$col-initial-primary-fill: #121f42;
$col-selected-polygon: #f4be1a;
$col-selected-site-fill: #121f42;
$col-selected-site-stroke: #121f42;
$col-sites-fill: none;
$col-sites-line: #121f42;

View File

@ -0,0 +1,75 @@
@import 'constants.scss';
.github-corner svg{
fill: $col-cover-primary;
}
.progress{
background: $col-cover-primary;
}
path.octo-body, path.octo-arm{
fill: $col-cover-secondry;
}
section.cover .cover-main{
/* Main cover title */
h1 a span{
color: $col-cover-primary;
}
/* Tag line / short description */
blockquote p{
color: $col-cover-pale;
}
/* All but the last button */
p:last-child a{
color: $col-cover-primary;
border-radius: 3px;
border: 2px solid $col-cover-primary;
&:hover{
background: lighten($col-cover-primary, 20);
opacity: 1;
}
}
/* Last button */
p:last-child a:last-child{
color: $col-cover-dark;
background: $col-cover-primary;
&:hover{
background: lighten($col-cover-primary, 20);
opacity: 1;
}
}
.cover-footer{
position: absolute;
bottom: 2em;
width: 100%;
text-align: center;
a{
display: inline-block;
color: $col-cover-primary;
padding: 1em 2em;
min-width: 200px;
border-radius: 3px;
border: 2px solid transparent;
&:hover{
border: 2px solid $col-cover-primary;
}
}
}
}
.cover{
height: auto !important;
min-height: 30%;
max-height: 50%;
}

View File

@ -0,0 +1,49 @@
@import 'constants.scss';
/* Cover Page Layout */
html, body{
margin: 0;
padding: 0;
height:100%;
width: 100%;
position: relative;
overflow-y: auto;
}
#vonoroi{
min-height: 100%;
min-width: 100%;
position: absolute;
}
/* Set fonts */
h1, h2, h3, p, span, a, div {
font-family: $font;
}
/* Underline colors for MD headings */
.markdown-section a {
color: $col-cover-secondry;
&:hover{
color: $col-cover-primary;
}
}
/* Selected link color for sidebar */
.sidebar ul li.active>a{
color: $col-cover-primary;
}
/* Color of code snippets */
.markdown-section code, .markdown-section pre>code{
color: $col-cover-primary;
}
/* Color of burger menu */
.sidebar-toggle span{
background-color: $col-cover-primary;
}
section.content{
background: #FFFFFF;
}

View File

@ -0,0 +1,36 @@
@import 'constants.scss';
.links {
stroke: $col-lines;
stroke-opacity: 0.2;
}
.polygons {
fill: none;
stroke: $col-lines;
}
.polygons :first-child {
fill: $col-selected-polygon;
}
.deselect-polygon {
fill: $col-initial-primary-fill !important;
}
.sites {
fill: $col-sites-fill;
stroke: $col-sites-line;
}
.sites :first-child {
fill: $col-selected-site-fill;
stroke: $col-selected-site-stroke;
}
@for $von-num from 0 through 9 {
.v-#{$von-num} {
fill: lighten($col-initial-primary-fill, $von-num*1);
}
}

View File

@ -0,0 +1,5 @@
@import 'vonoroi-chart-colors.scss';
@import 'cover-styles.scss';
@import 'general-site-styles.scss';
@import '404.scss';

1
docs/src/tsconfig.json Normal file
View File

@ -0,0 +1 @@
{}

138
docs/webpack.config.js Normal file
View File

@ -0,0 +1,138 @@
const path = require('path');
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HandlebarsPlugin = require("handlebars-webpack-plugin");
const FaviconsWebpackPlugin = require('favicons-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
module.exports = {
mode: 'production',
entry: {
'voronoi-app': './src/main.js',
analytics: './src/scripts/google-analytics.js',
},
output: {
path: path.join(__dirname, 'dist'),
publicPath: "/dist/",
filename: '[name].js'
},
resolve: {
extensions: ['.ts', '.js' ]
},
module: {
rules: [
{
test: /\.js?$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-es2016']
}
}
},
{
test: /\.ts?$/,
loader: 'ts-loader',
exclude: /node_modules/,
options: {
configFile: 'src/tsconfig.json'
}
},
{
test: /\.scss$/,
use: [ 'style-loader', MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader']
}
]
},
devServer: { /* todo */},
externals: {
d3: 'd3'
},
optimization: {
minimizer: [
new UglifyJsPlugin({
cache: true,
parallel: true
}),
new OptimizeCSSAssetsPlugin({})
]
},
plugins: [
new FaviconsWebpackPlugin({
logo: './src/assets/icon.png',
prefix: 'icons/',
inject: false,
persistentCache: false,
icons: {
android: true,
appleIcon: false,
appleStartup: false,
coast: false,
favicons: true,
firefox: false,
windows: false,
yandex: false
}
}),
new HandlebarsPlugin({
entry: 'src/index.hbs',
output: 'index.html',
data: 'src/locals.json'
}),
new MiniCssExtractPlugin({
filename: 'voronoi-styles.css',
}),
// new HtmlWebpackPlugin({
// template: 'src/main.js',
// title: 'HTML Webpack Plugin',
// }),
new webpack.ProvidePlugin({
_: "underscore"
}),
new CopyWebpackPlugin([
// Static Assets
{ from: 'src/manifest.json', to: '' },
{ from: 'src/assets', to: 'assets' },
// Offline fallback for CDN libraries - JS
{ from: 'node_modules/d3/dist/d3.min.js', to: 'lib/js' },
{ from: 'node_modules/docsify/lib/docsify.min.js', to: 'lib/js' },
{ from: 'node_modules/docsify/lib/plugins/emoji.min.js', to: 'lib/js' },
{ from: 'node_modules/docsify/lib/plugins/external-script.min.js', to: 'lib/js' },
{ from: 'node_modules/docsify/lib/plugins/ga.min.js', to: 'lib/js' },
{ from: 'node_modules/docsify/lib/plugins/gitalk.min.js', to: 'lib/js' },
{ from: 'node_modules/docsify/lib/plugins/search.min.js', to: 'lib/js' },
{ from: 'node_modules/docsify/lib/plugins/zoom-image.min.js', to: 'lib/js' },
// Offline fallback for CDN libraries - CSS
{ from: 'node_modules/raleway-webfont/raleway.min.css', to: 'lib/font' },
{ from: 'node_modules/bulma/css/bulma.min.css', to: 'lib/css' },
{ from: 'node_modules/docsify/lib/themes/vue.css', to: 'lib/css' },
{ from: 'node_modules/font-awesome/css/font-awesome.min.css', to: 'lib/css' }
])
]
};

6258
docs/yarn.lock Normal file

File diff suppressed because it is too large Load Diff