81 lines
4.3 KiB
Markdown
81 lines
4.3 KiB
Markdown
# privacy.sexy
|
|
|
|

|
|

|
|
[](https://github.com/undergroundwires/privacy.sexy/issues)
|
|
[](https://lgtm.com/projects/g/undergroundwires/privacy.sexy/context:javascript)
|
|
[](https://codeclimate.com/github/undergroundwires/privacy.sexy/maintainability)
|
|
|
|
Web tool to generate scripts for enforcing privacy & security best-practices such as stopping data collection of Windows and different softwares on it.
|
|
> because privacy is sexy 🍑🍆
|
|
|
|
[https://privacy.sexy](https://privacy.sexy)
|
|
|
|
## Why
|
|
|
|
- You don't need to run any compiled software on your system, just run the generated scripts.
|
|
- It's open source, both application & infrastructure is 100% transparent
|
|
- Fully automated C/CD pipeline to AWS for provisioning serverless infrastructure using GitHub actions.
|
|
- Have full visibility into what the tweaks do as you enable them.
|
|
- Easily extendable
|
|
|
|
## Extend scripts
|
|
|
|
Fork it & add more scripts in [application.yaml](src/application/application.yaml) and send a pull request 👌
|
|
|
|
## Commands
|
|
|
|
- Setup and run
|
|
- For development:
|
|
- `npm install` to project setup.
|
|
- `npm run serve` to compile & hot-reload for development.
|
|
- Production (using Docker):
|
|
- Build `docker build -t undergroundwires/privacy.sexy .`
|
|
- Run `docker run -it -p 8080:8080 --rm --name privacy.sexy-1 undergroundwires/privacy.sexy`
|
|
- Prepare for production: `npm run build`
|
|
- Run tests: `npm run test:unit`
|
|
- Lint and fix files: `npm run lint`
|
|
|
|
## Architecture
|
|
|
|
### Application
|
|
|
|
- Powered by **TypeScript** + **Vue.js** 💪
|
|
- and driven by **Domain-driven design**, **Event-driven architecture**, **Data-driven programming** concepts.
|
|
- Application uses highly decoupled models & services in different DDD layers.
|
|
- **Domain layer** is where the application is modelled with validation logic.
|
|
- **Presentation Layer**
|
|
- Consists of Vue.js components & UI stuff.
|
|
- Event driven as in components simply listens to events from the state and act accordingly.
|
|
- **Application Layer**
|
|
- Keeps the application state
|
|
- The [state](src/application/State/ApplicationState.ts) is a mutable singleton & event producer.
|
|
- The application is defined & controlled in a [single YAML file](`\application\application.yaml`) (see [Data-driven programming](https://en.wikipedia.org/wiki/Data-driven_programming))
|
|
|
|

|
|
|
|
### AWS Infrastructure
|
|
|
|
[](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/).
|
|
- Maximum security & automation and minimum AWS costs are the highest priorities of the design.
|
|
|
|
#### GitOps: CI/CD to AWS
|
|
|
|
- Everything that's merged in the master goes directly to production.
|
|
- See more at [build-and-deploy.yaml](.github/workflows/build-and-deploy.yaml), and [run-tests.yaml](.github/workflows/run-tests.yaml)
|
|
|
|
[](.github/workflows/build-and-deploy.yaml)
|
|
|
|
## Thank you for the awesome projects 🍺
|
|
|
|
- [Vue.js](https://vuejs.org/) the only big JavaScript framework that's not backed by companies that make money off your data.
|
|
- [liquor-tree](https://GitHub.com/amsik/liquor-tree) for the awesome & super extensible tree component.
|
|
- [Ace](https://ace.c9.io/) for code box.
|
|
- [FileSaver.js](https://GitHub.com/eligrey/FileSaver.js) for save file dialog.
|
|
- [chai](https://GitHub.com/chaijs/chai) & [mocha](https://GitHub.com/mochajs/mocha) for making testing fun.
|
|
- [js-yaml-loader](https://GitHub.com/wwilsman/js-yaml-loader) for ahead of time loading `application.yml`
|
|
- [v-tooltip](https://GitHub.com/Akryum/v-tooltip) takes seconds to have a tooltip, exactly what I needed.
|