old client structure

This commit is contained in:
Matteo Pagliazzi
2019-10-01 11:44:38 +02:00
parent 5b61f65711
commit b44fbdcb14
906 changed files with 44 additions and 44 deletions
@@ -0,0 +1,11 @@
<template lang="pug">
.container-fluid.text-center
.row
.col-md-6.offset-3
h1 {{ $t('checkOutMobileApps') }}
.promo_habitica(style='border-radius:25px;margin:auto;margin-bottom:30px')
a(href='https://play.google.com/store/apps/details?id=com.habitrpg.android.habitica&utm_source=global_co&utm_medium=prtnr&utm_content=Mar2515&utm_campaign=PartBadge&pcampaignid=MKT-AC-global-none-all-co-pr-py-PartBadges-Oct1515-1&utm_source=global_co&utm_medium=prtnr&utm_content=Mar2515&utm_campaign=PartBadge&pcampaignid=MKT-AC-global-none-all-co-pr-py-PartBadges-Oct1515-1')
img(alt='Get it on Google Play', src='https://play.google.com/intl/en_us/badges/images/apps/en-play-badge.png', style='width:139px;height:45px;image-rendering:auto;vertical-align:top')
a(href='https://geo.itunes.apple.com/us/app/habitica/id994882113?mt=8', style='display:inline-block;overflow:hidden;background:url(http://linkmaker.itunes.apple.com/images/badges/en-us/badge_appstore-lrg.svg#svgView) no-repeat;background-size:100%;width:152px;height:45px;margin-left:20px;image-rendering:auto')
</template>
@@ -0,0 +1,37 @@
<template lang="pug">
.container-fluid.text-center
.row
.col-md-6.offset-3
h1 {{ $t('clearBrowserData') }}
p(v-html="$t('localStorageTryFirst', localStorageTryFirst) ")
br
p.text-center
button.btn.btn-lg.btn-danger(@click='clearLocalStorage()',
popover-trigger='mouseover', :popover="$t('localStorageClearExplanation')")
| {{ $t('localStorageClear') }}
br
p(v-html="$t('localStorageTryNext', localStorageTryNext) ")
</template>
<script>
export default {
data () {
return {
localStorageTryFirst: {
linkStart: '<a href="/user/settings/site" target="_blank">',
linkEnd: '</a>',
},
localStorageTryNext: {
linkStart: '<a href="https://github.com/HabitRPG/habitica/issues/2760" target="_blank">',
linkEnd: '</a>',
},
};
},
methods: {
clearLocalStorage () {
this.$store.dispatch('auth:logout');
},
},
};
</script>
@@ -0,0 +1,213 @@
<template lang="pug">
.container-fluid
h1 {{ $t('communityGuidelines') }}
hr
p {{ $t('lastUpdated') }} March 29, 2018
h2#welcome {{ $t('commGuideHeadingWelcome') }}
.media.align-items-center
img(src='~assets/images/community-guidelines/intro.png')
.media-body
p(v-html="$t('commGuidePara001')")
p(v-html="$t('commGuidePara002')")
p(v-html="$t('commGuidePara003')")
p(v-html="$t('commGuidePara004')")
h2#interactions {{ $t('commGuideHeadingInteractions') }}
.media.align-items-center
.media-body
p(v-html="$t('commGuidePara015')")
p(v-html="$t('commGuidePara016')")
img(src='~assets/images/community-guidelines/publicSpaces.png')
ul
li(v-html="$t('commGuideList02A')")
li(v-html="$t('commGuideList02B')")
li(v-html="$t('commGuideList02C')")
li(v-html="$t('commGuideList02D')")
li(v-html="$t('commGuideList02E')")
li(v-html="$t('commGuideList02F')")
li(v-html="$t('commGuideList02G')")
li(v-html="$t('commGuideList02H')")
li(v-html="$t('commGuideList02I')")
li(v-html="$t('commGuideList02J')")
li(v-html="$t('commGuideList02K')")
li(v-html="$t('commGuideList02L')")
p(v-html="$t('commGuidePara019')")
p(v-html="$t('commGuidePara020')")
p(v-html="$t('commGuidePara020A')")
p(v-html="$t('commGuidePara021')")
h3#tavern {{ $t('commGuideHeadingTavern') }}
.media.align-items-center
img(src='~assets/images/community-guidelines/tavern.png')
.media-body
p(v-html="$t('commGuidePara022')")
p(v-html="$t('commGuidePara023')")
p(v-html="$t('commGuidePara024')")
.media.align-items-center
.media-body
p(v-html="$t('commGuidePara027')")
img(src='~assets/images/community-guidelines/backCorner.png')
h3#guilds {{ $t('commGuideHeadingPublicGuilds') }}
.media.align-items-center
.media-body
p(v-html="$t('commGuidePara029')")
p(v-html="$t('commGuidePara031')")
img(src='~assets/images/community-guidelines/publicGuilds.png')
p(v-html="$t('commGuidePara033')")
p(v-html="$t('commGuidePara035')")
p(v-html="$t('commGuidePara036')")
p(v-html="$t('commGuidePara037')")
p(v-html="$t('commGuidePara038')")
h2#infractions-consequences-restoration {{ $t('commGuideHeadingInfractionsEtc') }}
h3#infractions {{ $t('commGuideHeadingInfractions') }}
.media.align-items-center
img(src='~assets/images/community-guidelines/infractions.png')
.media-body
p(v-html="$t('commGuidePara050')")
p(v-html="$t('commGuidePara051')")
h4 {{ $t('commGuideHeadingSevereInfractions') }}
p(v-html="$t('commGuidePara052')")
p(v-html="$t('commGuidePara053')")
ul
li(v-html="$t('commGuideList05A')")
li(v-html="$t('commGuideList05B')")
li(v-html="$t('commGuideList05C')")
li(v-html="$t('commGuideList05D')")
li(v-html="$t('commGuideList05E')")
li(v-html="$t('commGuideList05F')")
li(v-html="$t('commGuideList05G')")
h4 {{ $t('commGuideHeadingModerateInfractions') }}
p(v-html="$t('commGuidePara054')")
p(v-html="$t('commGuidePara055')")
ul
li(v-html="$t('commGuideList06A')")
li(v-html="$t('commGuideList06B')")
li(v-html="$t('commGuideList06C')")
li(v-html="$t('commGuideList06D')")
li(v-html="$t('commGuideList06E')")
h4 {{ $t('commGuideHeadingMinorInfractions') }}
p(v-html="$t('commGuidePara056')")
p(v-html="$t('commGuidePara057')")
ul
li(v-html="$t('commGuideList07A')")
li(v-html="$t('commGuideList07B')")
p(v-html="$t('commGuidePara057A')")
h3#consequences {{ $t('commGuideHeadingConsequences') }}
.media.align-items-center
.media-body
p(v-html="$t('commGuidePara058')")
p(v-html="$t('commGuidePara059')")
img(src='~assets/images/community-guidelines/consequences.png')
p(v-html="$t('commGuidePara060')")
ul
li(v-html="$t('commGuideList08A')")
li(v-html="$t('commGuideList08B')")
li(v-html="$t('commGuideList08C')")
p(v-html="$t('commGuidePara060A')")
p(v-html="$t('commGuidePara060B')")
h4 {{ $t('commGuideHeadingSevereConsequences') }}
ul
li(v-html="$t('commGuideList09A')")
li(v-html="$t('commGuideList09C')")
h4 {{ $t('commGuideHeadingModerateConsequences') }}
ul
li {{ $t('commGuideList10A') }}
ul
li {{ $t('commGuideList10A1') }}
li(v-html="$t('commGuideList10C')")
li(v-html="$t('commGuideList10D')")
li(v-html="$t('commGuideList10E')")
li(v-html="$t('commGuideList10F')")
h4 {{ $t('commGuideHeadingMinorConsequences') }}
ul
li(v-html="$t('commGuideList11A')")
li(v-html="$t('commGuideList11B')")
li(v-html="$t('commGuideList11C')")
li(v-html="$t('commGuideList11D')")
li(v-html="$t('commGuideList11E')")
h3#restoration {{ $t('commGuideHeadingRestoration') }}
.media.align-items-center
img(src='~assets/images/community-guidelines/restoration.png')
.media-body
p(v-html="$t('commGuidePara061')")
p(v-html="$t('commGuidePara062')")
p(v-html="$t('commGuidePara063')")
h2#meet-the-mods {{ $t('commGuideHeadingMeet') }}
p(v-html="$t('commGuidePara006')")
p(v-html="$t('commGuidePara007')")
p(v-html="$t('commGuidePara008')")
p(v-html="$t('commGuidePara009')")
.media.align-items-center
img(src='~assets/images/community-guidelines/staff.png')
.media-body
ul
li {{ $t('commGuideAKA', {habitName: 'Beffymaroo', realName: 'Beth'}) }}
li {{ $t('commGuideAKA', {habitName: 'Viirus', realName: 'Phillip'}) }}
li {{ $t('commGuideAKA', {habitName: 'redphoenix', realName: 'Vicky'}) }} ({{ $t('commGuideOnTrello', {trelloName: 'caffeinatedvee'}) }}, {{ $t('commGuideOnGitHub', {gitHubName: 'veeeeeee'}) }})
li {{ $t('commGuideAKA', {habitName: 'Lemoness', realName: 'Leslie'}) }} ({{ $t('commGuideOnTrello', {trelloName: 'lemonesstree'}) }})
li {{ $t('commGuideAKA', {habitName: 'SabreCat', realName: 'Sabe'}) }}
li {{ $t('commGuideAKA', {habitName: 'paglias', realName: 'Matteo'}) }}
li {{ $t('commGuideAKA', {habitName: 'TheHollidayInn', realName: 'Keith'}) }}
p(v-html="$t('commGuidePara010')")
.media.align-items-center
img(src='~assets/images/community-guidelines/moderators.png')
.media-body
p(v-html="$t('commGuidePara011')")
ul
li Bailey (It's Bailey {{ $t('commGuidePara011a') }})
li Ryan (deilann {{ $t('commGuidePara011b') }})
li Cantras
li Alys (LadyAlys {{ $t('commGuidePara011c') }})
li Fox_town
li Blade ({{ $t('commGuideOnGitHub', {gitHubName: 'crookedneighbor'}) }})
li Daniel the Bard
li shanaqui
li Dewines
li Megan
li Breadstrings
p(v-html="$t('commGuidePara012')")
p(v-html="$t('commGuidePara013')")
p {{ $t('commGuidePara014') }}&nbsp;
em lefnire, Slappybag, litenull, Shaner, Bobbyroberts99, wc8
h2#final {{ $t('commGuideHeadingFinal') }}
p(v-html="$t('commGuidePara067')")
p(v-html="$t('commGuidePara068')")
h2#links {{ $t('commGuideHeadingLinks') }}
ul
li(v-html="$t('commGuideLink01')")
li(v-html="$t('commGuideLink02')")
li(v-html="$t('commGuideLink03')")
li(v-html="$t('commGuideLink04')")
li(v-html="$t('commGuideLink05')")
li(v-html="$t('commGuideLink06')")
li(v-html="$t('commGuideLink07')")
p(v-html="$t('commGuidePara069')")
ul.list-2col.list-unstyled
li Breadstrings
li Draayder
li Kiwibot
li Leephon
li Lemoness
li Luciferian
li Revcleo
li Shaner
li Starsystemic
li UncommonCriminal
</template>
<style lang='scss' scoped>
.list-2col {
width: 50%;
columns: 2;
-moz-columns: 2;
-webkit-columns: 2;
}
</style>
@@ -0,0 +1,56 @@
<template lang="pug">
.container-fluid
.row
.col-md-6.offset-3
h1 {{ $t('contactUs') }}
p
| {{ $t('reportAccountProblems') }}
| &colon;&nbsp;
a(href='mailto:admin@habitica.com') admin&commat;habitica&period;com
br
| {{ $t('reportBug') }}
| &colon;&nbsp;
a(target='_blank', href='/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac') Report a Bug guild
| &nbsp;or&nbsp;
a(target='_blank', href='https://github.com/HabitRPG/habitica/issues?q=is%3Aopen') GitHub
span(v-if='this.user')
br
| {{ $t('reportCommunityIssues') }}
| &colon;&nbsp;
a(@click.prevent='modForm()', href='') {{ $t('contactForm') }}
br
| {{ $t('subscriptionPaymentIssues') }}
| &colon;&nbsp;
a(href='mailto:admin@habitica.com') admin&commat;habitica&period;com
br
| {{ $t('generalQuestionsSite') }}
| &colon;&nbsp;
a(target='_blank', href='/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a') Habitica Help guild
br
| {{ $t('businessInquiries') }}
| &colon;&nbsp;
a(href='mailto:admin@habitica.com') admin@habitica.com
br
| {{ $t('merchandiseInquiries') }}
| &colon;&nbsp;
a(href='mailto:admin@habitica.com') admin&commat;habitica&period;com
</template>
<script>
import { mapState } from 'client/libs/store';
import { goToModForm } from 'client/libs/modform';
export default {
computed: {
...mapState({
user: 'user.data',
}),
},
methods: {
modForm () {
goToModForm(this.user);
},
},
};
</script>
@@ -0,0 +1,97 @@
<template lang="pug">
.container-fluid(role="tablist")
.row
.col-12.col-md-6.offset-md-3
h1#faq-heading {{ $t('frequentlyAskedQuestions') }}
.faq-question(v-for='(heading, index) in headings', :key="index")
h2(role="tab", v-b-toggle="heading", @click="handleClick($event)", variant="info") {{ $t(`faqQuestion${index}`) }}
b-collapse(:id="heading", :visible="isVisible(heading)", accordion="faq", role="tabpanel")
div.card-body(v-markdown="$t('webFaqAnswer' + index, replacements)")
hr
p(v-markdown="$t('webFaqStillNeedHelp')")
</template>
<style lang='scss' scoped>
.card-body {
margin-bottom: 1em;
}
.faq-question h2 {
cursor: pointer;
}
.faq-question .card-body {
padding: 0;
}
.static-wrapper .faq-question h2 {
margin: 0 0 16px 0;
}
.faq-question a {
text-decoration: none;
color: #4F2A93;
}
@media only screen and (max-width: 768px) {
.container-fluid {
margin: auto;
}
}
</style>
<script>
// @TODO: env.EMAILS.TECH_ASSISTANCE_EMAIL
const TECH_ASSISTANCE_EMAIL = 'admin@habitica.com';
import markdownDirective from 'client/directives/markdown';
export default {
directives: {
markdown: markdownDirective,
},
data () {
let headings = [
'overview',
'set-up-tasks',
'sample-tasks',
'task-color',
'health',
'party-with-friends',
'pets-mounts',
'character-classes',
'blue-mana-bar',
'monsters-quests',
'gems',
'bugs-features',
'world-boss',
];
const hash = window.location.hash.replace('#', '');
return {
headings,
replacements: {
techAssistanceEmail: TECH_ASSISTANCE_EMAIL,
wikiTechAssistanceEmail: `mailto:${TECH_ASSISTANCE_EMAIL}`,
},
visible: hash && headings.includes(hash) ? hash : null,
// @TODO webFaqStillNeedHelp: {
// linkStart: '[',
// linkEnd: '](/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a)',
// },
// "webFaqStillNeedHelp": "If you have a question that isn't on this list or on the [Wiki FAQ](http://habitica.fandom.com/wiki/FAQ), come ask in the <%= linkStart %>Habitica Help guild<%= linkEnd %>! We're happy to help."
};
},
methods: {
isVisible (heading) {
return this.visible && this.visible === heading;
},
handleClick (e) {
if (!e) return;
const heading = e.target.nextElementSibling.id;
history.pushState({}, heading, `#${heading}`);
},
},
};
</script>
@@ -0,0 +1,105 @@
<template lang="pug">
.container-fluid.text-center
.row
.col-md-12
h1 {{ $t('marketing1Header') }}
.row
.col-md-6
img(src='~assets/images/marketing/screenshot.png')
h2 {{ $t('marketing1Lead1Title') }}
p {{ $t('marketing1Lead1') }}
.col-md-6
img(src='~assets/images/marketing/gear.png')
h2 {{ $t('marketing1Lead2Title') }}
p {{ $t('marketing1Lead2') }}
img(src='~assets/images/marketing/drops.png', style='max-height: 200px;')
h2 {{ $t('marketing1Lead3Title') }}
p {{ $t('marketing1Lead3') }}
hr
.row
.col-md-12
h1 {{ $t('marketing2Header') }}
.row
.col-md-6
img(src='~assets/images/marketing/guild.png')
h2 {{ $t('marketing2Lead1Title') }}
p {{ $t('marketing2Lead1') }}
img(src='~assets/images/marketing/vice3.png')
h2 {{ $t('marketing2Lead2Title') }}
p(v-markdown='$t("marketing2Lead2")')
.col-md-6
img(src='~assets/images/marketing/challenge.png')
h2 {{ $t('marketing2Lead3Title') }}
p {{ $t('marketing2Lead3') }}
hr
.row
.col-md-12
h1 {{ $t('marketing3Header') }}
.row
.col-md-6
img(src='~assets/images/marketing/android_iphone.png')
h2 {{ $t('footerMobile') }}
p(v-markdown='$t("marketing3Lead1")')
.col-md-6
img(src='~assets/images/marketing/integration.png')
h2 {{ $t('marketing3Lead2Title') }}
p(v-markdown='$t("marketing3Lead2")')
hr
.row
.col-md-12
h1 {{ $t('marketing4Header') }}
.row
.col-md-6
.media
img(src='~assets/images/marketing/education.png')
.media-body
h2 {{ $t('marketing4Lead1Title') }}
p {{ $t('marketing4Lead1') }}
.col-md-6
.media
img(src='~assets/images/marketing/wellness.png')
.media-body
h2 {{ $t('marketing4Lead2Title') }}
p {{ $t('marketing4Lead2') }}
.row
.col-md-6.offset-md-3
h2 {{ $t('marketing4Lead3Title') }}
img(src='~assets/images/marketing/lefnire.png')
p.span
span {{ $t('marketing4Lead3-1') }}
button.btn.btn-primary(@click='playButtonClick()') {{ $t('playButton') }}
p.span
span {{ $t('marketing4Lead3-2') }}
a.btn.btn-primary(href='/static/plans',target='_blank') {{ $t('contactUs') }}
</template>
<style lang='scss' scoped>
.btn {
margin-left: 1em;
}
img {
box-shadow: 0 0 10px 5px #888;
margin: 0.5em;
max-width: 500px;
@media (max-width: 1200px) {
max-width: 100%;
}
}
</style>
<script>
import markdownDirective from 'client/directives/markdown';
export default {
directives: {
markdown: markdownDirective,
},
methods: {
playButtonClick () {
this.$router.push('/register');
},
},
};
</script>
@@ -0,0 +1,252 @@
<template lang="pug">
.group-plan-static.text-center
amazon-payments-modal
.container
.row.top
.top-left
.col-6.offset-3
img.party(src='../../assets/images/group-plans-static/party@3x.png')
h1 {{ $t('groupPlanTitle') }}
p {{ $t('groupPlanDesc') }}
.pricing
span Just
span.number $9
span.bold per month +
span.number $3
span.bold per member*
.text-center
button.btn.btn-primary.cta-button(@click="goToNewGroupPage()") {{ $t('getStarted') }}
small {{ $t('billedMonthly') }}
.top-right
.row
.text-col.col-12.col-md-6.text-left
h2 {{ $t('teamBasedTasksList') }}
p {{ $t('teamBasedTasksListDesc') }}
.col-12.col-md-6
.team-based(v-html='svg.teamBased')
.row
.col-12.col-md-6
.group-management(v-html='svg.groupManagement')
.text-col.col-12.col-md-6.text-left
h2 {{ $t('groupManagementControls') }}
p {{ $t('groupManagementControlsDesc') }}
.row
.col-12.col-md-6.offset-md-3.text-center
img.big-gem(src='../../assets/images/group-plans-static/big-gem@3x.png')
h2 {{ $t('inGameBenefits') }}
p {{ $t('inGameBenefitsDesc') }}
.row
.bot-left
.col-6.offset-3
h2.purple {{ $t('inspireYourParty') }}
.pricing
span Just
span.number $9
span.bold per month +
span.number $3
span.bold per member*
.text-center
button.btn.btn-primary.cta-button(@click="goToNewGroupPage()") {{ $t('getStarted') }}
small {{ $t('billedMonthly') }}
.bot-right
b-modal#group-plan(title="", size='md', :hide-footer='true', :hide-header='true')
div(v-if='modalPage === "account"')
h2 {{ $t('letsMakeAccount') }}
auth-form(@authenticate='authenticate()')
div(v-if='modalPage === "purchaseGroup"')
create-group-modal-pages
</template>
<style lang='scss' scoped>
@import url('https://fonts.googleapis.com/css?family=Varela+Round');
h1, h2 {
font-family: 'Varela Round', sans-serif;
font-weight: normal;
}
.party {
width: 386px;
margin-top: 4em;
}
.team-based {
background-image: url('../../assets/images/group-plans-static/group-management@3x.png');
background-size: contain;
position: absolute;
height: 356px;
width: 411px;
margin-top: -2em;
}
.group-management {
background-image: url('../../assets/images/group-plans-static/team-based@3x.png');
background-size: contain;
position: absolute;
height: 294px;
width: 411px;
}
.top-left, .top-right, .bot-left, .bot-right {
width: 273px;
height: 396px;
background-size: contain;
position: absolute;
}
.top-left {
background-image: url('../../assets/images/group-plans-static/top-left@3x.png');
left: 4em;
height: 420px;
}
.top-right {
background-image: url('../../assets/images/group-plans-static/top-right@3x.png');
right: 4em;
height: 420px;
}
.bot-left {
background-image: url('../../assets/images/group-plans-static/bot-left@3x.png');
left: 4em;
bottom: 1em;
}
.bot-right {
background-image: url('../../assets/images/group-plans-static/bot-right@3x.png');
right: 4em;
bottom: 1em;
}
h1 {
font-size: 42px;
color: #34313a;
line-height: 1.17;
}
h2 {
font-size: 29px;
color: #34313a;
margin-top: 1em;
}
.purple {
color: #6133b4;
}
p {
font-size: 20px;
color: #878190;
}
.group-plan-static {
margin-top: 6em;
position: relative;
}
.row {
margin-top: 10em;
margin-bottom: 10em;
}
.text-col {
margin-top: 3em;
}
.big-gem {
width: 138.5px;
}
.cta-button {
font-family: 'Varela Round', sans-serif;
font-weight: normal;
padding: 1em 2em;
margin-top: 1em;
margin-bottom: 1em;
border-radius: 4px;
background-color: #6133b4;
box-shadow: inset 0 -4px 0 0 rgba(52, 49, 58, 0.4);
font-size: 20px;
color: #fff;
}
.pricing {
color: #878190;
font-size: 24px;
span {
margin-right: .2em;
}
.bold {
font-weight: bold;
}
.number {
color: #1ca372;
font-weight: bold;
}
}
small {
font-size: 16px;
color: #a5a1ac;
}
</style>
<script>
import * as Analytics from 'client/libs/analytics';
import { setup as setupPayments } from 'client/libs/payments';
import amazonPaymentsModal from 'client/components/payments/amazonModal';
import StaticHeader from './header.vue';
import AuthForm from '../auth/authForm.vue';
import CreateGroupModalPages from '../group-plans/createGroupModalPages.vue';
import party from '../../assets/images/group-plans-static/party.svg';
export default {
components: {
StaticHeader,
AuthForm,
CreateGroupModalPages,
amazonPaymentsModal,
},
data () {
return {
svg: {
party,
},
modalTitle: this.$t('register'),
modalPage: 'account',
};
},
mounted () {
this.$nextTick(() => {
// Load external scripts after the app has been rendered
setupPayments();
});
},
methods: {
goToNewGroupPage () {
Analytics.track({
hitType: 'event',
eventCategory: 'group-plans-static',
eventAction: 'view',
eventLabel: 'view-auth-form',
});
this.$root.$emit('bv::show::modal', 'group-plan');
},
authenticate () {
this.modalPage = 'purchaseGroup';
Analytics.track({
hitType: 'event',
eventCategory: 'group-plans-static',
eventAction: 'view',
eventLabel: 'create-group',
});
},
},
};
</script>
@@ -0,0 +1,201 @@
<template lang="pug">
nav.navbar.navbar-inverse.fixed-top.navbar-expand-sm
.navbar-header
router-link.nav-item(:to='!isUserLoggedIn ? "/static/home" : "/"')
.logo.svg-icon(v-html='icons.purpleLogo', v-if='this.$route.name === "plans"')
.logo.svg-icon(v-html='icons.logo', v-else)
.collapse.navbar-collapse
ul.navbar-nav.mr-auto(v-if='$route.name !== "home"')
router-link.nav-item(tag='li', to='/static/features')
a.nav-link(v-once) {{ $t('companyAbout') }}
router-link.nav-item(tag='li', to='/static/plans')
a.nav-link(v-once) {{ $t('groupPlans') }}
li.nav-item
a.nav-link(href='https://habitica.wordpress.com/', target='_blank') {{ $t('companyBlog') }}
li.nav-item
a.nav-link(href='http://blog.habitrpg.com/', target='_blank') {{ $t('tumblr') }}
router-link.nav-item(tag='li', to='/static/press-kit')
a.nav-link(v-once) {{ $t('presskit') }}
router-link.nav-item(tag='li', to='/static/contact')
a.nav-link(v-once) {{ $t('contactUs') }}
ul.navbar-nav.mr-auto(v-else)
router-link.nav-item(tag='li', to='/register')
a.nav-link(v-once) {{ $t('getStarted') }}
li.nav-item
a.nav-link(@click='scrollToMobileApp') {{ $t('mobileApps') }}
li.nav-item.dropdown
a.nav-link.dropdown-toggle(v-once) {{ $t('learnMore') }}
.dropdown-menu
router-link.dropdown-item(to='/static/faq') {{ $t('faq') }}
router-link.dropdown-item(to='/static/plans') {{ $t('groupPlans') }}
button.btn.btn-primary.pull-right(@click='playButtonClick()', v-if='$route.name !== "home"') {{ $t('playButtonFull') }}
router-link.btn.btn-primary.login-button.pull-right(to='/login', v-if='$route.name === "home"') {{ $t('login') }}
</template>
<style lang='scss' scoped>
@import '~client/assets/scss/colors.scss';
@media only screen and (max-width : 750px) {
.login-button {
margin: 0 auto !important;
margin-top: 1.8em !important;
}
}
.home-header, .home-header .btn {
font-family: 'Varela Round', sans-serif;
font-weight: normal;
}
.btn-primary.pull-right {
height: 2.5em;
margin: auto 0px auto auto;
}
nav.navbar {
background: $purple-100 url(~assets/svg/for-css/bits.svg) right no-repeat;
padding-left: 25px;
padding-right: 12.5px;
height: 56px;
box-shadow: 0 1px 2px 0 rgba($black, 0.24);
}
.navbar-header {
margin-right: 48px;
.logo {
width: 128px;
height: 28px;
}
}
.nav-item {
.nav-link {
font-size: 16px !important;
color: $white;
line-height: 1.5;
padding: 16px 24px;
transition: none;
}
&:hover {
.nav-link {
color: $white;
background: $purple-200;
}
}
&.active:not(:hover) {
.nav-link {
box-shadow: 0px -4px 0px $purple-300 inset;
}
}
}
// Make the dropdown menu open on hover
.dropdown:hover .dropdown-menu {
display: block;
margin-top: 0; // remove the gap so it doesn't close
}
.dropdown + .dropdown {
margin-left: 0px;
}
.dropdown-separated {
border-bottom: 1px solid $gray-500;
}
.dropdown-menu:not(.user-dropdown) {
border-radius: 0px;
border: none;
box-shadow: none;
padding: 0px;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
.dropdown-item {
font-size: 12px;
padding-top: .5em !important;
box-shadow: none;
border: none;
text-align: center;
color: #4f2a93 !important;
&.active {
background: $purple-300;
}
&:hover {
background-color: #9a62ff !important;
color: $white !important;
&:last-child {
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
}
}
}
}
.home-header {
.nav-item:hover .nav-link {
background: transparent;
}
.dropdown-menu {
border-radius: 4px;
padding-top: .5em;
padding-bottom: .5em;
.dropdown-item {
border-radius: 0px !important;
}
}
}
</style>
<script>
import logo from 'assets/svg/logo.svg';
import purpleLogo from 'assets/svg/purple-logo.svg';
import * as Analytics from 'client/libs/analytics';
export default {
data () {
return {
icons: Object.freeze({
logo,
purpleLogo,
}),
};
},
computed: {
isUserLoggedIn () {
return this.$store.state.isUserLoggedIn;
},
},
methods: {
playButtonClick () {
if (this.isUserLoggedIn) {
this.$router.push('/');
return;
}
// @TODO duplicate of code in home.vue
Analytics.track({
hitType: 'event',
eventCategory: 'button',
eventAction: 'click',
eventLabel: 'Play',
});
this.$router.push('/register');
},
scrollToMobileApp () {
document.querySelector('#level-up-anywhere').scrollIntoView({
behavior: 'smooth',
});
},
},
};
</script>
@@ -0,0 +1,733 @@
<template lang="pug">
#front.static-view
noscript.banner {{ $t('jsDisabledHeadingFull') }}
br
a(href='http://www.enable-javascript.com/', target='_blank') {{ $t('jsDisabledLink') }}
#intro-signup.purple-1
.container
.row
.col-12.col-md-6.col-lg-6
img(src='~assets/images/home/home-main@3x.png', width='357px')
h1 {{$t('motivateYourself')}}
p.section-main {{$t('timeToGetThingsDone', {userCountInMillions})}}
.col-12.col-md-6.col-lg-6
h3.text-center {{$t('singUpForFree')}}
div.text-center
button.social-button(@click='socialAuth("facebook")')
.svg-icon.social-icon(v-html="icons.facebookIcon")
span {{$t('signUpWithSocial', {social: 'Facebook'})}}
button.social-button(@click='socialAuth("google")')
.svg-icon.social-icon(v-html="icons.googleIcon")
span {{$t('signUpWithSocial', {social: 'Google'})}}
.strike
span {{$t('or')}}
.form(@keyup.enter="register()")
p.form-text {{$t('usernameLimitations')}}
input#usernameInput.form-control(type='text', :placeholder='$t("username")', v-model='username', :class='{"input-valid": usernameValid, "input-invalid": usernameInvalid}')
.input-error(v-for="issue in usernameIssues") {{ issue }}
input.form-control(type='email', :placeholder='$t("email")', v-model='email', :class='{"input-invalid": emailInvalid, "input-valid": emailValid}')
input.form-control(type='password', :placeholder='$t("password")', v-model='password', :class='{"input-valid": password.length > 3}')
input.form-control(type='password', :placeholder='$t("confirmPassword")', v-model='passwordConfirm', :class='{"input-invalid": passwordConfirmInvalid, "input-valid": passwordConfirmValid}')
p.form-text(v-once, v-html="$t('termsAndAgreement')")
button.sign-up(@click="register()") {{$t('signup')}}
.col-12
.spacer.svg-icon(v-html='icons.spacer')
#gamify-life.purple-2
.container-fluid
.pixel-horizontal.svg-icon(v-html='icons.pixelHorizontal')
.container
.row
.col-12.col-sm-6.col-md-6.col-lg-6.offset-sm-3.text-center
h2 {{$t('gamifyYourLife')}}
p.section-main {{$t('aboutHabitica')}}
.row
.col-12.col-md-4
img.track-habits(src='~assets/images/home/track-habits@3x.png', width='354px', height='228px')
strong {{$t('trackYourGoals')}}
p {{$t('trackYourGoalsDesc')}}
.col-12.col-md-4
img(src='~assets/images/home/earn-rewards@3x.png', width='316px', height='244px')
strong {{$t('earnRewards')}}
p {{$t('earnRewardsDesc')}}
.col-12.col-md-4
img(src='~assets/images/home/battle-monsters@3x.png', width='303px', height='244px')
strong {{$t('battleMonsters')}}
p {{$t('battleMonstersDesc')}}
.col-12
.spacer.svg-icon(v-html='icons.spacer')
#use-cases.purple-2
.container.text-center
.row
.col-12
h2 {{$t('playersUseToImprove')}}
.row
.col-12.col-sm-4
img(src='~assets/images/home/health-fitness@3x.png', width='300px', height='300px')
strong {{$t('healthAndFitness')}}
p {{$t('healthAndFitnessDesc')}}
.col-12.col-sm-4
img(src='~assets/images/home/school-work@3x.png', width='300px', height='300px')
strong {{$t('schoolAndWork')}}
p {{$t('schoolAndWorkDesc')}}
.col-12.col-sm-4
img(src='~assets/images/home/much-more@3x.png', width='300px', height='300px')
strong {{$t('muchmuchMore')}}
p {{$t('muchmuchMoreDesc')}}
.col-12
.spacer.svg-icon(v-html='icons.spacer')
.container-fluid
.pixel-horizontal-2.svg-icon(v-html='icons.pixelHorizontal2')
#level-up-anywhere.purple-3
.container
.row
.col-12.col-md-6.col-lg-6
.iphones
.col-12.col-md-6.col-lg-6.text-column
h2 {{ $t('levelUpAnywhere') }}
p {{ $t('levelUpAnywhereDesc') }}
a.app.svg-icon(v-html='icons.googlePlay', href='https://play.google.com/store/apps/details?id=com.habitrpg.android.habitica', target='_blank')
a.app.svg-icon(v-html='icons.iosAppStore', href='https://itunes.apple.com/us/app/habitica-gamified-task-manager/id994882113?mt=8', target='_blank')
.container-fluid
.pixel-horizontal-3.svg-icon(v-html='icons.pixelHorizontal3')
#call-to-action.purple-4
.container.featured
.row.text-center
h3.col-12 {{ $t('joinMany') }}
.row
.col-12.text-center
button.btn.btn-primary.join-button(@click='playButtonClick()') {{ $t('joinToday') }}
.row.featured
.col-12.text-center
strong {{ $t('featuredIn') }}
.container-fluid.featured
.row
.col-12.text-center
.lifehacker.svg-icon(v-html='icons.lifehacker')
.thenewyorktimes.svg-icon(v-html='icons.thenewyorktimes')
.makeuseof.svg-icon(v-html='icons.makeuseof')
.forbes.svg-icon(v-html='icons.forbes')
.cnet.svg-icon(v-html='icons.cnet')
.kickstarter.svg-icon(v-html='icons.kickstarter')
.fast-company.svg-icon(v-html='icons.fastCompany')
.discover.svg-icon(v-html='icons.discover')
.container-fluid
.row.seamless_stars_varied_opacity_repeat
</template>
<style lang='scss'>
@import '~client/assets/scss/static.scss';
</style>
<style lang="scss" scoped>
@import '~client/assets/scss/colors.scss';
@import url('https://fonts.googleapis.com/css?family=Varela+Round');
#front {
.form-text a {
color: #fff !important;
}
.container-fluid {
margin: 0;
}
.container {
padding-top: 5em;
padding-bottom: 5em;
}
.logo {
width: 128px;
height: 28px;
color: purple;
}
.purple-1, .purple-2, .purple-3, .purple-4, h1, h2, h3, h4, h5 {
color: #fff;
}
.purple-1 {
background-color: #6133b4;
}
.purple-2 {
background-color: #432874;
}
.purple-3 {
background-color: #36205d;
}
.purple-4 {
background-color: #271b3d;
}
p.section-main {
font-size: 18px;
line-height: 1.33;
}
h2 {
font-size: 48px;
line-height: 1.33;
}
.spacer {
width: 24px;
height: 24px;
margin: 0 auto;
margin-top: 2em;
}
.pixel-horizontal {
color: #6133b4;
}
.pixel-horizontal-2 {
color: #432874;
}
.pixel-horizontal-3 {
color: #271b3d;
}
h1, h2, h3, h4, h5, h6, button, .strike > span, input {
font-family: 'Varela Round', sans-serif;
font-weight: normal;
}
}
#intro-signup {
background-image: url('~assets/svg/for-css/confetti.svg');
img {
margin: 0 auto;
display: block;
}
h1 {
font-size: 56px;
line-height: 1.14;
}
h3 {
font-size: 24px;
}
.social-button {
border-radius: 2px;
border: solid 2px #bda8ff;
width: 48%;
min-height: 40px;
padding: .5em;
background: transparent;
margin-right: .5em;
color: #bda8ff;
transition: .5s;
span {
transition: none;
}
}
.social-button:hover {
cursor: pointer;
border-color: #fff;
color: #fff;
}
.social-icon {
margin-right: 1em;
width: 18px;
height: 18px;
display: inline-block;
vertical-align: top;
margin-top: .2em;
}
.strike {
display: block;
text-align: center;
overflow: hidden;
white-space: nowrap;
margin-top: 1.5em;
margin-bottom: 1.5em;
}
.strike > span {
position: relative;
display: inline-block;
line-height: 1.14;
}
.strike > span:before,
.strike > span:after {
content: "";
position: absolute;
top: 50%;
width: 9999px;
height: 1px;
background: #fff;
}
.strike > span:before {
right: 100%;
margin-right: 15px;
}
.strike > span:after {
left: 100%;
margin-left: 15px;
}
.form {
padding-top: 1em;
padding-bottom: 1em;
}
input {
margin-bottom: 1em;
border-radius: 2px;
background-color: #432874;
border-color: #432874;
color: $purple-400;
border: solid 2px transparent;
transition-timing-function: ease;
transition: border .5s, color .5s;
}
#usernameInput.input-invalid {
margin-bottom: 0.5em;
}
.input-valid {
color: #fff;
}
input:focus {
border: solid 2px #9a62ff;
color: #fff;
background-color: #36205d;
}
input:hover {
background-color: #36205d;
}
button.sign-up {
width: 100%;
height: 48px;
color: #fff;
border: none;
border-radius: 2px;
background-color: #2995cd;
font-size: 16px;
transition: all .5s ease;
}
.sign-up:hover {
background-color: #50b5e9;
box-shadow: 0 4px 4px 0 rgba(26, 24, 29, 0.16), 0 1px 8px 0 rgba(26, 24, 29, 0.12);
cursor: pointer;
}
::-webkit-input-placeholder { /* Chrome/Opera/Safari */
color: $purple-400;
}
::-moz-placeholder { /* Firefox 19+ */
color: $purple-400;
}
:-ms-input-placeholder { /* IE 10+ */
color: $purple-400;
}
:-moz-placeholder { /* Firefox 18- */
color: $purple-400;
}
::placeholder { // Standard browsers
color: $purple-400;
}
}
#gamify-life {
text-align: center;
img {
max-width: 100%;
display: block;
margin: 0 auto;
margin-top: 1em;
margin-bottom: 1.5em;
}
.track-habits {
margin-bottom: 2.5em;
}
strong {
font-size: 24px;
font-family: 'Varela Round', sans-serif;
line-height: 1.33;
}
}
#use-cases {
strong {
font-size: 24px;
font-family: 'Varela Round', sans-serif;
line-height: 1.33;
}
img {
display: block;
height: 200px;
width: 200px;
margin: 0 auto;
margin-top: 2em;
margin-bottom: 2em;
}
}
#level-up-anywhere {
.app {
display: inline-block;
width: 135px;
margin-right: .5em;
}
.app {
cursor: pointer;
}
.iphones {
width: 436px;
height: 520px;
max-width: 100%;
background-repeat: no-repeat;
background-size: 100%;
background-image: url('~assets/images/home/mobile-preview@3x.png');
}
.text-column {
padding-top: 9em;
}
}
#call-to-action {
.row {
margin-top: 1em;
margin-bottom: 1em;
}
h3 {
font-size: 32px;
}
.btn-primary {
width: 411px;
height: 48px;
border-radius: 2px;
background-color: #9a62ff;
box-shadow: 0 2px 2px 0 rgba(26, 24, 29, 0.24), 0 1px 4px 0 rgba(26, 24, 29, 0.16);
margin-bottom: 5em;
}
.container.featured {
padding-bottom: 0;
}
.container-fluid.featured {
padding-bottom: 5em;
}
.join-button:hover {
cursor: pointer;
background-color: #b288ff;
box-shadow: 0 4px 4px 0 rgba(26, 24, 29, 0.16), 0 1px 8px 0 rgba(26, 24, 29, 0.12);
}
.featured .row {
margin-top: 0;
}
.featured {
text-align: center;
font-family: 'Varela Round', sans-serif;
strong {
font-size: 12px;
}
.svg-icon {
vertical-align: bottom;
color: #d5c8ff;
display: inline-block;
margin-right: 1em;
}
.lifehacker {
width: 116.7px;
height: 32px;
}
.thenewyorktimes {
width: 170.4px;
height: 24px;
}
.makeuseof {
width: 59.7px;
height: 32px;
}
.forbes {
width: 91.7px;
height: 24px;
}
.kickstarter {
width: 205px;
height: 24px;
}
.discover {
width: 119.6px;
height: 24px;
}
.cnet {
width: 40px;
height: 40px;
padding-top: .5em;
margin-right: 1em;
}
.fast-company {
width: 161.3px;
height: 24px;
}
img {
max-height: 30px;
max-width: 120px;
vertical-align: middle;
margin: 20px;
-moz-filter: brightness(0) invert(1);
-ms-filter: brightness(0) invert(1);
-o-filter: brightness(0) invert(1);
filter: brightness(0) invert(1);
-webkit-filter: brightness(0) invert(1);
}
}
.seamless_stars_varied_opacity_repeat {
background-image: url('~assets/images/auth/seamless_stars_varied_opacity.png');
background-repeat: repeat-x;
position: absolute;
height: 500px;
width: 100%;
opacity: .5;
}
}
@media only screen and (max-width: 768px) {
#call-to-action .btn-primary {
width: 95%;
}
#call-to-action .featured .svg-icon {
display: block;
margin: 0 auto;
margin-bottom: .5em;
}
}
.input-error {
color: #fff;
font-size: 90%;
width: 100%;
text-align: center;
margin-bottom: 1em;
}
</style>
<script>
import hello from 'hellojs';
import debounce from 'lodash/debounce';
import isEmail from 'validator/lib/isEmail';
import googlePlay from 'assets/images/home/google-play-badge.svg';
import iosAppStore from 'assets/images/home/ios-app-store.svg';
import iphones from 'assets/images/home/iphones.svg';
import spacer from 'assets/images/home/spacer.svg';
import pixelHorizontal from 'assets/images/home/pixel-horizontal.svg';
import pixelHorizontal2 from 'assets/images/home/pixel-horizontal-2.svg';
import pixelHorizontal3 from 'assets/images/home/pixel-horizontal-3.svg';
import facebookSquareIcon from 'assets/svg/facebook-square.svg';
import googleIcon from 'assets/svg/google.svg';
import cnet from 'assets/svg/cnet.svg';
import fastCompany from 'assets/svg/fast-company.svg';
import discover from 'assets/images/home/discover.svg';
import forbes from 'assets/images/home/forbes.svg';
import kickstarter from 'assets/images/home/kickstarter.svg';
import lifehacker from 'assets/images/home/lifehacker.svg';
import makeuseof from 'assets/images/home/make-use-of.svg';
import thenewyorktimes from 'assets/images/home/the-new-york-times.svg';
import * as Analytics from 'client/libs/analytics';
export default {
data () {
return {
icons: Object.freeze({
googlePlay,
iosAppStore,
iphones,
spacer,
pixelHorizontal,
pixelHorizontal2,
pixelHorizontal3,
facebookIcon: facebookSquareIcon,
googleIcon,
cnet,
fastCompany,
discover,
forbes,
kickstarter,
lifehacker,
makeuseof,
thenewyorktimes,
}),
userCountInMillions: 3,
username: '',
password: '',
passwordConfirm: '',
email: '',
usernameIssues: [],
};
},
mounted () {
Analytics.track({
hitType: 'pageview',
eventCategory: 'page',
eventAction: 'landing page',
page: '/static/home',
});
hello.init({
facebook: process.env.FACEBOOK_KEY, // eslint-disable-line
// windows: WINDOWS_CLIENT_ID,
google: process.env.GOOGLE_CLIENT_ID, // eslint-disable-line
});
},
computed: {
emailValid () {
if (this.email.length <= 3) return false;
return isEmail(this.email);
},
emailInvalid () {
if (this.email.length <= 3) return false;
return !isEmail(this.email);
},
usernameValid () {
if (this.username.length < 1) return false;
return this.usernameIssues.length === 0;
},
usernameInvalid () {
if (this.username.length < 1) return false;
return !this.usernameValid;
},
passwordConfirmValid () {
if (this.passwordConfirm.length <= 3) return false;
return this.passwordConfirm === this.password;
},
passwordConfirmInvalid () {
if (this.passwordConfirm.length <= 3) return false;
return this.passwordConfirm !== this.password;
},
},
watch: {
username () {
this.validateUsername(this.username);
},
},
methods: {
// eslint-disable-next-line func-names
validateUsername: debounce(function (username) {
if (username.length < 1) {
return;
}
this.$store.dispatch('auth:verifyUsername', {
username: this.username,
}).then(res => {
if (res.issues !== undefined) {
this.usernameIssues = res.issues;
} else {
this.usernameIssues = [];
}
});
}, 500),
// @TODO this is totally duplicate from the registerLogin component
async register () {
let groupInvite = '';
if (this.$route.query && this.$route.query.p) {
groupInvite = this.$route.query.p;
}
if (this.$route.query && this.$route.query.groupInvite) {
groupInvite = this.$route.query.groupInvite;
}
await this.$store.dispatch('auth:register', {
username: this.username,
email: this.email,
password: this.password,
passwordConfirm: this.passwordConfirm,
groupInvite,
});
let redirectTo;
if (this.$route.query.redirectTo) {
redirectTo = this.$route.query.redirectTo;
} else {
redirectTo = '/';
}
window.location.href = redirectTo;
},
playButtonClick () {
Analytics.track({
hitType: 'event',
eventCategory: 'button',
eventAction: 'click',
eventLabel: 'Play',
});
this.$router.push('/register');
},
// @TODO: Abstract hello in to action or lib
async socialAuth (network) {
try {
await hello(network).logout();
} catch (e) {} // eslint-disable-line
const redirectUrl = `${window.location.protocol}//${window.location.host}`;
const auth = await hello(network).login({
scope: 'email',
// explicitly pass the redirect url or it might redirect to /home
redirect_uri: redirectUrl, // eslint-disable-line camelcase
});
await this.$store.dispatch('auth:socialAuth', {
auth,
});
window.location.href = '/';
},
},
};
</script>
@@ -0,0 +1,33 @@
<template lang="pug">
.container-fluid
.row
.col-md-6.offset-3
h1 {{ $t('merch') }}
// @TODO: Visual experience: Separate each merch items with new line? Or to show items in a table?
.col-lg-6.col-md-6.col-sm-12(v-for="(merchant, index) in merchants")
.merch-block
img(v-if='merchant.logo' :src="`/static/merch/${merchant.key}-logo.png`")
h2(v-else) {{ merchant.name }}
div
a(:href="merchant.link" target='_blank')
img.img-rendering-auto(:src="`/static/merch/${merchant.key}.png`")
p {{ $t('merch-' + merchant.key + '-summary') }}
a.btn.btn-primary(:href="merchant.link" target='_blank') {{$t('merch-' + merchant.key + '-goto')}}
</template>
<script>
export default {
data () {
return {
merchants: [
{key: 'teespring', logo: true, name: 'Teespring', link: 'https://teespring.com/habitica-gryphon-t-shirt'},
{key: 'teespring-eu', logo: true, name: 'Teespring (EU)', link: 'https://teespring.com/habitica-gryphon-t-shirt_eu'},
{key: 'teespring-mug', logo: true, name: 'Teespring', link: 'https://teespring.com/shop/habitica-gryphon-mug'},
{key: 'teespring-mug-eu', logo: true, name: 'Teespring (EU)', link: 'https://teespring.com/shop/habitica-hydration-mug-eu'},
{key: 'stickermule', logo: true, name: 'Stickermule', link: 'https://www.stickermule.com/uk/marketplace/9317-habitica-gryphon-sticker'},
],
};
},
};
</script>
@@ -0,0 +1,23 @@
<template lang='pug'>
.static-view(v-html="html")
</template>
<style lang='scss'>
@import '~client/assets/scss/static.scss';
</style>
<script>
import axios from 'axios';
export default {
data () {
return {
html: '',
};
},
async mounted () {
let response = await axios.get('/api/v4/news');
this.html = response.data.html;
},
};
</script>
@@ -0,0 +1,46 @@
<template lang="pug">
.container-fluid.static-view
.row
.col-md-6.offset-3
h1 {{ $t('overview') }}
p {{ $t('needTips') }}
div(v-for='step in stepsNum')
h3 {{ $t('step'+step) }}
p(v-markdown="$t('webStep'+step+'Text', stepVars[step])")
hr
p(v-markdown="$t('overviewQuestions', {faqUrl: '/static/faq/', helpGuildUrl: '/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a'})")
</template>
<style lang='scss'>
@import '~client/assets/scss/static.scss';
</style>
<style lang='scss' scoped>
.container-fluid {
margin-top: 56px;
}
</style>
<script>
import markdownDirective from 'client/directives/markdown';
export default {
directives: {
markdown: markdownDirective,
},
data () {
return {
stepsNum: ['1', '2', '3'],
stepVars: {
1: {},
2: {},
3: {
partyUrl: '/party',
equipUrl: '/inventory/equipment',
shopUrl: '/shops/market',
},
},
};
},
};
</script>
@@ -0,0 +1,130 @@
<template lang="pug">
.container-fluid
h1 {{ $t('presskit') }}
p {{ $t('presskitText', { pressEnquiryEmail : PRESS_ENQUIRY_EMAIL }) }}
p
a.btn.btn-lg.btn-success(href='/static/presskit/presskit.zip') presskit.zip
div(v-for='(images, category) in imgs')
h2 {{ $t('pk' + category) }}
div(v-if='Array.isArray(images)')
div(v-for='img in images')
img.img-fluid.img-rendering-auto.press-img(:src="`/static/presskit/${category}/${img}`")
div(v-else)
div(v-for='(images, secondaryCategory) in images')
h3 {{ $t('pk' + secondaryCategory) }}
div(v-for='img in images')
img.img-fluid.img-rendering-auto.press-img(:src="`/static/presskit/${category}/${secondaryCategory}/${img}`")
h1 {{ $t('FAQ') }}
#faq(role='tablist')
.faq-question(v-for='(QA, index) in faq')
h2(v-b-toggle="QA.question", tabindex="0", role="button", v-html="$t(QA.question)")
b-collapse(:id="QA.question", accordion="pkAccordian", role="tabpanel")
p(v-html="$t(QA.answer)")
p {{ $t('pkMoreQuestions') }}
</template>
<style lang="scss" scoped>
.faq-question {
cursor: pointer;
}
</style>
<script>
// @TODO: EMAILS.PRESS_ENQUIRY_EMAIL
const PRESS_ENQUIRY_EMAIL = 'admin@habitica.com';
export default {
data () {
return {
PRESS_ENQUIRY_EMAIL,
imgs: {
Promo: [
'Promo.png',
'Promo - Thin.png',
],
Logo: [
'Icon with Text.png',
'Icon.png',
'Text.png',
'Habitica Gryphon.png',
'iOS.png',
'Android.png',
],
Boss: [
'Basi-List.png',
'Stagnant Dishes.png',
'SnackLess Monster.png',
'Laundromancer.png',
'Necro-Vice.png',
'Battling the Ghost Stag.png',
'Dread Drag\'on of Dilatory.png',
],
Samples: {
Website: [
'CheckInIncentives.png',
'Inventory.png',
'Equipment.png',
'Market.png',
'Market2.png',
'Tavern.png',
'Guilds.png',
'Challenges.png',
],
iOS: [
'Tasks Page.png',
'Level Up.png',
'Market.png',
'Party.png',
'Boss.png',
],
Android: [
'Login.png',
'User.png',
'Tasks Page.png',
'Add Tasks.png',
'Stats.png',
'Shops.png',
'Party.png',
],
},
},
faq: [
{
question: 'pkQuestion1',
answer: 'pkAnswer1',
},
{
question: 'pkQuestion2',
answer: 'pkAnswer2',
},
{
question: 'pkQuestion3',
answer: 'pkAnswer3',
},
{
question: 'pkQuestion4',
answer: 'pkAnswer4',
},
{
question: 'pkQuestion5',
answer: 'pkAnswer5',
},
{
question: 'pkQuestion6',
answer: 'pkAnswer6',
},
{
question: 'pkQuestion7',
answer: 'pkAnswer7',
},
{
question: 'pkQuestion8',
answer: 'pkAnswer8',
},
],
};
},
};
</script>
@@ -0,0 +1,299 @@
<template lang="pug">
.container-fluid
h1 Privacy Policy
p.pagemeta
| Last updated July 27, 2015
br
small (Corrected grammar errors and updated company name)
br
br
p
strong PLEASE READ THIS PRIVACY POLICY CAREFULLY&period;
br
| By accessing or otherwise using habitica&period;com or any sub domains thereto &lpar;&quot;the Sites&quot;&rpar;&comma;
| or using a habitica&period;com or Habitica application on a mobile device &lpar;&quot;the Applications&quot;&rpar;&comma;
| you agree to be bound contractually by this Privacy Policy&period; Individually
| or collectively&comma; the Applications and the Sites may be referred to as
| the &quot;Services&period;&quot;
p
| To review material modifications and their effective dates scroll
| to the bottom of the page&period;
p
strong
| 1&period; Privacy Statement&semi; Collection of Personal
| Information&period;
br
| 1&period;1 HabitRPG, Inc. owns and operates this business&period; All
| references to &quot;we&quot;&comma; &quot;us&quot;&comma; shall be construed to mean HabitRPG, Inc.&period;
p
| 1&period;2 We understand that visitors to this website are concerned
| about the privacy of information&period; The following describes our privacy
| policy regarding information&comma; including personal information&comma; that we
| collect through this website&period;
p
strong 2&period; Modification of Privacy Policy&period;
br
| We reserve the right to modify this Privacy Policy at any time&comma;
| and without prior notice&comma; by posting an amended Privacy Policy that is
| always accessible by clicking on the &quot;Privacy Policy&quot; link on this
| site&apos;s home page&period; Your continued use of this site indicates your
| acceptance of the amended Privacy Policy&period; You should check the Privacy
| Policy through this link periodically for modifications by clicking on
| the link provided near the top of the Privacy Policy for a listing of
| material modifications and their effective dates&period; Regarding personal
| information&comma; if any modifications are materially less restrictive on our
| use or disclosure of the personal information previously disclosed by
| you&comma; we will obtain your consent before implementing such revisions with
| respect to such information&period;
p
strong 3&period; Collection of Anonymous&comma; Passive Information&period;
br
| We reserve the right to monitor your use of the services&period; As you
| navigate through the services&comma; certain anonymous information may be
| passively collected &lpar;that is&comma; gathered without your actively providing
| the information&rpar; using various technologies&comma; such as cookies&comma; Internet
| tags or web beacons&comma; and navigational data collection &lpar;log files&comma; server
| logs&comma; clickstream&rpar;&period; The following is a listing and a brief explanation
| of passive information collection methodologies which we may use from
| time to time to better understand how the Services are being used&period;
p
| 3&period;1 A &quot;cookie&quot; is a text file that this site sends to your
| browser in the form of a text file The information generated by the
| cookie about your use of this site &lpar;including your IP address&rpar; will be
| transmitted to and stored&period; Most browsers automatically accept cookies&comma;
| but they usually can be modified to decline cookies if you prefer&semi;
| however&comma; certain features of this site might not work without cookies&period;
p
| 3&period;2 &quot;Session&quot; cookies are temporary bits of information that are
| used to improve navigation&comma; block visitors from providing information
| where inappropriate &lpar;the Services &quot;remembers&quot; previous entries of age or
| country of origin that were outside the specified parameters and blocks
| subsequent changes&rpar;&comma; and collect aggregate statistical information on
| the Services&period; They are erased once you exit your Web browser or
| otherwise turn off your computer&period;
p
| 3&period;3 &quot;Persistent&quot; cookies are more permanent bits of information
| that are placed on the hard drive of your computer and stay there unless
| you delete the cookie&period; Persistent cookies store information on your
| computer for a number of purposes&comma; such as retrieving certain
| information you have previously provided&comma; helping to determine what
| areas of the Services you may find most valuable&comma; and customizing the
| Services based on your preferences on an ongoing basis&period; Persistent
| cookies placed by this site in your computer do not hold personal
| information&period;
p
| 3&period;4 You can set your browser to accept all cookies&comma; to reject all
| cookies&comma; or to notify you whenever a cookie is offered so that you can
| decide each time whether to accept it&period; To learn more about cookies and
| how to specify your preferences&comma; please search for &quot;cookie&quot; in the
| &quot;Help&quot; portion of your browser&period;
p
| 3&period;5 An Internet Protocol &lpar;IP&rpar; address is a number assigned to
| your computer by your Internet service provider so you can access the
| Internet and is generally considered to be non-personally identifiable
| information&comma; because in most cases an IP address is dynamic &lpar;changing
| each time you connect to the Internet&rpar;&comma; rather than static &lpar;unique to a
| particular user&apos;s computer&rpar;&period; The IP address can be used to diagnose
| problems with a server&comma; report aggregate information&comma; determine the
| fastest route for your computer to use in connecting to a site&comma; and
| administer and improve the Services&period;
p
| 3&period;6 &quot;Internet tags&quot; &lpar;also known as Web Beacons&comma; single-pixel
| GIFs&comma; clear GIFs&comma; invisible GIFs&comma; and 1-by-1 GIFs&rpar; are smaller than
| cookies and tell the Web site server information such as the IP address
| and browser type related to the visitor&apos;s computer&period; Tags may be placed
| both on online advertisements that bring people to the Services and on
| different pages of the Services&period; Such tags indicate how many times a
| page is opened and which information is consulted&period;
p
| 3&period;7 &quot;Navigational data&quot; &lpar;log files&comma; server logs&comma; and clickstream
| data&rpar; are used for system management&comma; to improve the content of the
| Services&comma; market research purposes&comma; and to communicate information to
| visitors&period;
p
strong 4&period; Use and Sharing of Anonymous&comma; Passive Information&period;
br
| The Services may make full use of passively collected anonymous
| information&comma; including without limitation the right to use such
| information to provide better service to Service users&comma; customize the
| Services based on your preferences&comma; compile and analyze statistics and
| trends&comma; and otherwise administer and improve the Services for your use&period; We
| reserve the right to share this anonymous&comma; passive information in
| aggregated form&period;
p
strong 5&period; 3rd Party Behavioral Ads&semi; Google&apos;s AdSense Network&period;
br
| 5&period;1 We reserve the right to use anonymous&comma; passive information
| about your visits to this and other websites &lpar;not including your name&comma;
| address&comma; email address or telephone number&rpar; for purposes of serving our
| ads and third party ads that are targeted to your interests &lpar;&quot;3rd Party
| Behavioral Ads&quot;&rpar;&period; We reserve the right to share anonymous&comma; passive
| information collected on the services with third parties for purposes of
| serving 3rd Party Behavioral Ads&period; These 3rd Party Behavioral Ads do not
| identify you personally&period; Instead&comma; they associate your behavioral data on
| visited sites with your browser&comma; so that the ads your computer sees on
| this site are more likely to be relevant to your interests&period; 3rd Party
| Behavioral Ads require that that you be served with a cookie containing
| a tracking code&period; You may refuse the use of cookies by selecting the
| appropriate settings on your browser&semi; however&comma; please note that if you
| do this you may not be able to use the full functionality of this site&period;
p
| 5&period;2 We reserve the right to participate in Google&apos;s AdSense
| network for purposes of serving 3rd Party Behavioral Ads&period; Google uses
| DoubleClick&apos;s DART cookie for serving 3rd Party Behavioral Ads over the
| AdSense network&period; You may opt out of the use of the DART cookie&period; For
| information regarding how to opt out&comma; go to
| http&colon;&sol;&sol;www&period;google&period;com&sol;privacy&UnderBar;ads&period;html&period;
p
strong 6&period; Use of 3rd Party Analytics&period;
br
| We reserve the right to use analytics services provided by
| third parties&period; These services use 3rd party cookies to collect
| anonymous&comma; passive information about your use of this site &lpar;see
| explanation of cookies in Collection of Anonymous&comma; Passive Information
| above&rpar;&period; We use this information for the purpose of evaluating your use
| of the Services&comma; compiling reports on activity&comma; and providing other
| services&period; These web analytics services may also transfer this
| information to third parties where required to do so by law&comma; or where
| such third parties process the information on the service&apos;s behalf&period;
p
strong 7&period; Collection of Personal Information&semi; Categories&period;
br
| We will ask you for personal information when you sign up for any
| specific benefit or purpose that requires registration&period; Personal
| information that we collect may vary with each registration&comma; and it may
| include one or more of the following categories&colon; name&comma; physical
| address&comma; an email address&comma; phone number&comma; and credit card information
| including credit card number&comma; expiration date&comma; and billing address&comma;
| emergency contact information&comma; current medications&comma; allergies&comma; medical
| insurance information&period;
p
strong
| 8&period; Use And Sharing of Personal Information&colon; General
| Policy And Exceptions&period;
br
| Our general policy is that we will use your personal information&comma;
| including combining your personal information with passive information
| collected from this site&comma; only for&colon; the performance of the services or
| transaction for which it was given&comma; our private&comma; internal reporting for
| this site&comma; and security assessments for this site&comma; and we will not
| share&comma; sell&comma; or rent your personal information to others&period; The only
| exceptions to this general policy&colon; &lpar;i&rpar; are described in the subsections
| below&comma; and &lpar;ii&rpar; if you explicitly approve through our site&period;
p
| 8&period;1 Affiliates And Service Providers&period; We reserve the right to
| provide such information to our affiliates or subsidiaries&comma; or trusted
| service providers for the purpose of hosting our servers or processing
| or archiving personal information for us&period; We require that these parties
| agree to privacy and security safeguards for this information that are
| consistent with this Privacy Policy&period;
p
| 8&period;2 Acquisition&semi; Bankruptcy&period; In the event that we are acquired by
| or merged with a third party entity&comma; we reserve the right to transfer
| such information as part of such merger&comma; acquisition&comma; sale&comma; or other
| change of control&period; In the unlikely event of our bankruptcy&comma; insolvency&comma;
| reorganization&comma; receivership&comma; or assignment for the benefit of
| creditors&comma; or the application of laws or equitable principles affecting
| creditors&apos; rights generally&comma; we reserve the right to transfer such
| information to protect our rights or as required by law&period;
p
| 8&period;3 Enforcement&semi; Legal Process&period; We reserve the right to transfer
| such information if we have a good faith belief that access&comma; use&comma;
| preservation or disclosure of such information is reasonably necessary
| &lpar;i&rpar; to satisfy any applicable law&comma; regulation&comma; legal process or
| enforceable governmental request&comma; or &lpar;ii&rpar; to investigate or enforce
| violations of our rights or the security of this site&period;
p
| 8&period;4 Miscellaneous&period; We reserve the right to share personal
| information with the following additional parties&colon; online organizers
| using our tools and resellers of our products and services from whose
| site the sale originated &lpar;even though the sale originates at site of the
| reseller&comma; registration and collection of personal information occurs at
| this site&rpar;&period;
p
strong
| 9&period; Onward Transfer of Personal Information Outside Your
| Country of Residence&period;
br
| Any personal information which we may collect on this site will
| be stored and processed in our servers located only in the United
| States&period; By using this site&comma; if you reside outside the United States&comma; you
| consent to the transfer of personal information outside your country of
| residence to the United States&period;
p
strong 10&period; Security of Personal Information&period;
br
| We follow reasonable and appropriate industry standards to
| protect your personal information and data&period; Unfortunately&comma; no data
| transmission over the Internet or method of data storage can be
| guaranteed 100&percnt; secure&period; Therefore&comma; while we strive to protect your
| personal information by following generally accepted industry standards&comma;
| we cannot ensure or warrant the absolute security of any information you
| transmit to us or archive at this site&period;
p
strong 11&period; Changing And Updating Personal Information&period;
br
| Upon request&comma; we will permit you to request or make changes or
| updates to your personal information for legitimate purposes&period; We request
| identification prior to approving such requests&period; We reserve the right to
| decline any requests that are unreasonably repetitive or systematic&comma;
| require unreasonable time or effort of our technical or administrative
| personnel&comma; or undermine the privacy rights of others&period; We reserve the
| right to permit you to access your personal information in any account
| you establish with this site for purposes of making your own changes or
| updates&comma; and in such case&comma; instructions for making such changes or
| updates will be provided where necessary&period;
p
strong 12&period; Email From This Site&semi; Opt-Out Rights&period;
br
| If you supply us with your e-mail address you may receive
| periodic messages from us with information specific to the Services and
| required for the normal functioning of the Services as well as for new
| products or services or upcoming events&period; If you prefer not to receive
| periodic email messages&comma; you may opt-out by following the instructions
| on the email&period;
p
strong 13&period; Children&apos;s Online Policy&period;
br
| We are committed to preserving online privacy for all of our
| website visitors&comma; including children&period; This site is a general audience
| site&period; Consistent with the Children&apos;s Online Privacy Protection Act
| &lpar;COPPA&rpar;&comma; we will not knowingly collect any information from&comma; or sell to&comma;
| children under the age of 13&period; If you are a parent or guardian who has
| discovered that your child under the age of 13 has submitted his or her
| personally identifiable information without your permission or consent&comma;
| we will remove the information from our active list&comma; at your request&period; To
| request the removal of your child&apos;s information&comma; please email us at
| <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> and be sure to include in
| your message the same login information that your child submitted&period;
p
strong
| 14&period; Email And Other Messages Through This Site&semi; ECPA
| Notice&period;
br
| This site treats email messages and other electronic messages
| that are sent through this site and not viewable by others as
| confidential and private&comma; except as required by law&comma; including without
| limitation&comma; the Electronic Communications Privacy Act of 1986&comma; 18 U&period;S&period;C&period;
| Sections 2701-2711 &lpar;the &quot;ECPA&quot;&rpar;&period; The ECPA permits this site&apos;s limited
| ability to intercept and&sol;or disclose electronic messages&comma; for example
| &lpar;i&rpar; as necessary to operate our system or to protect our rights or
| property&comma; &lpar;ii&rpar; upon legal demand &lpar;court orders&comma; warrants&comma; subpoenas&rpar;&comma; or
| &lpar;iii&rpar; where we receive information inadvertently which appears to
| pertain to the commission of a crime&period; This site is not considered a
| &quot;secure communications medium&quot; under the ECPA&period;
p
strong 15&period; Contact Us&period;
br
| If you have any questions regarding this Privacy Policy&comma; please
| contact the owner and operator of this website business&colon;
address
strong HabitRPG, Inc.
br
| 11870 Santa Monica Blvd., Suite 106-577
br
| Los Angeles, CA 90025
br
| Email&colon;&nbsp;
a(href='mailto:admin@habitica.com') admin@habitica.com
</template>
@@ -0,0 +1,178 @@
<template lang="pug">
div
static-header(v-if='showContentWrap', :class='{"home-header": ["home", "front"].indexOf($route.name) !== -1, "white-header": this.$route.name === "plans"}')
.static-wrapper
router-view
div(:id='footerId', v-if='showContentWrap')
app-footer
#bottom-wrap.purple-4(v-if='showContentWrap && footerId')
#bottom-background
.seamless_mountains_demo_repeat
.midground_foreground_extended2
</template>
<style lang="scss">
@import '~client/assets/scss/colors.scss';
.home-header {
background: #6133b4 !important;
position: static;
box-shadow: none !important;
height: 100px !important;
padding-left: 5em !important;
padding-right: 5em !important;
.logo.svg-icon {
width: 200px !important;
}
.nav-item a {
font-size: 14px !important;
color: #d5c8ff !important;
padding-top: 2.8em !important;
}
.nav-item a:hover {
background: transparent !important;
color: #fff !important;
}
.nav-item .nav-link {
transition: color .5s ease;
}
.login-button {
padding-right: 1em;
margin-top: 1.8em !important;
border-radius: 2px;
background-color: #9a62ff;
}
.login-button:hover {
background-color: #b288ff;
box-shadow: 0 4px 4px 0 rgba(26, 24, 29, 0.16), 0 1px 8px 0 rgba(26, 24, 29, 0.12) !important;
}
}
.white-header {
background: #fff !important;
background-color: #fff !important;
a {
color: #271b3d !important;
}
a:hover {
color: #fff !important;
}
}
#bottom-wrap.purple-4 {
background-color: #271b3d;
}
#purple-footer {
background-color: #271b3d;
.row {
margin: 0;
}
footer, footer a {
background: transparent;
color: #d5c8ff;
}
.logo {
color: #bda8ff;
}
.social-circle, .btn-contribute {
background: #36205d;
color: #bda8ff;
.svg-icon {
color: #bda8ff;
}
}
}
#bottom-wrap {
padding-top: 10em;
}
#bottom-background {
position: relative;
.seamless_mountains_demo_repeat {
background-image: url('~assets/images/auth/seamless_mountains_demo.png');
background-repeat: repeat-x;
width: 100%;
height: 300px;
position: absolute;
z-index: 0;
bottom: 0;
}
.midground_foreground_extended2 {
background-image: url('~assets/images/auth/midground_foreground_extended2.png');
position: relative;
width: 1500px;
max-width: 100%;
height: 150px;
margin: 0 auto;
}
}
.static-wrapper {
.container-fluid {
margin: 5em 2em 2em 2em;
width: auto;
}
h1, h2 {
margin-top: 0.5em;
color: $purple-200;
}
h3, h4 {
color: $purple-200;
}
li, p {
font-size: 16px;
}
.media img {
margin: 1em;
}
.strong {
font-weight: bold;
}
}
</style>
<script>
import AppFooter from 'client/components/appFooter';
import StaticHeader from './header.vue';
export default {
components: {
AppFooter,
StaticHeader,
},
computed: {
showContentWrap () {
return this.$route.name !== 'news';
},
footerId () {
if (this.$route.name === 'plans') return;
return 'purple-footer';
},
},
};
</script>
@@ -0,0 +1,568 @@
<template lang="pug">
.container-fluid
h1 Terms of Use
p.pagemeta
| Last updated July 27, 2015
br
small (Corrected minimum age requirement to under 13 years of age per COPPA)
br
br
p
| HabitRPG &lpar;or &quot;we&quot;&rpar; provides services through our
| software applications for various devices and platforms &lpar;&quot;HabitRPG
| Applications&quot;&rpar; and the HabitRPG&period;com domain&comma; and any sub domains thereto
| &lpar;the &quot;Sites&quot;&rpar;&period; Individually or collectively&comma; HabitRPG Applications and
| Sites may be referred to as the &quot;Services&quot;&period;
p
| Please read the following terms and conditions &lpar;&quot;Terms of
| Service&quot;&rpar; carefully&period; These Terms of Service govern your access to and
| use of the Services and HabitRPG Content &lpar;defined below&rpar; and set forth
| the legally binding terms for your use of the Services and HabitRPG
| Content&comma; whether or not you have registered as a Member&period;
p
| Certain areas of the Services &lpar;and your access to or use of
| HabitRPG Content&rpar; may have different terms and conditions posted or may
| require you to agree with and accept additional terms and conditions&period; If
| there is a conflict between these Terms of Service and terms and
| conditions posted for a specific area of the Services or HabitRPG
| Content&comma; the latter terms and conditions will take precedence with
| respect to your use of or access to that area of the Services or HabitRPG
| Content&period;
p
| YOU ACKNOWLEDGE AND AGREE THAT&comma; BY CLICKING ON THE &quot;I AGREE&quot; OR
| &quot;I ACCEPT&quot; BUTTON&comma; OR BY ACCESSING OR USING THE SERVICES OR BY
| DOWNLOADING OR POSTING ANY CONTENT FROM OR ON THE SITES OR THROUGH THE
| SERVICES&comma; YOU ARE INDICATING THAT YOU HAVE READ&comma; UNDERSTAND AND AGREE TO
| BE BOUND BY THESE TERMS&comma; WHETHER OR NOT YOU HAVE REGISTERED AS A MEMBER&comma;
| AND AGREE TO OUR PRIVACY POLICY AS DESCRIBED BELOW&period; IF YOU DO NOT AGREE
| TO THESE TERMS&comma; THEN YOU HAVE NO RIGHT TO ACCESS OR USE THE SERVICES OR
| HABITRPG CONTENT&period;
p
strong Modification
br
| HabitRPG reserves the right&comma; at its sole discretion&comma; to modify&comma;
| discontinue or terminate the Services&comma; including any portion thereof on
| a global or individual basis&comma; or to modify these Terms of Service&comma; at
| any time and without prior notice&period; If we modify these Terms of Service&comma;
| we will update the &quot;Last Updated Date&quot; above and post the modification
| on the Sites and perhaps elsewhere within the Services&period; By continuing to
| access or use the Services after we have posted a modification to these
| Terms of Service or have provided you with notice of a modification&comma; you
| are indicating that you agree to be bound by the modified Terms of
| Service&period; If the modified Terms of Service are not acceptable to you&comma;
| your only recourse is to cease using the Services&period;
p
strong Eligibility and HabitRPG Account Registration
br
| In order to access certain features of the Sites and Services&comma; and to
| post any Public User Content &lpar;defined below&rpar; on the Sites or through the
| Services&comma; you must register to create an account &lpar;&quot;HabitRPG Account&quot;&rpar; and
| become a &quot;Member&quot;&period; In compliance with privacy laws&comma; we do not allow
| people below the age of 13 to create accounts&semi; please see our Privacy
| Policy for further information&period; During the registration process&comma; you
| will be required to provide certain information and you will establish a
| username and a password&period; You agree to provide accurate&comma; current and
| complete information during the registration process and to update such
| information to keep it accurate&comma; current and complete&period; HabitRPG reserves
| the right to suspend or terminate your HabitRPG Account if any
| information provided during the registration process or thereafter
| proves to be inaccurate&comma; not current or incomplete&period; If you are not a
| Member you may browse all areas of the Sites or use the parts of the
| Services that are not limited to Members only&period; You are responsible for
| safeguarding your password&period; You agree not to disclose your password to
| any third party and to take sole responsibility for any activities or
| actions under your HabitRPG Account&comma; whether or not you have authorized
| such activities or actions&period; You agree to immediately notify HabitRPG of
| any unauthorized use of your HabitRPG Account&period; We are not liable for any
| damages or losses caused by someone using your account without your
| permission&period;
p
strong Privacy
br
| See <a href='/static/privacy'>HabitRPG&apos;s Privacy Policy</a> for
| information and notices concerning HabitRPG&apos;s collection and use of your
| personal information&period; If you have any questions about the HabitRPG
| Privacy Policy&comma; please contact HabitRPG at privacy AT HabitRPG&period;com&period; By
| accessing the Services you are agreeing to the terms of our Privacy
| Policy&period;
p
strong Content
br
| Certain types of content are made available through the Services&period;
| &quot;HabitRPG Content&quot; means&comma; collectively&comma; the text&comma; data&comma; graphics&comma; images&comma;
| illustrations&comma; forms and look and feel attributes&comma; HabitRPG trademarks
| and logos and other content made available through the Services&comma;
| including any technology or code making up the Services&comma; excluding User
| Content&period; &quot;Public User Content&quot; means the text&comma; data&comma; graphics&comma; images&comma; photos&comma;
| video or audiovisual content&comma; hypertext links and any other content uploaded&comma;
| transmitted or submitted by a Member via the Services with the intent to share
| with other users&period; &quot;Private User Content&quot; means data created through the services
| exclusively for personal use or private sharing&period;
| This includes tasks and related data created in HabitRPG Tasks that have not
| been explicitly shared publicly&period;
| You understand that by using any of the Services&comma; you may encounter content
| that may be deemed offensive&comma; indecent&comma; or objectionable&comma; which content
| may or may not be identified as having explicit language&comma; and that the
| results of any search or entering of a particular URL may automatically
| and unintentionally generate links or references to objectionable
| material&period; Nevertheless&comma; you agree to use the Services at your sole risk
| and that we shall not have any liability to you for content that may be
| found to be offensive&comma; indecent&comma; or objectionable&period;
p
strong Ownership
br
| The Services and HabitRPG Content are protected by copyright&comma; trademark&comma;
| and other laws of the United States and foreign countries&period; Except as
| expressly provided in these Terms of Service&comma; HabitRPG and its licensors
| exclusively own all right&comma; title and interest in and to the Services and
| HabitRPG Content&comma; including all associated intellectual property rights&period;
| You will not remove&comma; alter or obscure any copyright&comma; trademark&comma; service
| mark or other proprietary rights notices incorporated in or accompanying
| the Services or HabitRPG Content&period;
p
strong HabitRPG License
br
| Subject to your compliance with the terms and conditions of these Terms
| of Service&comma; HabitRPG grants you a limited&comma; non-exclusive&comma;
| non-transferable license&comma; without the right to sublicense&comma; to access&comma;
| use&comma; view&comma; download and print&comma; where applicable&comma; the Services and any
| HabitRPG Content solely for your personal and non-commercial purposes&period;
| You will not use&comma; copy&comma; adapt&comma; modify&comma; prepare derivative works based
| upon&comma; distribute&comma; license&comma; sell&comma; transfer&comma; publicly display&comma; publicly
| perform&comma; transmit&comma; stream&comma; broadcast or otherwise exploit the Services
| or HabitRPG Content&comma; except as expressly permitted in these Terms of
| Service&period; No licenses or rights are granted to you by implication or
| otherwise under any intellectual property rights owned or controlled by
| HabitRPG or its licensors&comma; except for the licenses and rights expressly
| granted in these Terms of Service&period; With respect to HabitRPG Applications&comma;
| your license is limited to use of such applications on platforms and
| devices that you own or control&comma; and you may not distribute or make the
| HabitRPG Applications available over a network where it could be used by
| multiple devices at the same time&period;
p
strong Public User Content
br
| By making available any Public User Content through the Services&comma; you hereby
| grant to HabitRPG a worldwide&comma; irrevocable&comma; perpetual&comma; non-exclusive&comma;
| transferable&comma; royalty-free license&comma; with the right to sublicense&comma; to
| use&comma; copy&comma; adapt&comma; modify&comma; distribute&comma; license&comma; sell&comma; transfer&comma; publicly
| display&comma; publicly perform&comma; transmit&comma; stream&comma; broadcast and otherwise
| exploit such Public User Content only on&comma; through or by means of the Services&period;
| HabitRPG does not claim any ownership rights in any such Public User Content and
| nothing in these Terms of Service will be deemed to restrict any rights
| that you may have to use and exploit any such Public User Content&period;
p
| You acknowledge and agree that you are solely responsible for all
| Public User Content that you make available through the Services&period; Accordingly&comma;
| you represent and warrant that&colon; &lpar;i&rpar; you either are the sole and
| exclusive owner of all Public User Content that you make available through the
| Services or you have all rights&comma; licenses&comma; consents and releases that
| are necessary to grant to HabitRPG the rights in such Public User Content&comma; as
| contemplated under these Terms of Service&semi; and &lpar;ii&rpar; neither the User
| Content nor your posting&comma; uploading&comma; publication&comma; submission or
| transmittal of the Public User Content or HabitRPG&apos;s use of the Public User Content &lpar;or
| any portion thereof&rpar; on&comma; through or by means of the Services will
| infringe&comma; misappropriate or violate a third party&apos;s patent&comma; copyright&comma;
| trademark&comma; trade secret&comma; moral rights or other intellectual property
| rights&comma; or rights of publicity or privacy&comma; or result in the violation of
| any applicable law or regulation&period;
p
| Copyrighted Materials&colon; No Infringing Use&period; You will not use the
| Services to offer&comma; display&comma; distribute&comma; transmit&comma; route&comma; provide
| connections to or store any material that infringes copyrighted works or
| otherwise violates or promotes the violation of the intellectual
| property rights of any third party&period; HabitRPG has adopted and implemented
| a policy that provides for the termination in appropriate circumstances
| of the accounts of users who repeatedly infringe or are believed to be
| or are charged with repeatedly infringing the rights of copyright
| holders&period;
p
strong Notify Us of Infringers
br
| If you believe that something on the Services violates your copyright&comma;
| notify our copyright agent in writing&period; The contact information for our
| copyright agent is at the bottom of this section&period;
p
| In order for us to take action&comma; you must do the following in your
| notice&colon;
p
| &lpar;1&rpar; provide your physical or electronic signature&semi; &lpar;2&rpar; identify
| the copyrighted work that you believe is being infringed&semi; &lpar;3&rpar; identify
| the item on the Services that you think is infringing your work and
| include sufficient information about where the material is located on
| the Services &lpar;including which website and URL&rpar; so that we can find it&semi;
| &lpar;4&rpar; provide us with a way to contact you&comma; such as your address&comma;
| telephone number&comma; or e-mail&semi; &lpar;5&rpar; provide a statement that you believe in
| good faith that the item you have identified as infringing is not
| authorized by the copyright owner&comma; its agent&comma; or the law to be used on
| the Services&semi; and &lpar;6&rpar; provide a statement that the information you
| provide in your notice is accurate&comma; and that &lpar;under penalty of perjury&rpar;&comma;
| you are authorized to act on behalf of the copyright owner whose work is
| being infringed&period;
p
| Here is the contact information for our copyright agent&colon;
p
| Copyright Enforcement
br
| HabitRPG, Inc.
br
| 11870 Santa Monica Blvd., Suite 106-577
br
| Los Angeles, CA 90025
br
| E-Mail&colon; <a href='mailto:admin@habitica.com'>admin@habitica.com</a>
p
| Again&comma; we cannot take action unless you give us all the required
| information&period;
p
strong Ratings and Comments &amp; Feedback&period;
br
| You can rate and make comments about content made available through the
| Services &lpar;&quot;Comments&quot;&rpar;&period; HabitRPG advises you to exercise caution and good
| judgment when leaving such Comments&period; Once you complete and submit your
| Comments to the Services you will not be able to go back and edit your
| Comments&period; You should also be aware that you could be held legally
| responsible for damages to someone&apos;s reputation if your Comments are
| deemed to be defamatory&period; Without limiting any other terms of this Terms
| of Service&comma; HabitRPG may&comma; but is under no obligation to&comma; monitor or
| censor Comments and disclaims any and all liability relating thereto&period;
| Notwithstanding the foregoing&comma; HabitRPG does reserve the right&comma; in its
| sole discretion&comma; to remove any Comments that it deems to be improper&comma;
| inappropriate or inconsistent with the online activities that are
| permitted under these Terms of Service&period; We welcome and encourage you to
| provide feedback&comma; comments and suggestions for improvements to the
| Services &lpar;&quot;Feedback&quot;&rpar;&period; You may submit Feedback by emailing us at support
| AT HabitRPG&period;com&period; You acknowledge and agree that all Comments and Feedback
| will be the sole and exclusive property of HabitRPG and you hereby
| irrevocably assign to HabitRPG and agree to irrevocably assign to HabitRPG
| all of your right&comma; title&comma; and interest in and to all Comments and
| Feedback&comma; including without limitation all worldwide patent rights&comma;
| copyright rights&comma; trade secret rights&comma; and other proprietary or
| intellectual property rights therein&period; At HabitRPG&apos;s request and expense&comma;
| you will execute documents and take such further acts as HabitRPG may
| reasonably request to assist HabitRPG to acquire&comma; perfect&comma; and maintain
| its intellectual property rights and other legal protections for the
| Comments and Feedback&period;
p
strong Interactions between Users
br
| You are solely responsible for your interactions &lpar;including any
| disputes&rpar; with other users&period; You understand that HabitRPG does not in any
| way screen HabitRPG users&comma; except to only allow people aged 13 and over
| to create accounts&period; You are solely responsible for&comma; and will exercise
| caution&comma; discretion&comma; common sense and judgment in&comma; using the Services
| and disclosing personal information to other HabitRPG users&period; You agree to
| take reasonable precautions in all interactions with other HabitRPG
| users&comma; particularly if you decide to meet a HabitRPG user offline&comma; or in
| person&period; Your use of the Services&comma; HabitRPG Content and any other content
| made available through the Services is at your sole risk and discretion
| and HabitRPG hereby disclaims any and all liability to you or any third
| party relating thereto&period; HabitRPG reserves the right to contact Members&comma;
| in compliance with applicable law&comma; in order to evaluate compliance with
| the rules and policies in these Terms of Service&period; You will cooperate
| fully with HabitRPG to investigate any suspected unlawful&comma; fraudulent or
| improper activity&comma; including&comma; without limitation&comma; granting authorized
| HabitRPG representatives access to any password-protected portions of
| your HabitRPG Account&period;
p
strong General Prohibitions
br
| You agree not to do any of the following while using the Services or
| HabitRPG Content&colon;
br
ul
li
| Post&comma; upload&comma; publish&comma; submit or transmit any text&comma; graphics&comma;
| images&comma; software&comma; music&comma; audio&comma; video&comma; information or other material
| that&colon; &lpar;i&rpar; infringes&comma; misappropriates or violates a third party&apos;s
| patent&comma; copyright&comma; trademark&comma; trade secret&comma; moral rights or other
| intellectual property rights&comma; or rights of publicity or privacy&semi; &lpar;ii&rpar;
| violates&comma; or encourages any conduct that would violate&comma; any applicable
| law or regulation or would give rise to civil liability&semi; &lpar;iii&rpar; is
| fraudulent&comma; false&comma; misleading or deceptive&semi; &lpar;iv&rpar; is defamatory&comma;
| obscene&comma; pornographic&comma; vulgar or offensive&semi; &lpar;v&rpar; promotes
| discrimination&comma; bigotry&comma; racism&comma; hatred&comma; harassment or harm against any
| individual or group&semi; &lpar;vi&rpar; is violent or threatening or promotes
| violence or actions that are threatening to any other person&semi; or &lpar;vii&rpar;
| promotes illegal or harmful activities or substances &lpar;including but not
| limited to activities that promote or provide instructional information
| regarding the manufacture or purchase of illegal weapons or illegal
| substances&rpar;&period;
li
| Use&comma; display&comma; mirror&comma; frame or utilize framing techniques to
| enclose the Services&comma; or any individual element or materials within the
| Services&comma; HabitRPG&apos;s name&comma; any HabitRPG trademark&comma; logo or other
| proprietary information&comma; the content of any text or the layout and
| design of any page or form contained on a page&comma; without HabitRPG&apos;s
| express written consent&semi;
li
| Access&comma; tamper with&comma; or use non-public areas of the Services&comma;
| HabitRPG&apos;s computer systems&comma; or the technical delivery systems of
| HabitRPG&apos;s providers&semi;
li
| Attempt to probe&comma; scan&comma; or test the vulnerability of any
| HabitRPG system or network or breach any security or authentication
| measures&semi;
li
| Avoid&comma; bypass&comma; remove&comma; deactivate&comma; impair&comma; descramble or
| otherwise circumvent any technological measure implemented by HabitRPG
| or any of HabitRPG&apos;s providers or any other third party &lpar;including
| another user&rpar; to protect the Services or HabitRPG Content&semi;
li
| Attempt to access or search the Services or HabitRPG Content or
| download HabitRPG Content from the Services through the use of any
| engine&comma; software&comma; tool&comma; agent&comma; device or mechanism &lpar;including spiders&comma;
| robots&comma; crawlers&comma; data mining tools or the like&rpar; other than the
| software and&sol;or search agents provided by HabitRPG or other generally
| available third party web browsers &lpar;such as Google Chrome&comma; Microsoft
| Internet Explorer&comma; Mozilla Firefox&comma; Safari or Opera&rpar;&semi;
li
| Send any unsolicited or unauthorized advertising&comma; promotional
| materials&comma; email&comma; junk mail&comma; spam&comma; chain letters or other form of
| solicitation&semi;
li
| Use any meta tags or other hidden text or metadata utilizing a
| HabitRPG trademark&comma; logo URL or product name without HabitRPG&apos;s express
| written consent&semi;
li
| Use the Services or HabitRPG Content for any commercial purpose
| or the benefit of any third party or in any manner not permitted by
| these Terms of Service&semi;
li
| Forge any TCP&sol;IP packet header or any part of the header
| information in any email or newsgroup posting&comma; or in any way use the
| Services or HabitRPG Content to send altered&comma; deceptive or false
| source-identifying information&semi;
li
| Attempt to decipher&comma; decompile&comma; disassemble or reverse
| engineer any of the software used to provide the Services or HabitRPG
| Content&semi;
li
| Interfere with&comma; or attempt to interfere with&comma; the access of
| any user&comma; host or network&comma; including&comma; without limitation&comma; sending a
| virus&comma; overloading&comma; flooding&comma; spamming&comma; or mail-bombing the Services&semi;
li
| Collect or store any personally identifiable information from
| the Services from other users of the Services without their express
| permission&semi;
li
| Impersonate or misrepresent your affiliation with any person
| or entity&semi; Violate any applicable law or regulation&semi; or
li
| Encourage or enable any other individual to do any of the
| foregoing&period;
p
| HabitRPG will have the right to investigate and prosecute
| violations of any of the above&comma; including intellectual property rights
| infringement and Services security issues&comma; to the fullest extent of the
| law&period; HabitRPG may involve and cooperate with law enforcement authorities
| in prosecuting users who violate these Terms of Service&period; You acknowledge
| that HabitRPG has no obligation to monitor your access to or use of the
| Services or HabitRPG Content or to review or edit any Public User Content&comma; but
| has the right to do so for the purpose of operating the Services&comma; to
| ensure your compliance with these Terms of Service&comma; or to comply with
| applicable law or the order or requirement of a court&comma; administrative
| agency or other governmental body&period; HabitRPG reserves the right&comma; at any
| time and without prior notice&comma; to remove or disable access to any
| HabitRPG Content&comma; including&comma; any Public User Content&comma; that HabitRPG&comma; in its sole
| discretion&comma; considers to be in violation of these Terms of Service or
| otherwise harmful to the Services&period;
p
strong Links
br
| The Services may contain links to third-party websites or resources&period; You
| acknowledge and agree that HabitRPG is not responsible or liable for&colon; &lpar;i&rpar;
| the availability or accuracy of such websites or resources&semi; or &lpar;ii&rpar; the
| content&comma; products&comma; or services on or available from such websites or
| resources&period; Links to such websites or resources do not imply any
| endorsement by HabitRPG of such websites or resources or the content&comma;
| products&comma; or services available from such websites or resources&period; You
| acknowledge sole responsibility for and assume all risk arising from
| your use of any such websites or resources&period;
p
strong Termination and HabitRPG Account&semi; Cancellation
br
| Without limiting other remedies&comma; HabitRPG may at any time suspend or
| terminate your HabitRPG Account and refuse to provide access to the
| Services&period; In addition&comma; HabitRPG may notify authorities or take any
| actions it deems appropriate&comma; without notice to you&comma; if HabitRPG suspects
| or determines&comma; in its own discretion&comma; that you may have or there is a
| significant risk that you have &lpar;i&rpar; failed to comply with any provision
| of these Terms of Service or any policies or rules established by
| HabitRPG&semi; or &lpar;ii&rpar; engaged in actions relating to or in the course of
| using the Services that may be illegal or cause liability&comma; harm&comma;
| embarrassment&comma; harassment&comma; abuse or disruption for you&comma; HabitRPG Users&comma;
| HabitRPG or any other third parties or the Services&period;
p
| You may terminate your HabitRPG Account at any time and for any
| reason by sending email to support AT HabitRPG&period;com&period; Upon any termination
| by a Member&comma; the related account will no longer be accessible&period;
p
| After any termination&comma; you understand and acknowledge that we
| will have no further obligation to provide the Services and all licenses
| and other rights granted to you by these Terms of Service will
| immediately cease&period; HabitRPG will not be liable to you or any third party
| for termination of the Services or termination of your use of either&period;
| UPON ANY TERMINATION OR SUSPENSION&comma; ANY CONTENT&comma; MATERIALS OR
| INFORMATION &lpar;INCLUDING PUBLIC USER CONTENT&rpar; THAT YOU HAVE SUBMITTED ON THE
| SERVICES OR THAT WHICH IS RELATED TO YOUR ACCOUNT MAY NO LONGER BE
| ACCESSED BY YOU&period; Furthermore&comma; HabitRPG will have no obligation to
| maintain any information stored in our database related to your account
| or to forward any information to you or any third party&period;
p
| Any suspension&comma; termination or cancellation will not affect your
| obligations to HabitRPG under these Terms of Service &lpar;including&comma; without
| limitation&comma; proprietary rights and ownership&comma; indemnification and
| limitation of liability&rpar;&comma; which by their sense and context are intended
| to survive such suspension&comma; termination or cancellation&period;
p
strong Disclaimers
br
| THE SERVICES&comma; HABITRPG CONTENT AND PUBLIC USER CONTENT ARE PROVIDED &quot;AS IS&quot;&comma;
| WITHOUT WARRANTY OF ANY KIND&comma; EITHER EXPRESS OR IMPLIED&period; WITHOUT
| LIMITING THE FOREGOING&comma; HABITRPG EXPLICITLY DISCLAIMS ANY WARRANTIES OF
| MERCHANTABILITY&comma; FITNESS FOR A PARTICULAR PURPOSE&comma; QUIET ENJOYMENT OR
| NON-INFRINGEMENT&comma; AND ANY WARRANTIES ARISING OUT OF COURSE OF DEALING OR
| USAGE OF TRADE&period;
p
| HABITRPG MAKES NO WARRANTY THAT THE SERVICES&comma; HABITRPG CONTENT OR
| PUBLIC USER CONTENT WILL MEET YOUR REQUIREMENTS OR BE AVAILABLE ON AN
| UNINTERRUPTED&comma; SECURE&comma; OR ERROR-FREE BASIS&period; HABITRPG MAKES NO WARRANTY
| REGARDING THE QUALITY OF ANY PRODUCTS&comma; SERVICES OR CONTENT PURCHASED OR
| OBTAINED THROUGH THE SERVICES OR THE ACCURACY&comma; TIMELINESS&comma; TRUTHFULNESS&comma;
| COMPLETENESS OR RELIABILITY OF ANY CONTENT OBTAINED THROUGH THE
| SERVICES&period;
p
| NO ADVICE OR INFORMATION&comma; WHETHER ORAL OR WRITTEN&comma; OBTAINED FROM
| HABITRPG OR THROUGH THE SERVICES&comma; HABITRPG CONTENT OR PUBLIC USER CONTENT&comma; WILL
| CREATE ANY WARRANTY NOT EXPRESSLY MADE HEREIN&period;
p
strong Indemnity
br
| You agree to defend&comma; indemnify&comma; and hold HabitRPG&comma; its officers&comma;
| directors&comma; employees and agents&comma; harmless from and against any claims&comma;
| liabilities&comma; damages&comma; losses&comma; and expenses&comma; including&comma; without
| limitation&comma; reasonable legal and accounting fees&comma; arising out of or in
| any way connected with Public User Content you submit to HabitRPG&comma; your access
| to or use of the Services or HabitRPG Content&comma; or your violation of these
| Terms of Service&period;
p
strong Limitation of Liability
br
| YOU ACKNOWLEDGE AND AGREE THAT&comma; TO THE MAXIMUM EXTENT PERMITTED BY LAW&comma;
| THE ENTIRE RISK ARISING OUT OF YOUR ACCESS TO AND USE OF THE SERVICES
| AND CONTENT THEREIN REMAINS WITH YOU&period; NEITHER HABITRPG NOR ANY OTHER
| PARTY INVOLVED IN CREATING&comma; PRODUCING&comma; OR DELIVERING THE SERVICES OR
| HABITRPG CONTENT WILL BE LIABLE FOR ANY INCIDENTAL&comma; SPECIAL&comma; EXEMPLARY OR
| CONSEQUENTIAL DAMAGES&comma; INCLUDING LOST PROFITS&comma; LOSS OF DATA OR LOSS OF
| GOODWILL&comma; SERVICE INTERRUPTION&comma; COMPUTER DAMAGE OR SYSTEM FAILURE OR THE
| COST OF SUBSTITUTE PRODUCTS OR SERVICES&comma; ARISING OUT OF OR IN CONNECTION
| WITH THESE TERMS OR FROM THE USE OF OR INABILITY TO USE THE SERVICES OR
| CONTENT THEREIN&comma; WHETHER BASED ON WARRANTY&comma; CONTRACT&comma; TORT &lpar;INCLUDING
| NEGLIGENCE&rpar;&comma; PRODUCT LIABILITY OR ANY OTHER LEGAL THEORY&comma; AND WHETHER OR
| NOT HABITRPG HAS BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGE&comma; EVEN IF
| A LIMITED REMEDY SET FORTH HEREIN IS FOUND TO HAVE FAILED OF ITS
| ESSENTIAL PURPOSE&period; YOU SPECIFICALLY ACKNOWLEDGE THAT HABITRPG IS NOT
| LIABLE FOR THE DEFAMATORY&comma; OFFENSIVE OR ILLEGAL CONDUCT OF OTHER USERS
| OR THIRD PARTIES AND THAT THE RISK OF INJURY FROM THE FOREGOING RESTS
| ENTIRELY WITH YOU&period; FURTHER&comma; HABITRPG WILL HAVE NO LIABILITY TO YOU OR TO
| ANY THIRD PARTY FOR ANY PUBLIC USER CONTENT OR THIRD-PARTY CONTENT UPLOADED
| ONTO OR DOWNLOADED FROM THE SITES OR THROUGH THE SERVICES&period;
p
| IN NO EVENT WILL HABITRPG&apos;S AGGREGATE LIABILITY ARISING OUT OF OR
| IN CONNECTION WITH THESE TERMS OF SERVICE OR FROM THE USE OF OR
| INABILITY TO USE THE SITE&comma; SERVICES OR CONTENT THEREIN EXCEED ONE
| HUNDRED U&period;S&period; DOLLARS &lpar;&dollar;100&rpar;&period; THE LIMITATIONS OF DAMAGES SET FORTH ABOVE
| ARE FUNDAMENTAL ELEMENTS OF THE BASIS OF THE BARGAIN BETWEEN HABITRPG AND
| YOU&period; SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF
| LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES&comma; SO THE ABOVE
| LIMITATION MAY NOT APPLY TO YOU&period;
p
strong Proprietary Rights Notices
br
| All trademarks&comma; service marks&comma; logos&comma; trade names and any other
| proprietary designations of HabitRPG used herein are trademarks or
| registered trademarks of HabitRPG&period; Any other trademarks&comma; service marks&comma;
| logos&comma; trade names and any other proprietary designations are the
| trademarks or registered trademarks of their respective parties&period;
p
strong Controlling Law and Jurisdiction
br
| These Terms of Service and any action related thereto will be governed
| by the laws of the State of California without regard to its conflict of
| laws provisions&period; The exclusive jurisdiction and venue of any action with
| respect to the subject matter of these Terms of Service will be the
| courts having jurisdiction over disputes arising in Santa Clara County&comma;
| California&comma; and each of the parties hereto waives any objection to
| jurisdiction and venue in such courts&period;
p
| YOU AGREE THAT IF YOU WANT TO SUE US&comma; YOU MUST FILE YOUR LAWSUIT
| WITHIN ONE YEAR AFTER THE EVENT THAT GAVE RISE TO YOUR LAWSUIT&period;
| OTHERWISE&comma; YOUR LAWSUIT WILL BE PERMANENTLY BARRED&period;
p
strong Export Control
br
| You may not use or otherwise export or re-export the Services except as
| authorized by United States law and the laws of the jurisdiction in
| which the Services were obtained&period; In particular&comma; but without limitation&comma;
| the Services may not be exported or re-exported &lpar;a&rpar; into any U&period;S&period;
| embargoed countries or &lpar;b&rpar; to anyone on the U&period;S&period; Treasury Department&apos;s
| list of Specially Designated Nationals or the U&period;S&period; Department of
| Commerce Denied Person&apos;s List or Entity List&period; By using the Services&comma; you
| represent and warrant that you are not located in any such country or on
| any such list&period; You also agree that you will not use these products for
| any purposes prohibited by United States law&comma; including&comma; without
| limitation&comma; the development&comma; design&comma; manufacture or production of
| nuclear&comma; missiles&comma; or chemical or biological weapons&period;
p
strong Entire Agreement
br
| These Terms of Service constitute the entire and exclusive understanding
| and agreement between HabitRPG and you regarding the Services and HabitRPG
| Content&comma; and these Terms of Service supersede and replace any and all
| prior oral or written understandings or agreements between HabitRPG and
| you regarding the Services and HabitRPG Content&period;
p
strong Assignment
br
| You may not assign or transfer these Terms of Service&comma; by operation of
| law or otherwise&comma; without HabitRPG&apos;s prior written consent&period; Any attempt
| by you to assign or transfer these Terms of Service&comma; without such
| consent&comma; will be null and of no effect&period; HabitRPG may freely assign these
| Terms of Service&period; Subject to the foregoing&comma; these Terms of Service will
| bind and inure to the benefit of the parties&comma; their successors and
| permitted assigns&period;
p
strong Notices
br
| You consent to the use of&colon; &lpar;i&rpar; electronic means to complete these Terms
| of Service and to deliver any notices or other communications permitted
| or required hereunder&semi; and &lpar;ii&rpar; electronic records to store information
| related to these Terms of Service or your use of the Services&period; Any
| notices or other communications permitted to required hereunder&comma;
| including those regarding modifications to these Terms of Service&comma; will
| be in writing and given&colon; &lpar;x&rpar; by HabitRPG via email &lpar;in each case to the
| address that you provide&rpar; or &lpar;y&rpar; by posting to the Sites or Services&period;
| For notices made by e-mail&comma; the date of receipt will be deemed the date
| on which such notice is transmitted&period;
p
strong General
br
| The failure of HabitRPG to enforce any right or provision of these Terms
| of Service will not constitute a waiver of future enforcement of that
| right or provision&period; The waiver of any such right or provision will be
| effective only if in writing and signed by a duly authorized
| representative of HabitRPG&period; Except as expressly set forth in these Terms
| of Service&comma; the exercise by either party of any of its remedies under
| these Terms of Service will be without prejudice to its other remedies
| under these Terms of Service or otherwise&period; If for any reason a court of
| competent jurisdiction finds any provision of these Terms of Service
| invalid or unenforceable&comma; that provision will be enforced to the maximum
| extent permissible and the other provisions of these Terms of Service
| will remain in full force and effect&period;
p
strong Contacting Us
br
| If you have any questions about these Terms of Service&comma; please contact
| us at <a href='mailto:admin@habitica.com'>admin@habitica.com</a>
</template>