├── .codecov.yml
├── .dockerignore
├── .editorconfig
├── .eslintrc.json
├── .gitattributes
├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── .istanbul.yml
├── .npmignore
├── .travis.yml
├── Dockerfile
├── LICENSE.md
├── README.md
├── config
├── default-docker.json
├── default.json
├── local-staging-docker.json
├── local.example.json
├── production.json
├── test-docker.json
└── test.json
├── data
└── .gitkeep
├── docker-compose.override.yml
├── docker-compose.staging.yml
├── docker-compose.yml
├── email-templates
├── account
│ ├── email-verified
│ │ ├── de
│ │ │ ├── html.hbs
│ │ │ ├── style.scss
│ │ │ ├── subject.hbs
│ │ │ └── text.hbs
│ │ └── en
│ │ │ ├── html.hbs
│ │ │ ├── style.scss
│ │ │ ├── subject.hbs
│ │ │ └── text.hbs
│ ├── identity-change
│ │ ├── de
│ │ │ ├── html.hbs
│ │ │ ├── style.scss
│ │ │ ├── subject.hbs
│ │ │ └── text.hbs
│ │ └── en
│ │ │ ├── html.hbs
│ │ │ ├── style.scss
│ │ │ ├── subject.hbs
│ │ │ └── text.hbs
│ ├── invite-email
│ │ ├── de
│ │ │ ├── html.hbs
│ │ │ ├── html.hbs.json
│ │ │ ├── subject.hbs
│ │ │ └── text.hbs
│ │ └── en
│ │ │ ├── html.hbs
│ │ │ ├── html.hbs.json
│ │ │ ├── subject.hbs
│ │ │ └── text.hbs
│ ├── password-change
│ │ ├── de
│ │ │ ├── html.hbs
│ │ │ ├── style.scss
│ │ │ ├── subject.hbs
│ │ │ └── text.hbs
│ │ └── en
│ │ │ ├── html.hbs
│ │ │ ├── style.scss
│ │ │ ├── subject.hbs
│ │ │ └── text.hbs
│ ├── password-reset
│ │ ├── de
│ │ │ ├── html.hbs
│ │ │ ├── style.scss
│ │ │ ├── subject.hbs
│ │ │ └── text.hbs
│ │ └── en
│ │ │ ├── html.hbs
│ │ │ ├── style.scss
│ │ │ ├── subject.hbs
│ │ │ └── text.hbs
│ ├── reset-password
│ │ ├── de
│ │ │ ├── html.hbs
│ │ │ ├── style.scss
│ │ │ ├── subject.hbs
│ │ │ └── text.hbs
│ │ └── en
│ │ │ ├── html.hbs
│ │ │ ├── style.scss
│ │ │ ├── subject.hbs
│ │ │ └── text.hbs
│ └── verify-email
│ │ ├── de
│ │ ├── html.hbs
│ │ ├── style.scss
│ │ ├── subject.hbs
│ │ └── text.hbs
│ │ └── en
│ │ ├── html.hbs
│ │ ├── style.scss
│ │ ├── subject.hbs
│ │ └── text.hbs
└── layout
│ ├── _variables.scss
│ ├── common.scss
│ ├── footer.hbs
│ └── header.hbs
├── features
├── api
│ ├── post.feature
│ ├── usersettings.feature
│ └── usersettings
│ │ ├── blacklist.feature
│ │ └── language.feature
├── env
│ ├── database.js
│ ├── io.js
│ └── timeout.js
└── step_definitions
│ └── steps.js
├── package.json
├── public
├── favicon.ico
└── img
│ ├── badges
│ ├── fundraisingbox_de_airship.svg
│ ├── fundraisingbox_de_alienship.svg
│ ├── fundraisingbox_de_balloon.svg
│ ├── fundraisingbox_de_bigballoon.svg
│ ├── fundraisingbox_de_crane.svg
│ ├── fundraisingbox_de_glider.svg
│ ├── fundraisingbox_de_helicopter.svg
│ ├── fundraisingbox_de_starter.svg
│ ├── indiegogo_en_bear.svg
│ ├── indiegogo_en_panda.svg
│ ├── indiegogo_en_rabbit.svg
│ ├── indiegogo_en_racoon.svg
│ ├── indiegogo_en_rhino.svg
│ ├── indiegogo_en_tiger.svg
│ ├── indiegogo_en_turtle.svg
│ ├── indiegogo_en_whale.svg
│ ├── indiegogo_en_wolf.svg
│ ├── user_role_admin.svg
│ ├── user_role_developer.svg
│ ├── user_role_moderator.svg
│ ├── wooold_de_bee.svg
│ ├── wooold_de_butterfly.svg
│ ├── wooold_de_double_rainbow.svg
│ ├── wooold_de_end_of_rainbow.svg
│ ├── wooold_de_flower.svg
│ ├── wooold_de_lifetree.svg
│ ├── wooold_de_magic_rainbow.svg
│ └── wooold_de_super_founder.svg
│ └── emails
│ ├── alpha-ticket.png
│ └── hc-logo.png
├── scripts
├── .gitignore
├── README.md
└── remote-dump.sh
├── server
├── app.hooks.js
├── app.js
├── authentication.js
├── channels.js
├── helper
│ ├── alter-items.js
│ ├── get-mentions.js
│ ├── get-unique-slug.js
│ ├── seed-helpers.js
│ ├── thumbor-helper.js
│ └── urls.js
├── hooks
│ ├── cleanup-related-items.js
│ ├── conceal-blacklisted-data.js
│ ├── create-default-avatar.js
│ ├── create-excerpt.js
│ ├── create-slug.js
│ ├── exclude-blacklisted.js
│ ├── exclude-disabled.js
│ ├── include-all.js
│ ├── is-admin.js
│ ├── is-enabled.js
│ ├── is-moderator-boolean.js
│ ├── is-moderator.js
│ ├── is-single-item.js
│ ├── keep-deleted-data-fields.js
│ ├── logger.js
│ ├── map-create-to-upsert.js
│ ├── patch-deleted-data.js
│ ├── restrictReviewAndEnableChange.js
│ ├── restrictToOwnerOrModerator.js
│ ├── save-remote-images.js
│ ├── thumbnails.js
│ └── xss.js
├── index.js
├── logger.js
├── middleware
│ └── index.js
├── models
│ ├── badges.model.js
│ ├── categories.model.js
│ ├── comments.model.js
│ ├── contributions.model.js
│ ├── emotions.model.js
│ ├── follows.model.js
│ ├── images.model.js
│ ├── invites.model.js
│ ├── notifications.model.js
│ ├── organizations.model.js
│ ├── pages.model.js
│ ├── projects.model.js
│ ├── settings.model.js
│ ├── shouts.model.js
│ ├── status.model.js
│ ├── system-notifications.model.js
│ ├── users-candos.model.js
│ ├── users.model.js
│ └── usersettings.model.js
├── mongoose.js
├── seeder
│ ├── base
│ │ ├── badges.js
│ │ ├── categories.js
│ │ ├── index.js
│ │ └── pages.js
│ ├── demo
│ │ ├── contributions.js
│ │ ├── data
│ │ │ ├── de_contributions.json
│ │ │ └── en_contributions.json
│ │ └── index.js
│ ├── development
│ │ ├── candos.js
│ │ ├── comments.js
│ │ ├── contributions.js
│ │ ├── emotions.js
│ │ ├── follows.js
│ │ ├── index.js
│ │ ├── invites.js
│ │ ├── moderators.js
│ │ ├── organizations.js
│ │ ├── projects.js
│ │ ├── shouts.js
│ │ ├── users-admin.js
│ │ ├── users-candos.js
│ │ ├── users.js
│ │ └── usersettings.js
│ └── index.js
└── services
│ ├── admin
│ ├── admin.class.js
│ ├── admin.hooks.js
│ └── admin.service.js
│ ├── auth-management
│ ├── auth-management.hooks.js
│ ├── auth-management.service.js
│ └── notifier.js
│ ├── badges
│ ├── badges.hooks.js
│ └── badges.service.js
│ ├── categories
│ ├── categories.hooks.js
│ └── categories.service.js
│ ├── comments
│ ├── comments.hooks.js
│ ├── comments.service.js
│ └── hooks
│ │ ├── create-mention-notifications.js
│ │ └── create-notifications.js
│ ├── contributions
│ ├── contributions.hooks.js
│ ├── contributions.service.js
│ └── hooks
│ │ ├── create-mention-notifications.js
│ │ ├── get-associated-can-dos.js
│ │ └── notify-followers.js
│ ├── emails
│ ├── emails.hooks.js
│ └── emails.service.js
│ ├── emotions
│ ├── emotions.hooks.js
│ ├── emotions.service.js
│ └── hooks
│ │ └── emotion-rating.js
│ ├── follows
│ ├── follows.hooks.js
│ ├── follows.service.js
│ └── hooks
│ │ └── set-follow-count.js
│ ├── images
│ ├── hooks
│ │ └── upload-file.js
│ ├── images.hooks.js
│ └── images.service.js
│ ├── index.js
│ ├── invites
│ ├── hooks
│ │ └── send-invite-email.js
│ ├── invites.hooks.js
│ └── invites.service.js
│ ├── notifications
│ ├── notifications.hooks.js
│ └── notifications.service.js
│ ├── organizations
│ ├── hooks
│ │ ├── can-edit-organization.js
│ │ └── save-avatar.js
│ ├── organizations.hooks.js
│ └── organizations.service.js
│ ├── pages
│ ├── pages.hooks.js
│ └── pages.service.js
│ ├── projects
│ ├── projects.hooks.js
│ └── projects.service.js
│ ├── search
│ ├── search.class.js
│ ├── search.hooks.js
│ └── search.service.js
│ ├── settings
│ ├── settings.hooks.js
│ └── settings.service.js
│ ├── shouts
│ ├── hooks
│ │ └── set-shout-count.js
│ ├── shouts.hooks.js
│ └── shouts.service.js
│ ├── status
│ ├── status.class.js
│ ├── status.hooks.js
│ └── status.service.js
│ ├── system-notifications
│ ├── system-notifications.hooks.js
│ └── system-notifications.service.js
│ ├── uploads
│ ├── hooks
│ │ └── encode.js
│ ├── uploads.hooks.js
│ └── uploads.service.js
│ ├── user-invites
│ ├── user-invites.class.js
│ ├── user-invites.hooks.js
│ └── user-invites.service.js
│ ├── users-candos
│ ├── hooks
│ │ └── set-done-date.js
│ ├── users-candos.hooks.js
│ └── users-candos.service.js
│ ├── users
│ ├── hooks
│ │ ├── create-admin.js
│ │ ├── invite-code.js
│ │ ├── is-own-entry.js
│ │ ├── remove-all-related-user-data.js
│ │ ├── restrict-user-role.js
│ │ ├── save-avatar.js
│ │ └── send-verification-email.js
│ ├── users.hooks.js
│ └── users.service.js
│ └── usersettings
│ ├── hooks
│ └── validate-blacklist.js
│ ├── usersettings.hooks.js
│ └── usersettings.service.js
├── test
├── app.test.js.bak
├── assets
│ ├── categories.js
│ ├── comments.js
│ ├── contributions.js
│ └── users.js
├── hooks
│ ├── calculate-emiotion-rating.test.js
│ ├── create-default-avatar.test.js
│ ├── exclude-blacklisted.test.js
│ └── save-remote-images.test.js
└── services
│ ├── admin.test.js
│ ├── auth-management.test.js
│ ├── authentication.js
│ ├── badges.test.js
│ ├── categories.test.js
│ ├── comments.test.js
│ ├── contributions.test.js
│ ├── emails.test.js
│ ├── emotions.test.js
│ ├── follows.test.js
│ ├── images.test.js
│ ├── invites.test.js
│ ├── notifications.test.js
│ ├── organizations.test.js
│ ├── projects.test.js
│ ├── search.test.js
│ ├── settings.test.js
│ ├── shouts.test.js
│ ├── status.test.js
│ ├── uploads.test.js
│ ├── user-invites.test.js
│ ├── users-candos.test.js
│ ├── users.test.js
│ └── usersettings.test.js
└── yarn.lock
/.codecov.yml:
--------------------------------------------------------------------------------
1 | coverage:
2 | range: "60...100"
3 |
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | npm-debug.log
3 | scripts/
4 | Dockerfile
5 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "babel-eslint",
3 | "env": {
4 | "es6": true,
5 | "node": true,
6 | "mocha": true
7 | },
8 | "extends": "eslint:recommended",
9 | "rules": {
10 | "indent": [
11 | "error",
12 | 2
13 | ],
14 | "quotes": [
15 | "error",
16 | "single"
17 | ],
18 | "semi": [
19 | "error",
20 | "always"
21 | ]
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # These files are text and should be normalized (Convert crlf => lf)
2 | *.php text
3 | *.css text
4 | *.js text
5 | *.htm text
6 | *.html text
7 | *.xml text
8 | *.txt text
9 | *.ini text
10 | *.inc text
11 | .htaccess text
12 |
13 | # These files are binary and should be left untouched
14 | # (binary is a macro for -text -diff)
15 | *.png binary
16 | *.jpg binary
17 | *.jpeg binary
18 | *.gif binary
19 | *.ico binary
20 | *.mov binary
21 | *.mp4 binary
22 | *.mp3 binary
23 | *.flv binary
24 | *.fla binary
25 | *.swf binary
26 | *.gz binary
27 | *.zip binary
28 | *.7z binary
29 | *.ttf binary
30 |
31 | # Auto detect text files and perform LF normalization
32 | # http://davidlaing.com/2012/09/19/customise-your-gitattributes-to-become-a-git-ninja/
33 | * text=auto
34 |
35 | # Documents
36 | *.doc diff=astextplain
37 | *.DOC diff=astextplain
38 | *.docx diff=astextplain
39 | *.DOCX diff=astextplain
40 | *.dot diff=astextplain
41 | *.DOT diff=astextplain
42 | *.pdf diff=astextplain
43 | *.PDF diff=astextplain
44 | *.rtf diff=astextplain
45 | *.RTF diff=astextplain
46 |
47 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 |
5 | ---
6 |
7 | **Describe the bug**
8 | A clear and concise description of what the bug is.
9 |
10 | **To Reproduce**
11 | Steps to reproduce the behavior:
12 | 1. Authenticate '...'
13 | 2. Post following data to endpoint '...'
14 | 3. See error
15 |
16 | **Expected behavior**
17 | A clear and concise description of what you expected to happen
18 |
19 | **Additional context**
20 | Add any other context about the problem here.
21 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 |
5 | ---
6 |
7 | **Is your feature request related to a problem? Please describe.**
8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
9 |
10 | **Describe the solution you'd like**
11 | A clear and concise description of what you want to happen.
12 |
13 | **Describe alternatives you've considered**
14 | A clear and concise description of any alternative solutions or features you've considered.
15 |
16 | **Additional context**
17 | Add any other context or screenshots about the feature request here.
18 |
--------------------------------------------------------------------------------
/.istanbul.yml:
--------------------------------------------------------------------------------
1 | verbose: false
2 | instrumentation:
3 | root: ./
4 | reporting:
5 | print: summary
6 | reports:
7 | - html
8 | - text
9 | - lcov
10 | watermarks:
11 | statements: [70, 90]
12 | lines: [70, 90]
13 | functions: [70, 90]
14 | branches: [70, 90]
15 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 |
5 | # Runtime data
6 | pids
7 | *.pid
8 | *.seed
9 |
10 | # Directory for instrumented libs generated by jscoverage/JSCover
11 | lib-cov
12 |
13 | # Coverage directory used by tools like istanbul
14 | coverage
15 |
16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
17 | .grunt
18 |
19 | # Compiled binary addons (http://nodejs.org/api/addons.html)
20 | build/Release
21 |
22 | # Dependency directory
23 | # Commenting this out is preferred by some people, see
24 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-
25 | node_modules
26 |
27 | # Users Environment Variables
28 | .lock-wscript
29 |
30 | data/
31 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - "10"
4 | cache:
5 | yarn: true
6 | directories:
7 | - node_modules
8 | services:
9 | # we need docker for building the image and mongo for testing
10 | - docker
11 | - mongodb
12 | # install:
13 | # nothing!
14 |
15 | jobs:
16 | include:
17 | - stage: Prepare Cache
18 | script: true
19 | - stage: Build and Test
20 | script:
21 | - docker build -t humanconnection/api-feathers .
22 | - script:
23 | - yarn install --frozen-lockfile --non-interactive
24 | - yarn global add codecov
25 | - yarn run ci && codecov
26 |
27 | after_success:
28 | - wget https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh
29 | - chmod +x send.sh
30 | - ./send.sh success $WEBHOOK_URL
31 | - if [ $TRAVIS_BRANCH == "master" ] && [ $TRAVIS_EVENT_TYPE == "push" ]; then
32 | docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD";
33 | docker tag humanconnection/api-feathers humanconnection/api-feathers:alpha;
34 | docker push humanconnection/api-feathers:alpha;
35 | fi
36 | - if [ $TRAVIS_BRANCH == "develop" ] && [ $TRAVIS_EVENT_TYPE == "push" ]; then
37 | docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD";
38 | docker tag humanconnection/api-feathers humanconnection/api-feathers:edge;
39 | docker push humanconnection/api-feathers:edge;
40 | fi
41 |
42 | after_failure:
43 | - wget https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh
44 | - chmod +x send.sh
45 | - ./send.sh failure $WEBHOOK_URL
46 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:10-alpine
2 | LABEL Description="This image is used to start the hc-api-feathers" Vendor="Human-Connection gGmbH" Version="1.0" Maintainer="Human-Connection gGmbH (developer@human-connection.org)"
3 |
4 | # expose the app port
5 | EXPOSE 3030
6 |
7 | # override configuration by instance name in docker container
8 | ENV NODE_APP_INSTANCE=docker
9 | ENV NODE_ENV=production
10 |
11 | # create working directory
12 | RUN mkdir -p /API
13 | WORKDIR /API
14 |
15 | # --no-cache: download package index on-the-fly, no need to cleanup afterwards
16 | # --virtual: bundle packages, remove whole bundle at once, when done
17 | RUN apk --no-cache --virtual build-dependencies add python make g++
18 |
19 | RUN yarn global add pm2
20 |
21 | # install app dependencies
22 | COPY package.json /API
23 | COPY yarn.lock /API
24 | RUN yarn install --production=false --frozen-lockfile --non-interactive
25 |
26 | RUN apk del build-dependencies
27 |
28 |
29 | # copy the code to the docker image
30 | COPY . /API
31 |
32 | # start the application in a autohealing cluster
33 | # NOTE: quick fix for server issues, restart api when reaching max of 300 MB Memory Usage (happens in conjunction with 100% CPU Usage)
34 | # TODO: find better way of dealing with that issue
35 | CMD ["pm2", "start", "server/index.js", "-n", "api", "--attach", "--max-memory-restart", "1024M"]
36 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Human-Connection gGmbH
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | # Human-Connection API
19 | This is the backend of HC.
20 | It uses the FeathersJS, NodeJS, yarn and mongoDB.
21 |
22 | ## Help
23 | The HC platform and its setup is documented in our [docs](https://docs.human-connection.org/) (work in progress).
24 | Connect with other developers over [Discord](https://discord.gg/6ub73U3)
25 |
26 | ## License
27 | Copyright (c) 2018 [Human-Connection.org](https://human-connection.org)
28 | Licensed under the [MIT](https://github.com/Human-Connection/WebApp/blob/develop/LICENSE.md) license.
29 |
--------------------------------------------------------------------------------
/config/default-docker.json:
--------------------------------------------------------------------------------
1 | {
2 | "baseURL": "http://api.127.0.0.1.xip.io:3030",
3 | "mongodb": "mongodb://mongo:27017/hc_api",
4 | "host": "0.0.0.0"
5 | }
6 |
--------------------------------------------------------------------------------
/config/default.json:
--------------------------------------------------------------------------------
1 | {
2 | "host": "localhost",
3 | "port": 3030,
4 | "baseURL": "http://localhost:3030",
5 | "frontURL": "http://localhost:3000",
6 | "public": "../public/",
7 | "debug": true,
8 | "logLevel": "log",
9 | "paginate": {
10 | "default": 10,
11 | "max": 100
12 | },
13 | "thumbor": {
14 | "url": false,
15 | "key": false
16 | },
17 | "apiSecret": "TE9TqAk2xK[9EFJL",
18 | "sentry": {},
19 | "seeder": {
20 | "runOnInit": false,
21 | "dropDatabase": false
22 | },
23 | "defaultEmail": "no-reply@human-connection.org",
24 | "smtpConfig": {
25 | "host": "0.0.0.0",
26 | "port": 1025,
27 | "ignoreTLS": true
28 | },
29 | "mongodb": "mongodb://localhost:27017/hc_api",
30 | "authentication": {
31 | "secret": "8063adf5c0c90f12a2bbae72dc331fa0f1b4e3531980663ac7695bf108171285dc8a1ba8eaacffa11d58212301ddeae910d8ecb477782cab7d33a35b7b6c7355977da35d5fa68fa2dbc28105753629d97714d91a1163122c38850582fb0a2c774e608184dc7d7c508423870b214935046b2421b5bc60124a15d2f2df415d43c87be402a3f98bad15d78a5ca6b303243314e847d86bdb2027aa2bea0d06449cff7cef53a131bac08480fe79095a2700fae88d1454de61b87bad2449cf485a9bdecd16fc98a7defb96220f1ccd2a80f0c5838152971858338fb17f6d4b6e348992c7c838a55f3f9f2dce5c85911cb4f1b561e82ef3984dc51b3baf10ba33688a70",
32 | "strategies": [
33 | "jwt",
34 | "local"
35 | ],
36 | "path": "/authentication",
37 | "service": "users",
38 | "session": false,
39 | "jwt": {
40 | "header": {
41 | "type": "access"
42 | },
43 | "audience": "http://localhost",
44 | "subject": "anonymous",
45 | "issuer": "feathers",
46 | "algorithm": "HS256",
47 | "expiresIn": "1d"
48 | },
49 | "local": {
50 | "entity": "user",
51 | "service": "users",
52 | "usernameField": "email",
53 | "passwordField": "password"
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/config/local-staging-docker.json:
--------------------------------------------------------------------------------
1 | {
2 | "seeder": {
3 | "runOnInit": true,
4 | "dropDatabase": false
5 | },
6 | "smtpConfig": {
7 | "host": "maildev",
8 | "port": 25,
9 | "ignoreTLS": true
10 | },
11 | "thumbor": {
12 | "url": "http://thumbor.127.0.0.1.xip.io:8000",
13 | "key": ""
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/config/local.example.json:
--------------------------------------------------------------------------------
1 | {
2 | "seeder": {
3 | "runOnInit": true,
4 | "dropDatabase": false
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/config/production.json:
--------------------------------------------------------------------------------
1 | {
2 | "host": "API_HOST",
3 | "port": "API_PORT",
4 | "baseURL": "API_BASE_URL",
5 | "frontURL": "WEBAPP_BASE_URL",
6 | "mongodb": "MONGO_DB",
7 | "debug": true,
8 | "logLevel": "warn",
9 | "smtpConfig": {
10 | "host": "SMTP_HOST",
11 | "port": 587,
12 | "secure": false,
13 | "auth": {
14 | "user": "SMTP_USER",
15 | "pass": "SMTP_PASS"
16 | }
17 | },
18 | "thumbor": {
19 | "url": "THUMBOR_URL",
20 | "key": "THUMBOR_KEY"
21 | },
22 | "sentry": {
23 | "dns": "SENTRY_DNS",
24 | "options": {
25 | "environment": "production"
26 | }
27 | },
28 | "apiSecret": "API_SECRET",
29 | "authentication": {
30 | "secret": "AUTH_SECRET",
31 | "jwt": {
32 | "audience": "WEBAPP_BASE_URL"
33 | }
34 | },
35 | "seeder": {
36 | "runOnInit": false,
37 | "dropDatabase": false
38 | },
39 | "defaultEmail": "EMAIL_ADDRESS"
40 | }
41 |
--------------------------------------------------------------------------------
/config/test-docker.json:
--------------------------------------------------------------------------------
1 | {
2 | "mongodb": "mongodb://mongo:27017/hc_api_test"
3 | }
4 |
--------------------------------------------------------------------------------
/config/test.json:
--------------------------------------------------------------------------------
1 | {
2 | "port": 3031,
3 | "baseURL": "http://localhost:3031",
4 | "mongodb": "mongodb://localhost:27017/hc_api_test"
5 | }
6 |
--------------------------------------------------------------------------------
/data/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Human-Connection/API/8f0edaff90da046bd0db34bd77f0ead7ef336d85/data/.gitkeep
--------------------------------------------------------------------------------
/docker-compose.override.yml:
--------------------------------------------------------------------------------
1 | version: '3.5'
2 |
3 | services:
4 | api:
5 | environment:
6 | - NODE_ENV=development
7 | ports:
8 | - "3030:3030"
9 | - "9229:9229" # node inspect
10 | volumes:
11 | - .:/API
12 | - /API/node_modules
13 | command: yarn run dev
14 | tty: true
15 |
--------------------------------------------------------------------------------
/docker-compose.staging.yml:
--------------------------------------------------------------------------------
1 | version: '3.5'
2 |
3 | services:
4 | api:
5 | image: humanconnection/api-feathers:edge
6 | build:
7 | context: .
8 | environment:
9 | - NODE_ENV=staging
10 | depends_on:
11 | - maildev
12 | - thumbor
13 | ports:
14 | - "3030:3030"
15 | networks:
16 | - hc-network
17 |
18 | maildev:
19 | image: djfarrelly/maildev
20 | networks:
21 | - hc-network
22 | ports:
23 | - "1080:80"
24 | - "1025:25"
25 |
26 | thumbor:
27 | container_name: thumbor.127.0.0.1.xip.io
28 | image: apsl/thumbor
29 | networks:
30 | - hc-network
31 | ports:
32 | - "8000:8000"
33 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.5'
2 |
3 | services:
4 | api:
5 | container_name: api.127.0.0.1.xip.io
6 | build: .
7 | depends_on:
8 | - mongo
9 | networks:
10 | - hc-network
11 |
12 | mongo:
13 | image: mongo
14 | networks:
15 | - hc-network
16 | command: "--smallfiles --logpath=/dev/null"
17 |
18 | # dns-proxy-server:
19 | # image: defreitas/dns-proxy-server
20 | # volumes:
21 | # - "/var/run/docker.sock:/var/run/docker.sock"
22 | # - "/etc/resolv.conf:/etc/resolv.conf"
23 | # - "./dns-proxy-server.config.json:/app/conf/config.json"
24 | # ports:
25 | # - 5380:5380
26 | # hostname: dns.mageddo
27 | # networks:
28 | # - hc-network
29 |
30 | networks:
31 | hc-network:
32 | name: hc-network
33 |
--------------------------------------------------------------------------------
/email-templates/account/email-verified/de/html.hbs:
--------------------------------------------------------------------------------
1 | {{> header }}
2 |
3 |
4 |
5 |
6 |
7 |
8 | Thanks for verifying your email address
9 | |
10 |
11 |
12 |
13 | Hi {{ name }}, your email address has been verified.
14 | |
15 |
16 |
17 |
18 | You can now contribute to our great community and get inspired to take action. Have fun!
19 | |
20 |
21 |
22 |
23 | Start exploring
24 | |
25 |
26 |
27 |
28 | — Human Connection
29 | |
30 |
31 |
32 | |
33 |
34 | {{> footer }}
--------------------------------------------------------------------------------
/email-templates/account/email-verified/de/style.scss:
--------------------------------------------------------------------------------
1 | @import '../../../layout/common';
2 |
--------------------------------------------------------------------------------
/email-templates/account/email-verified/de/subject.hbs:
--------------------------------------------------------------------------------
1 | Your email address has been verified
--------------------------------------------------------------------------------
/email-templates/account/email-verified/de/text.hbs:
--------------------------------------------------------------------------------
1 | Thanks for verifying your email address
2 |
3 | Hi {{ name }}, your email address has been verified.
4 |
5 | You can now contribute to our great community and get inspired to take action. Have fun!
6 |
7 | Start exploring: {{frontURL}}
8 |
9 | — Human Connection
10 |
--------------------------------------------------------------------------------
/email-templates/account/email-verified/en/html.hbs:
--------------------------------------------------------------------------------
1 | {{> header }}
2 |
3 |
4 |
5 |
6 |
7 |
8 | Thanks for verifying your email address
9 | |
10 |
11 |
12 |
13 | Hi {{ name }}, your email address has been verified.
14 | |
15 |
16 |
17 |
18 | You can now contribute to our great community and get inspired to take action. Have fun!
19 | |
20 |
21 |
22 |
23 | Start exploring
24 | |
25 |
26 |
27 |
28 | — Human Connection
29 | |
30 |
31 |
32 | |
33 |
34 | {{> footer }}
--------------------------------------------------------------------------------
/email-templates/account/email-verified/en/style.scss:
--------------------------------------------------------------------------------
1 | @import '../../../layout/common';
2 |
--------------------------------------------------------------------------------
/email-templates/account/email-verified/en/subject.hbs:
--------------------------------------------------------------------------------
1 | Your email address has been verified
--------------------------------------------------------------------------------
/email-templates/account/email-verified/en/text.hbs:
--------------------------------------------------------------------------------
1 | Thanks for verifying your email address
2 |
3 | Hi {{ name }}, your email address has been verified.
4 |
5 | You can now contribute to our great community and get inspired to take action. Have fun!
6 |
7 | Start exploring: {{frontURL}}
8 |
9 | — Human Connection
10 |
--------------------------------------------------------------------------------
/email-templates/account/identity-change/de/html.hbs:
--------------------------------------------------------------------------------
1 | {{> header }}
2 |
3 |
4 |
5 |
6 |
7 |
8 | Bestätige deine Änderungen
9 | |
10 |
11 |
12 |
13 | Hallo {{ name }}, deine Profilinformationen wurden geändert, bitte überprüfe das du diese Änderungen vorgenommen hast.
14 | |
15 |
16 |
17 |
18 |
19 | {{#each changes}}
20 | - {{ this.label }}: {{ this.value }}
21 | {{/each}}
22 |
23 | |
24 |
25 |
26 |
27 | Ich bestätige die Änderungen
28 | |
29 |
30 |
31 |
32 | Wenn nicht du diese Änderungen vorgenommen hast lass es uns wissen!
33 | |
34 |
35 |
36 |
37 | — Human Connection
38 | |
39 |
40 |
41 | |
42 |
43 | {{> footer }}
44 |
--------------------------------------------------------------------------------
/email-templates/account/identity-change/de/style.scss:
--------------------------------------------------------------------------------
1 | @import '../../../layout/common';
2 |
--------------------------------------------------------------------------------
/email-templates/account/identity-change/de/subject.hbs:
--------------------------------------------------------------------------------
1 | Bestätige deine Änderungen
2 |
--------------------------------------------------------------------------------
/email-templates/account/identity-change/de/text.hbs:
--------------------------------------------------------------------------------
1 | Bestätige deine Änderungen
2 |
3 | Hallo {{ name }}, deine Profilinformationen wurden geändert, bitte überprüfe das du diese Änderungen vorgenommen hast.
4 |
5 | {{#each changes}}
6 | {{ this.label }}: {{ this.value }}
7 | {{/each}}
8 |
9 | Ich bestätige die Änderungen: {{ link }}
10 |
11 | Wenn nicht du diese Änderungen vorgenommen hast lass es uns wissen!
12 |
13 | — Human Connection
14 |
--------------------------------------------------------------------------------
/email-templates/account/identity-change/en/html.hbs:
--------------------------------------------------------------------------------
1 | {{> header }}
2 |
3 |
4 |
5 |
6 |
7 |
8 | Please confirm these changes
9 | |
10 |
11 |
12 |
13 | Hi {{ name }}, your user information was just changed. Please verify that you made these changes.
14 | |
15 |
16 |
17 |
18 |
19 | {{#each changes}}
20 | - {{ this.label }}: {{ this.value }}
21 | {{/each}}
22 |
23 | |
24 |
25 |
26 |
27 | I accept the changes
28 | |
29 |
30 |
31 |
32 | If you didn't request this change please let us know
33 | |
34 |
35 |
36 |
37 | — Human Connection
38 | |
39 |
40 |
41 | |
42 |
43 | {{> footer }}
--------------------------------------------------------------------------------
/email-templates/account/identity-change/en/style.scss:
--------------------------------------------------------------------------------
1 | @import '../../../layout/common';
2 |
--------------------------------------------------------------------------------
/email-templates/account/identity-change/en/subject.hbs:
--------------------------------------------------------------------------------
1 | Confirm Changes
--------------------------------------------------------------------------------
/email-templates/account/identity-change/en/text.hbs:
--------------------------------------------------------------------------------
1 | Please confirm these changes
2 |
3 | Hi {{ name }}, your user information was just changed. Please verify that you made these changes.
4 |
5 | {{#each changes}}
6 | {{ this.label }}: {{ this.value }}
7 | {{/each}}
8 |
9 | I accept the changes: {{ link }}
10 |
11 | If you didn't request this change please let us know!
12 |
13 | — Human Connection
--------------------------------------------------------------------------------
/email-templates/account/invite-email/de/html.hbs.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": "Hsd6ag",
3 | "email": "test@test.de",
4 | "language": "de",
5 | "frontURL": "http://localhost:3000",
6 | "backURL": "http://localhost:3030"
7 | }
8 |
--------------------------------------------------------------------------------
/email-templates/account/invite-email/de/subject.hbs:
--------------------------------------------------------------------------------
1 | Dein HC Alpha Ticket
2 |
--------------------------------------------------------------------------------
/email-templates/account/invite-email/en/html.hbs.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": "Hsd6ag",
3 | "email": "test@test.de",
4 | "language": "en",
5 | "frontURL": "http://localhost:3000",
6 | "backURL": "http://localhost:3030"
7 | }
8 |
--------------------------------------------------------------------------------
/email-templates/account/invite-email/en/subject.hbs:
--------------------------------------------------------------------------------
1 | Your HC Alpha Ticket
2 |
--------------------------------------------------------------------------------
/email-templates/account/password-change/de/html.hbs:
--------------------------------------------------------------------------------
1 | {{> header }}
2 |
3 |
4 |
5 |
6 |
7 |
8 | Passwort geändert
9 | |
10 |
11 |
12 |
13 | Hallo {{ name }}, dein passwort wurde eben geändert.
14 | |
15 |
16 |
17 |
18 | Wenn das nicht du warst lass es uns wissen!
19 | |
20 |
21 |
22 |
23 | — Human Connection
24 | |
25 |
26 |
27 | |
28 |
29 | {{> footer }}
30 |
--------------------------------------------------------------------------------
/email-templates/account/password-change/de/style.scss:
--------------------------------------------------------------------------------
1 | @import '../../../layout/common';
2 |
--------------------------------------------------------------------------------
/email-templates/account/password-change/de/subject.hbs:
--------------------------------------------------------------------------------
1 | Passwort geändert
2 |
--------------------------------------------------------------------------------
/email-templates/account/password-change/de/text.hbs:
--------------------------------------------------------------------------------
1 | Passwort geändert
2 |
3 | Hallo {{ name }}, dein passwort wurde eben geändert.
4 |
5 | Wenn das nicht du warst lass es uns wissen!
6 |
7 | — Human Connection
8 |
--------------------------------------------------------------------------------
/email-templates/account/password-change/en/html.hbs:
--------------------------------------------------------------------------------
1 | {{> header }}
2 |
3 |
4 |
5 |
6 |
7 |
8 | Password change
9 | |
10 |
11 |
12 |
13 | Hi {{ name }}, your password was recently changed.
14 | |
15 |
16 |
17 |
18 | If you didn't request this change please let us know
19 | |
20 |
21 |
22 |
23 | — Human Connection
24 | |
25 |
26 |
27 | |
28 |
29 | {{> footer }}
--------------------------------------------------------------------------------
/email-templates/account/password-change/en/style.scss:
--------------------------------------------------------------------------------
1 | @import '../../../layout/common';
2 |
--------------------------------------------------------------------------------
/email-templates/account/password-change/en/subject.hbs:
--------------------------------------------------------------------------------
1 | Password Change
--------------------------------------------------------------------------------
/email-templates/account/password-change/en/text.hbs:
--------------------------------------------------------------------------------
1 | Password change
2 |
3 | Hi {{ name }}, your password was recently changed.
4 |
5 | If you didn't request this change please let us know!
6 |
7 | — Human Connection
--------------------------------------------------------------------------------
/email-templates/account/password-reset/de/html.hbs:
--------------------------------------------------------------------------------
1 | {{> header }}
2 |
3 |
4 |
5 |
6 |
7 |
8 | Passwort erfolgreich zurückgesetzt
9 | |
10 |
11 |
12 |
13 | Hallo {{ name }}, dein passwort wurde erfolgreich zurückgesetzt.
14 | |
15 |
16 |
17 |
18 | Wenn du es nicht warst der dein Passwort zurücksetzen wollte lass es uns wissen!
19 | |
20 |
21 |
22 |
23 | — Human Connection
24 | |
25 |
26 |
27 | |
28 |
29 | {{> footer }}
30 |
--------------------------------------------------------------------------------
/email-templates/account/password-reset/de/style.scss:
--------------------------------------------------------------------------------
1 | @import '../../../layout/common';
--------------------------------------------------------------------------------
/email-templates/account/password-reset/de/subject.hbs:
--------------------------------------------------------------------------------
1 | Passwort erfolgreich zurückgesetzt
2 |
--------------------------------------------------------------------------------
/email-templates/account/password-reset/de/text.hbs:
--------------------------------------------------------------------------------
1 | Passwort erfolgreich zurückgesetzt
2 |
3 | Hallo {{ name }}, dein passwort wurde erfolgreich zurückgesetzt.
4 |
5 | Wenn du es nicht warst der dein Passwort zurücksetzen wollte lass es uns wissen!
6 |
7 | — Human Connection
8 |
--------------------------------------------------------------------------------
/email-templates/account/password-reset/en/html.hbs:
--------------------------------------------------------------------------------
1 | {{> header }}
2 |
3 |
4 |
5 |
6 |
7 |
8 | Password reset
9 | |
10 |
11 |
12 |
13 | Hi {{ name }}, your password was just reset.
14 | |
15 |
16 |
17 |
18 | If you didn't request this change please let us know
19 | |
20 |
21 |
22 |
23 | — Human Connection
24 | |
25 |
26 |
27 | |
28 |
29 | {{> footer }}
--------------------------------------------------------------------------------
/email-templates/account/password-reset/en/style.scss:
--------------------------------------------------------------------------------
1 | @import '../../../layout/common';
--------------------------------------------------------------------------------
/email-templates/account/password-reset/en/subject.hbs:
--------------------------------------------------------------------------------
1 | Password Reset
--------------------------------------------------------------------------------
/email-templates/account/password-reset/en/text.hbs:
--------------------------------------------------------------------------------
1 | Password reset
2 |
3 | Hi {{ name }}, your password was just reset.
4 |
5 | If you didn't request this change please let us know!
6 |
7 | — Human Connection
--------------------------------------------------------------------------------
/email-templates/account/reset-password/de/html.hbs:
--------------------------------------------------------------------------------
1 | {{> header }}
2 |
3 |
4 |
5 |
6 |
7 |
8 | Passwort zurücksetzen
9 | |
10 |
11 |
12 |
13 | Hallo {{ name }}, wir haben die Anfrage erhalten das du dein Passwort zurücksetzen möchtest.
14 | |
15 |
16 |
17 |
18 | Passwort zurücksetzen
19 | |
20 |
21 |
22 |
23 | Wenn du diese Nachricht ignorierst, bleibt dein Passwort wie es ist.
24 | |
25 |
26 |
27 |
28 | Wenn du es nicht warst, der dein Passwort zurücksetzen wollte, lass es uns wissen!
29 | |
30 |
31 |
32 |
33 | — Human Connection
34 | |
35 |
36 |
37 | |
38 |
39 | {{> footer }}
40 |
--------------------------------------------------------------------------------
/email-templates/account/reset-password/de/style.scss:
--------------------------------------------------------------------------------
1 | @import '../../../layout/common';
--------------------------------------------------------------------------------
/email-templates/account/reset-password/de/subject.hbs:
--------------------------------------------------------------------------------
1 | Passwort zurücksetzen
2 |
--------------------------------------------------------------------------------
/email-templates/account/reset-password/de/text.hbs:
--------------------------------------------------------------------------------
1 | Passwort zurücksetzen
2 |
3 | Hallo {{ name }}, wir haben die Anfrage erhalten das du dein Passwort zurücksetzen möchtest.
4 |
5 | Passwort zurücksetzen: {{ link }}
6 |
7 | Wenn du diese Nachricht ignorierst bleibt dein passwort wie es ist.
8 |
9 | Wenn du es nicht warst der dein Passwort zurücksetzen wollte lass es uns wissen!
10 |
11 | — Human Connection
12 |
--------------------------------------------------------------------------------
/email-templates/account/reset-password/en/html.hbs:
--------------------------------------------------------------------------------
1 | {{> header }}
2 |
3 |
4 |
5 |
6 |
7 |
8 | Confirm password reset
9 | |
10 |
11 |
12 |
13 | Hi {{ name }}, we got a request to reset your password.
14 | |
15 |
16 |
17 |
18 | Reset password
19 | |
20 |
21 |
22 |
23 | If you ignore this message your password won't be changed.
24 | |
25 |
26 |
27 |
28 | If you didn't request this change please let us know
29 | |
30 |
31 |
32 |
33 | — Human Connection
34 | |
35 |
36 |
37 | |
38 |
39 | {{> footer }}
--------------------------------------------------------------------------------
/email-templates/account/reset-password/en/style.scss:
--------------------------------------------------------------------------------
1 | @import '../../../layout/common';
--------------------------------------------------------------------------------
/email-templates/account/reset-password/en/subject.hbs:
--------------------------------------------------------------------------------
1 | Confirm Reset Password
--------------------------------------------------------------------------------
/email-templates/account/reset-password/en/text.hbs:
--------------------------------------------------------------------------------
1 | Confirm password reset
2 |
3 | Hi {{ name }}, we got a request to reset your password.
4 |
5 | Reset password: {{ link }}
6 |
7 | If you ignore this message your password won't be changed.
8 |
9 | If you didn't request this change please let us know!
10 |
11 | — Human Connection
--------------------------------------------------------------------------------
/email-templates/account/verify-email/de/html.hbs:
--------------------------------------------------------------------------------
1 | {{> header }}
2 |
3 |
4 |
5 |
6 |
7 |
8 | Bestätige deine E-Mail-Adresse
9 | |
10 |
11 |
12 |
13 | Hallo {{ name }}, bitte bestädige deine E-Mail-Adresse durch klick auf den unteren Link.
14 | |
15 |
16 |
17 |
18 | Es ist wichtig das wir deine Korrekte E-Mail-Adresse um dein Konto zu schützen
19 | |
20 |
21 |
22 |
23 | Bestätige deine E-Mail-Adresse
24 | |
25 |
26 |
27 |
28 | — Human Connection
29 | |
30 |
31 |
32 | |
33 |
34 | {{> footer }}
35 |
--------------------------------------------------------------------------------
/email-templates/account/verify-email/de/style.scss:
--------------------------------------------------------------------------------
1 | @import '../../../layout/common';
--------------------------------------------------------------------------------
/email-templates/account/verify-email/de/subject.hbs:
--------------------------------------------------------------------------------
1 | Bestätige deine E-Mail-Adresse
--------------------------------------------------------------------------------
/email-templates/account/verify-email/de/text.hbs:
--------------------------------------------------------------------------------
1 | Bitte bestätige deine E-Mail-Adresse
2 |
3 | Hallo {{ name }}, bitte bestädige deine E-Mail-Adresse durch klick auf den unteren Link.
4 |
5 | Es ist wichtig das wir deine Korrekte E-Mail-Adresse um dein Konto zu schützen.
6 |
7 | Bestätige deine E-Mail-Adresse unter der folgenden URL:
8 | {{ link }}
9 |
10 | — Human Connection
11 |
--------------------------------------------------------------------------------
/email-templates/account/verify-email/en/html.hbs:
--------------------------------------------------------------------------------
1 | {{> header }}
2 |
3 |
4 |
5 |
6 |
7 |
8 | Please confirm your email address
9 | |
10 |
11 |
12 |
13 | Hi {{ name }}, please confirm your email address by clicking the link below.
14 | |
15 |
16 |
17 |
18 | We may need to send you critical information about our service and it is important that we have an accurate email address.
19 | |
20 |
21 |
22 |
23 | Confirm email address
24 | |
25 |
26 |
27 |
28 | — Human Connection
29 | |
30 |
31 |
32 | |
33 |
34 | {{> footer }}
--------------------------------------------------------------------------------
/email-templates/account/verify-email/en/style.scss:
--------------------------------------------------------------------------------
1 | @import '../../../layout/common';
--------------------------------------------------------------------------------
/email-templates/account/verify-email/en/subject.hbs:
--------------------------------------------------------------------------------
1 | Confirm yor Email Address
--------------------------------------------------------------------------------
/email-templates/account/verify-email/en/text.hbs:
--------------------------------------------------------------------------------
1 | Please confirm your email address
2 |
3 | Hi {{ name }}, please confirm your email address by clicking the link below.
4 |
5 | We may need to send you critical information about our service and it is important that we have an accurate email address.
6 |
7 | Confirm email address by following this link:
8 | {{ link }}
9 |
10 | — Human Connection
11 |
--------------------------------------------------------------------------------
/email-templates/layout/_variables.scss:
--------------------------------------------------------------------------------
1 | //font-family
2 | $family-sans-serif: "Helvetica Neue", "Helvetica", "Arial", sans-serif;
3 | $body-size: 16px;
4 |
5 | //colors
6 | $black: hsl(0, 0%, 4%);
7 | $black-bis: hsl(0, 0%, 7%);
8 | $black-ter: hsl(0, 0%, 14%);
9 |
10 | $grey-darker: hsl(0, 0%, 25%);
11 | $grey-dark: hsl(0, 0%, 34%);
12 | $grey: hsl(0, 0%, 48%);
13 | $grey-light: hsl(0, 0%, 71%);
14 | $grey-lighter: hsl(0, 0%, 86%);
15 |
16 | $white-ter: hsl(0, 0%, 96%);
17 | $white-bis: hsl(0, 0%, 98%);
18 | $white: hsl(0, 0%, 100%);
19 |
20 | $orange: hsl(14, 100%, 53%);
21 | $yellow: hsl(48, 100%, 67%);
22 | $green: hsl(78, 71%, 41%);
23 | $turquoise: $green;
24 | $blue: hsl(217, 71%, 53%);
25 | $purple: hsl(271, 100%, 71%);
26 | $red: hsl(12, 51%, 55%);
27 | $primary: $green;
28 | $link: $green;
29 |
30 | $radius-small: 1px;
31 | $radius: 1px;
32 | $radius-large: 2px;
33 |
34 | $border: $grey-light;
35 | $border-hover: $grey;
--------------------------------------------------------------------------------
/email-templates/layout/footer.hbs:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 | |
12 |
13 |
14 |
15 |