No description
Find a file
2024-02-21 11:02:44 +00:00
.github/workflows run CI on RenovateBot features branch to enable automerging (#744) 2023-11-08 08:19:33 +01:00
api Pin dependencies (#739) 2023-11-07 20:30:35 +01:00
app use existing shortcuts for date and time format (#929) 2024-02-17 23:44:26 +01:00
config Adopt Embroider (#845) 2024-02-17 13:52:09 +01:00
docs Replace SauceLabs with BrowserStack (#171) 2019-03-14 21:30:48 +01:00
lib Update dependency prettier to v3 (#668) 2023-10-17 10:44:45 +02:00
mirage converts poll/participation and poll/evaluation controllers to TypeScript (#724) 2023-11-04 17:21:35 +01:00
public remove deprecation warning for IE11 (#925) 2024-02-17 14:03:52 +01:00
tests delete empty controllers (#928) 2024-02-17 23:44:13 +01:00
translations use Prettier for YAML files (#733) 2023-11-06 19:22:11 +01:00
types Report copy success via tooltip at copy button (#730) 2023-11-05 17:06:27 +01:00
.bowerrc first steps to ember-cli 2014-10-30 21:44:22 +01:00
.editorconfig upgrade to Ember 3.20 (#447) 2020-10-18 22:38:37 +02:00
.ember-cli Convert to TypeScript (#713) 2023-10-29 19:16:33 +01:00
.eslintignore upgrade blueprints to v5.3 (#693) 2023-10-17 11:38:49 +02:00
.eslintrc.js fix ESLint warnings for QUnit (#725) 2023-11-04 17:32:09 +01:00
.gitignore upgrade blueprints to v5.3 (#693) 2023-10-17 11:38:49 +02:00
.prettierignore upgrade blueprints to v5.3 (#693) 2023-10-17 11:38:49 +02:00
.prettierrc.js fix some deprecations (#659) 2023-10-15 21:50:28 +02:00
.release-it.json migrate to @release-it-plugins/lerna-changelog (#695) 2023-10-17 14:01:57 +02:00
.stylelintignore upgrade blueprints to v5.3 (#693) 2023-10-17 11:38:49 +02:00
.stylelintrc.js upgrade blueprints to v5.3 (#693) 2023-10-17 11:38:49 +02:00
.template-lintrc.js use Prettier for Glimmer templates (#731) 2023-11-05 20:57:52 +01:00
.watchmanconfig upgrade blueprints to v5.3 (#693) 2023-10-17 11:38:49 +02:00
ember-cli-build.js Adopt Embroider (#845) 2024-02-17 13:52:09 +01:00
LICENSE Starting to move to Ember App Kit 2014-07-06 17:37:54 +02:00
package-lock.json Update dependency ember-intl to v6.4.1 2024-02-21 11:02:44 +00:00
package.json Update dependency ember-intl to v6.4.1 2024-02-21 11:02:44 +00:00
README.md fix badges in readme (#813) 2023-12-16 23:30:26 +01:00
RELEASE.md migrate to NPM (#696) 2023-10-17 14:37:46 +02:00
renovate.json Update Ember Power Calendar together with addons (#785) 2023-11-30 17:42:41 +08:00
testem.browserstack.js upgrade to Ember 3.28 blueprints (#647) 2023-10-15 20:37:03 +02:00
testem.js upgrade to Ember 3.28 blueprints (#647) 2023-10-15 20:37:03 +02:00
tsconfig.json Introduce typed templates with Glint (#714) 2023-11-04 14:54:30 +01:00

Croodle

Build Status Code Climate

Croodle is an end-to-end encrypted web application to schedule a date or to do a poll on a any topic. All data like title, description, number and labels of options, available answers and names of users and their selections are encrypted/decrypted in the browser using strong 256-bit AES encryption.

This is an alpha version. Changes could brake backward compatibility. It is also not well tested and some features are missing. It is not meant for productive use yet.

Croodle is inspired by PrivateBin and, of course, by Doodle.

Security notice

As any other web application based end-to-end encryption Croodle could be attacked by an injection of malicious code on serverside or threw a man-in-the-middle attack. If an attacker could inject for example JavaScript, they would be able to read the decrypted content in the browser or the encryption key that is used used and exfiltrate that data.

Therefore you have to:

  • use an encrypted connection to the server hosting Croodle. In most use cases this will be an HTTPS connection. We strongly recomend people hosting Croodle to force an encrypted connection.
  • trust the server.

Theoretically you could also check for an attack like this by analysing the source code retrieved from server and/or using developer tools of your browser and check what data is send over the network or stored in cookies, local storage or similar browser techniques.

Requirements

Croodle is designed to have as few as possible requirements on the server it is running on. Croodle runs on almost every web space with PHP >= 7.2. Croodle stores the data in textfiles, so there is no need for a database server like MySQL.

Due to security reasons you should have TLS encryption enabled and provide a valid certificate. (see the security notice)

Build process and installation

Production builds are provided as github release assets.

If you like to build yourself you have to install node, ember-cli and composer before. It's recommended using volta to ensure a compatible and tested node version is used.

git clone git@github.com:jelhan/croodle.git
cd croodle
npm install
cd api/ && composer install --no-dev && cd ..
npm run build

Afterwards copy all files in /dist folder to your werbserver.

Configuration

The API can be configured by creating a config.php inside api/ folder which returns an associative array. Have a look at api/config.default.php for available options.

Webserver configuration

  • data/ folder has to be writeable by web server, but must not be accessible publicly. Protect it in your webserver configuration or move it out of webroot by changing dataDir api option.
  • Croodle uses subresource integrity (SRI) for assets. Therefore you must not tamper with build output (e.g. you have to disable cloudflare Auto Minify feature). If that's not an option for you, you have to disable SRI and build yourself.
  • HTTPS connection should be forced. You should consider using HTTP Strict Transport Security (HSTS) and HTTP Public Key Pinning (HPKP).
  • Content-Security-Policy (CSP) and Referrer-Policy headers should be used. Default headers are provided in .htaccess file but commented out.
  • Execute php api/cron.php on a regular basis to delete outdated polls. A cronjob running once a day should be fine.

Development

ember serve generates a development build of Croodle and starts a server listening on http://localhost:4200 which is serving it. If source files are changing, a rebuild and reload is triggered.

By default Croodle uses an api mock in development. Since that one does not persist records all polls are gone after a reload.

If you like to test against the real API, you should run the API using php built-in web server locally:

php -S 127.0.0.1:8080 -t dist/

Afterwards start ember-cli development server using --proxy option:

ember server --proxy http://127.0.0.1:8080

Ember-cli clears dist folder on each rebuild. If you like to keep created polls over rebuild, configure api to use a non default folder to save your polls:

CROODLE__DATA_DIR=/tmp/croodle_data php -S 127.0.0.1:8080 -t dist/

Running tests

Ember

ember test --server is the prefered way to run tests in Chrome. Results are reported in command-line and browser. Files are watched for changes.

If you like to run tests only once in a headless Chrome and Firefox execute ember test. This is also used in CI.

Additionally tests are available in all development builds. This allows you to execute the tests in any browser of your choice by running ember serve and opening http://locahost:4200/tests.

Tests are run against a mock-api provided by ember-cli-mirage. Therefor they don't cover system integration.

API

API tests are provided by Codeception. To run them change current directory to /api and execute ./vendor/bin/codecept run. You have to install composer development requirements before (composer install without --no-dev option).

Credits

Cross-browser testing provided by

License

Croodle is MIT Licensed.