updated documentation
145
.github/workflows/deploy.yaml
vendored
@@ -1,145 +0,0 @@
|
|||||||
name: Build & deploy
|
|
||||||
|
|
||||||
on:
|
|
||||||
release:
|
|
||||||
types: [created] # will be triggered when a NON-draft release is created and published.
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
aws-deploy: # see: https://github.com/undergroundwires/aws-static-site-with-cd
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: "Infrastructure: Checkout"
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
path: aws
|
|
||||||
repository: undergroundwires/aws-static-site-with-cd
|
|
||||||
-
|
|
||||||
name: "Infrastructure: Create AWS user profile & session name"
|
|
||||||
run: >-
|
|
||||||
bash "scripts/configure/create-user-profile.sh" \
|
|
||||||
--profile user \
|
|
||||||
--access-key-id ${{secrets.AWS_DEPLOYMENT_USER_ACCESS_KEY_ID}} \
|
|
||||||
--secret-access-key ${{secrets.AWS_DEPLOYMENT_USER_SECRET_ACCESS_KEY}} \
|
|
||||||
--region us-east-1 \
|
|
||||||
&& \
|
|
||||||
echo "::set-env name=SESSION_NAME::${{github.actor}}-${{github.event_name}}-$(echo ${{github.sha}} | cut -c1-8)"
|
|
||||||
working-directory: aws
|
|
||||||
-
|
|
||||||
name: "Infrastructure: Deploy IAM stack"
|
|
||||||
run: >-
|
|
||||||
bash "scripts/deploy/deploy-stack.sh" \
|
|
||||||
--template-file stacks/iam-stack.yaml \
|
|
||||||
--stack-name privacysexy-iam-stack \
|
|
||||||
--capabilities CAPABILITY_IAM \
|
|
||||||
--parameter-overrides "WebStackName=privacysexy-web-stack DnsStackName=privacysexy-dns-stack \
|
|
||||||
CertificateStackName=privacysexy-cert-stack RootDomainName=privacy.sexy" \
|
|
||||||
--region us-east-1 --role-arn ${{secrets.AWS_IAM_STACK_DEPLOYMENT_ROLE_ARN}} \
|
|
||||||
--profile user --session ${{ env.SESSION_NAME }}
|
|
||||||
working-directory: aws
|
|
||||||
-
|
|
||||||
name: "Infrastructure: Deploy DNS stack"
|
|
||||||
run: >-
|
|
||||||
bash "scripts/deploy/deploy-stack.sh" \
|
|
||||||
--template-file stacks/dns-stack.yaml \
|
|
||||||
--stack-name privacysexy-dns-stack \
|
|
||||||
--parameter-overrides "RootDomainName=privacy.sexy" \
|
|
||||||
--region us-east-1 \
|
|
||||||
--role-arn ${{secrets.AWS_DNS_STACK_DEPLOYMENT_ROLE_ARN}} \
|
|
||||||
--profile user --session ${{ env.SESSION_NAME }}
|
|
||||||
working-directory: aws
|
|
||||||
-
|
|
||||||
name: "Infrastructure: Deploy certificate stack"
|
|
||||||
run: >-
|
|
||||||
bash "scripts/deploy/deploy-stack.sh" \
|
|
||||||
--template-file stacks/certificate-stack.yaml \
|
|
||||||
--stack-name privacysexy-cert-stack \
|
|
||||||
--capabilities CAPABILITY_IAM \
|
|
||||||
--parameter-overrides "IamStackName=privacysexy-iam-stack RootDomainName=privacy.sexy DnsStackName=privacysexy-dns-stack" \
|
|
||||||
--region us-east-1 \
|
|
||||||
--role-arn ${{secrets.AWS_CERTIFICATE_STACK_DEPLOYMENT_ROLE_ARN}} \
|
|
||||||
--profile user --session ${{ env.SESSION_NAME }}
|
|
||||||
working-directory: aws
|
|
||||||
-
|
|
||||||
name: "Infrastructure: Deploy web stack"
|
|
||||||
run: >-
|
|
||||||
bash "scripts/deploy/deploy-stack.sh" \
|
|
||||||
--template-file stacks/web-stack.yaml \
|
|
||||||
--stack-name privacysexy-web-stack \
|
|
||||||
--parameter-overrides "CertificateStackName=privacysexy-cert-stack DnsStackName=privacysexy-dns-stack \
|
|
||||||
RootDomainName=privacy.sexy UseDeepLinks=true" \
|
|
||||||
--capabilities CAPABILITY_IAM \
|
|
||||||
--region us-east-1 \
|
|
||||||
--role-arn ${{secrets.AWS_WEB_STACK_DEPLOYMENT_ROLE_ARN}} \
|
|
||||||
--profile user --session ${{ env.SESSION_NAME }}
|
|
||||||
working-directory: aws
|
|
||||||
-
|
|
||||||
name: "App: Checkout"
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
path: site
|
|
||||||
ref: master # otherwise we don't get version bump commit
|
|
||||||
-
|
|
||||||
name: "App: Setup node"
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '14.x'
|
|
||||||
-
|
|
||||||
name: "App: Install dependencies"
|
|
||||||
run: npm ci
|
|
||||||
working-directory: site
|
|
||||||
-
|
|
||||||
name: "App: Run tests"
|
|
||||||
run: npm run test:unit
|
|
||||||
working-directory: site
|
|
||||||
-
|
|
||||||
name: "App: Build"
|
|
||||||
run: npm run build
|
|
||||||
working-directory: site
|
|
||||||
-
|
|
||||||
name: "App: Deploy to S3"
|
|
||||||
run: >-
|
|
||||||
bash "aws/scripts/deploy/deploy-to-s3.sh" \
|
|
||||||
--folder site/dist \
|
|
||||||
--web-stack-name privacysexy-web-stack --web-stack-s3-name-output-name S3BucketName \
|
|
||||||
--storage-class ONEZONE_IA \
|
|
||||||
--role-arn ${{secrets.AWS_S3_SITE_DEPLOYMENT_ROLE_ARN}} \
|
|
||||||
--region us-east-1 \
|
|
||||||
--profile user --session ${{ env.SESSION_NAME }}
|
|
||||||
-
|
|
||||||
name: "App: Invalidate CloudFront cache"
|
|
||||||
run: >-
|
|
||||||
bash "aws/scripts/deploy/invalidate-cloudfront-cache.sh" \
|
|
||||||
--paths "/*" \
|
|
||||||
--web-stack-name privacysexy-web-stack --web-stack-cloudfront-arn-output-name CloudFrontDistributionArn \
|
|
||||||
--role-arn ${{secrets.AWS_CLOUDFRONT_SITE_DEPLOYMENT_ROLE_ARN}} \
|
|
||||||
--region us-east-1 \
|
|
||||||
--profile user --session ${{ env.SESSION_NAME }}
|
|
||||||
desktop-deploy:
|
|
||||||
runs-on: windows-latest
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Set GitHub PAT token # https://nklayman.github.io/vue-cli-plugin-electron-builder/guide/recipes.html#github-personal-access-token
|
|
||||||
run: set GH_TOKEN=TOKEN-GOES-HERE
|
|
||||||
-
|
|
||||||
name: Checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
ref: master # otherwise it defaults to the version tag missing bump commit
|
|
||||||
fetch-depth: 0 # fetch all history
|
|
||||||
- name: Checkout to bump commit
|
|
||||||
run: git checkout "$(git rev-list "${{ github.event.release.tag_name }}"..master | tail -1)"
|
|
||||||
-
|
|
||||||
name: Setup node
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '14.x'
|
|
||||||
-
|
|
||||||
name: Install dependencies
|
|
||||||
run: npm ci
|
|
||||||
-
|
|
||||||
name: Run tests
|
|
||||||
run: npm run test:unit
|
|
||||||
-
|
|
||||||
name: Upload Release to GitHub # https://nklayman.github.io/vue-cli-plugin-electron-builder/guide/recipes.html#upload-release-to-github
|
|
||||||
run: npm run electron:build -- -p always
|
|
||||||
12
CHANGELOG.md
@@ -1,5 +1,17 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.6.0 (2020-07-26)
|
||||||
|
|
||||||
|
* fixed dead links in documentation | [commit](https://github.com/undergroundwires/privacy.sexy/commit/25ce236a7737decaf2eb9b8c29a4c4f34d43f770)
|
||||||
|
* runs tests on each push on the repository | [commit](https://github.com/undergroundwires/privacy.sexy/commit/73c426844a0330718a9ab7de12b61ca05e853323)
|
||||||
|
* code area now shows "how" before "why" | [commit](https://github.com/undergroundwires/privacy.sexy/commit/4ff4b52202b1c5dbfe2b80580bbe7d93132ab05c)
|
||||||
|
* support for desktop versions #20 | [commit](https://github.com/undergroundwires/privacy.sexy/commit/5a27f9d86c96be88bb52aa69a84a7e057ac072be)
|
||||||
|
* reworked on footer & removed github icon | [commit](https://github.com/undergroundwires/privacy.sexy/commit/8ab062454db1d8504fb2df4fbb39a7002bafeb09)
|
||||||
|
* updated dependencies to latest | [commit](https://github.com/undergroundwires/privacy.sexy/commit/c335ab33ff612a19af1278bdcc88a14779e8bb91)
|
||||||
|
* updated documentation | [commit](https://github.com/undergroundwires/privacy.sexy/commit/81dfbbef7a8786751fa7693010c80561c5ac6bce)
|
||||||
|
|
||||||
|
[compare](https://github.com/undergroundwires/privacy.sexy/compare/0.5.0...0.6.0)
|
||||||
|
|
||||||
## 0.5.0 (2020-07-19)
|
## 0.5.0 (2020-07-19)
|
||||||
|
|
||||||
* added ability to revert (#21) | [commit](https://github.com/undergroundwires/privacy.sexy/commit/9c063d59defa6297c64f50b49403e8bd10620de9)
|
* added ability to revert (#21) | [commit](https://github.com/undergroundwires/privacy.sexy/commit/9c063d59defa6297c64f50b49403e8bd10620de9)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
- 🙏 DO
|
- 🙏 DO
|
||||||
- Document your changes in the pull request
|
- Document your changes in the pull request
|
||||||
- ❗ DON'T
|
- ❗ DON'T
|
||||||
- Do not update the versions, current version is only [set by the maintainer](./docs/gitops.png) and updated automatically by [bump-everywhere](https://github.com/undergroundwires/bump-everywhere)
|
- Do not update the versions, current version is only [set by the maintainer](./img/gitops.png) and updated automatically by [bump-everywhere](https://github.com/undergroundwires/bump-everywhere)
|
||||||
|
|
||||||
## Guidelines
|
## Guidelines
|
||||||
|
|
||||||
|
|||||||
16
README.md
@@ -15,7 +15,9 @@
|
|||||||
## Get started
|
## Get started
|
||||||
|
|
||||||
- Online version: [https://privacy.sexy](https://privacy.sexy)
|
- Online version: [https://privacy.sexy](https://privacy.sexy)
|
||||||
- Or download latest desktop version for [Windows](https://github.com/undergroundwires/privacy-sexy/releases/download/0.5.0/privacy.sexy-Setup-0.5.0.exe), [Linux](https://github.com/undergroundwires/privacy-sexy/releases/download/0.5.0/privacy.sexy-0.5.0.dmg), [macOS](https://github.com/undergroundwires/privacy-sexy/releases/download/0.5.0/privacy.sexy-0.5.0-mac.zip)
|
- or download latest desktop version for [Windows](https://github.com/undergroundwires/privacy.sexy/releases/download/0.6.0/privacy.sexy-Setup-0.6.0.exe), [Linux](https://github.com/undergroundwires/privacy.sexy/releases/download/0.6.0/privacy.sexy-0.6.0.dmg), [macOS](https://github.com/undergroundwires/privacy.sexy/releases/download/0.6.0/privacy.sexy-0.6.0-mac.zip)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## Why
|
## Why
|
||||||
|
|
||||||
@@ -46,14 +48,14 @@
|
|||||||
- Development: `npm run serve` to compile & hot-reload for development.
|
- Development: `npm run serve` to compile & hot-reload for development.
|
||||||
- Production: `npm run build` to prepare files for distribution.
|
- Production: `npm run build` to prepare files for distribution.
|
||||||
- Or run using Docker:
|
- Or run using Docker:
|
||||||
1. Build: `docker build -t undergroundwires/privacy.sexy:0.5.0 .`
|
1. Build: `docker build -t undergroundwires/privacy.sexy:0.6.0 .`
|
||||||
2. Run: `docker run -it -p 8080:80 --rm --name privacy.sexy-0.5.0 undergroundwires/privacy.sexy:0.5.0`
|
2. Run: `docker run -it -p 8080:80 --rm --name privacy.sexy-0.6.0 undergroundwires/privacy.sexy:0.6.0`
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
### Application
|
### Application
|
||||||
|
|
||||||
- Powered by **TypeScript** + **Vue.js** 💪
|
- Powered by **TypeScript**, **Vue.js** and **Electron** 💪
|
||||||
- and driven by **Domain-driven design**, **Event-driven architecture**, **Data-driven programming** concepts.
|
- and driven by **Domain-driven design**, **Event-driven architecture**, **Data-driven programming** concepts.
|
||||||
- Application uses highly decoupled models & services in different DDD layers.
|
- Application uses highly decoupled models & services in different DDD layers.
|
||||||
- **Domain layer** is where the application is modelled with validation logic.
|
- **Domain layer** is where the application is modelled with validation logic.
|
||||||
@@ -66,11 +68,11 @@
|
|||||||
- The [state](src/application/State/ApplicationState.ts) is a mutable singleton & event producer.
|
- The [state](src/application/State/ApplicationState.ts) is a mutable singleton & event producer.
|
||||||
- The application is defined & controlled in a [single YAML file](src/application/application.yaml) (see [Data-driven programming](https://en.wikipedia.org/wiki/Data-driven_programming))
|
- The application is defined & controlled in a [single YAML file](src/application/application.yaml) (see [Data-driven programming](https://en.wikipedia.org/wiki/Data-driven_programming))
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### AWS Infrastructure
|
### AWS Infrastructure
|
||||||
|
|
||||||
[](https://github.com/undergroundwires/aws-static-site-with-cd)
|
[](https://github.com/undergroundwires/aws-static-site-with-cd)
|
||||||
|
|
||||||
- It uses infrastructure from the following repository: [aws-static-site-with-cd](https://github.com/undergroundwires/aws-static-site-with-cd)
|
- It uses infrastructure from the following repository: [aws-static-site-with-cd](https://github.com/undergroundwires/aws-static-site-with-cd)
|
||||||
- Runs on AWS 100% serverless and automatically provisioned using [GitHub Actions](.github/workflows/).
|
- Runs on AWS 100% serverless and automatically provisioned using [GitHub Actions](.github/workflows/).
|
||||||
@@ -82,4 +84,4 @@
|
|||||||
- Versioning, tagging, creation of `CHANGELOG.md` and releasing is automated using [bump-everywhere](https://github.com/undergroundwires/bump-everywhere) action
|
- Versioning, tagging, creation of `CHANGELOG.md` and releasing is automated using [bump-everywhere](https://github.com/undergroundwires/bump-everywhere) action
|
||||||
- Everything that's merged in the master goes directly to production.
|
- Everything that's merged in the master goes directly to production.
|
||||||
|
|
||||||
[](.github/workflows/)
|
[](.github/workflows/)
|
||||||
|
|||||||
BIN
docs/gitops.png
|
Before Width: | Height: | Size: 460 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
BIN
img/app.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
1
img/gitops.drawio
Normal file
BIN
img/gitops.png
Normal file
|
After Width: | Height: | Size: 483 KiB |
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "privacy.sexy",
|
"name": "privacy.sexy",
|
||||||
"version": "0.5.0",
|
"version": "0.6.0",
|
||||||
"author": "undergroundwires",
|
"author": "undergroundwires",
|
||||||
"description": "Enforce privacy & security best-practices on Windows, because privacy is sexy 🍑🍆",
|
"description": "Enforce privacy & security best-practices on Windows, because privacy is sexy 🍑🍆",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
|||||||