- Access Token
-
-
- Create token to use with the API to update things that trigger task or
- chores
-
- {!isPlusAccount(userProfile) && (
- <>
-
- Plus Feature
-
-
- API tokens are not available in the Basic plan. Upgrade to Plus to
- generate API tokens for integrating with external systems and
- automating your tasks.
-
- >
- )}
+
+
+ Access Token
+
+
+ Create token to use with the API to update things that trigger task or
+ chores
+
+ {!isPlusAccount(userProfile) && (
+ <>
+
+ Plus Feature
+
+
+ API tokens are not available in the Basic plan. Upgrade to Plus to
+ generate API tokens for integrating with external systems and
+ automating your tasks.
+
+ >
+ )}
- {tokens.map(token => (
-
-
-
- {token.name}
-
- {moment(token.createdAt).fromNow()}(
- {moment(token.createdAt).format('lll')})
-
-
-
-
-
-
-
-
- {showTokenId === token?.id && (
-
- {
- navigator.clipboard.writeText(token.token)
- showNotification({
- type: 'success',
- message: 'Token copied to clipboard',
- })
+ {tokens.map(token => (
+
+
+
+ {token.name}
+
+ {moment(token.createdAt).fromNow()}(
+ {moment(token.createdAt).format('lll')})
+
+
+
+
+
+
+
- )}
-
- ))}
+ {showTokenId === token?.id && (
+
+ {
+ navigator.clipboard.writeText(token.token)
+ showNotification({
+ type: 'success',
+ message: 'Token copied to clipboard',
+ })
+ setShowTokenId(null)
+ }}
+ >
+
+
+ }
+ />
+
+ )}
+
+ ))}
-
- {
- setIsGetTokenNameModalOpen(false)
- }}
- okText={'Generate Token'}
- onSave={handleSaveToken}
- />
+
+ {
+ setIsGetTokenNameModalOpen(false)
+ }}
+ okText={'Generate Token'}
+ onSave={handleSaveToken}
+ />
- {/* Modals */}
- {confirmModalConfig?.isOpen && (
-
- )}
-
- Multi-Factor Authentication
-
-
- Add an extra layer of security to your account with multi-factor
- authentication (MFA). When enabled, you'll need to provide a
- verification code from your authenticator app in addition to your
- password when signing in.
-
+
+
+
+ Add an extra layer of security to your account with multi-factor
+ authentication (MFA). When enabled, you'll need to provide a
+ verification code from your authenticator app in addition to your
+ password when signing in.
+
- {success && (
- setSuccess('')}>
- {success}
-
- )}
+ {success && (
+ setSuccess('')}>
+ {success}
+
+ )}
- {error && (
- setError('')}>
- {error}
-
- )}
+ {error && (
+ setError('')}>
+ {error}
+
+ )}
-
-
-
-
-
-
- Two-Factor Authentication
-
-
- {mfaEnabled
- ? 'Your account is protected with 2FA'
- : 'Secure your account with an authenticator app'}
-
+
+
+
+
+
+
+ Two-Factor Authentication
+
+
+ {mfaEnabled
+ ? 'Your account is protected with 2FA'
+ : 'Secure your account with an authenticator app'}
+
+
+
+
+ {mfaEnabled ? (
+
+ ) : (
+
+ )}
-
- {mfaEnabled ? (
-
- ) : (
-
- )}
-
-
-
- {/*
+
+ {/*
{mfaEnabled && (
@@ -290,87 +289,194 @@ const MFASettings = () => {
)} */}
- {/* Setup MFA Modal */}
-
-
-
-
- Set up Multi-Factor Authentication
-
+ {/* Setup MFA Modal */}
+
+
+
+
+ Set up Multi-Factor Authentication
+
- {setupStep === 1 && setupData && (
-
-
- Step 1: Scan the QR code below with your
- authenticator app (Google Authenticator, Authy, etc.)
-
-
-
- {qrCodeDataUrl || setupData.qrCode ? (
-
- ) : (
-
- QR code could not be generated. Please try again or use the
- manual entry key below.
-
- )}
-
-
-
-
- Manual entry key:
+ {setupStep === 1 && setupData && (
+
+
+ Step 1: Scan the QR code below with your
+ authenticator app (Google Authenticator, Authy, etc.)
-
+ {qrCodeDataUrl || setupData.qrCode ? (
+
+ ) : (
+
+ QR code could not be generated. Please try again or use
+ the manual entry key below.
+
+ )}
+
+
+
- {setupData.secret}
+
+ Manual entry key:
+
+
+ {setupData.secret}
+
+
+
+
+
+ )}
+
+ {setupStep === 2 && (
+
+
+ Step 2: Enter the 6-digit verification code
+ from your authenticator app
+
+
+ {
+ if (e.key === 'Enter' && verificationCode.length === 6) {
+ handleConfirmMFA()
+ }
+ }}
+ onChange={e => setVerificationCode(e.target.value)}
+ sx={{
+ textAlign: 'center',
+ fontSize: '1.2em',
+ letterSpacing: verificationCode.length === 0 ? '' : '0.4em',
+ }}
+ slotProps={{
+ input: {
+ maxLength: 6,
+ pattern: '[0-9]*',
+ },
+ }}
+ />
+
+ {error && {error}}
+
+
+
+
+
+
+ )}
+
+ {setupStep === 3 && (
+
+
+
+
+ MFA Successfully Enabled!
+
+
+
+
+
+ Save these backup codes in a safe place
+
+
+ You can use these codes to access your account if you lose
+ your authenticator device. Each code can only be used once.
+
+
+
+
+
+ {backupCodes?.map((code, index) => (
+
+ {code}
+
+ ))}
+
+
+
+
+
+ )}
+
+
+
+ {/* Disable MFA Modal */}
+
+
+
+
+ Disable Multi-Factor Authentication
+
+
+
+
+
+ Disabling MFA will make your account less secure. Are you sure
+ you want to continue?
-
-
- )}
-
- {setupStep === 2 && (
-
- Step 2: Enter the 6-digit verification code
- from your authenticator app
+ Enter a verification code from your authenticator app to
+ confirm:
{
- if (e.key === 'Enter' && verificationCode.length === 6) {
- handleConfirmMFA()
+ if (e.key === 'Enter' && disableCode.length === 6) {
+ handleDisableMFA()
}
}}
- onChange={e => setVerificationCode(e.target.value)}
+ onChange={e => setDisableCode(e.target.value)}
sx={{
textAlign: 'center',
fontSize: '1.2em',
@@ -389,39 +495,40 @@ const MFASettings = () => {
- )}
+
+
+
+ {/* Backup Codes Modal */}
+ setBackupCodesModalOpen(false)}
+ >
+
+
+
+ New Backup Codes
+
- {setupStep === 3 && (
-
-
-
- MFA Successfully Enabled!
-
-
-
-
- Save these backup codes in a safe place
-
- You can use these codes to access your account if you lose
- your authenticator device. Each code can only be used once.
+ Your previous backup codes are now invalid. Save these new
+ codes in a safe place. Each code can only be used once.
@@ -439,123 +546,17 @@ const MFASettings = () => {
-
- )}
-
-
-
- {/* Disable MFA Modal */}
-
-
-
-
- Disable Multi-Factor Authentication
-
-
-
-
-
- Disabling MFA will make your account less secure. Are you sure
- you want to continue?
-
-
-
-
- Enter a verification code from your authenticator app to confirm:
-
-
- {
- if (e.key === 'Enter' && disableCode.length === 6) {
- handleDisableMFA()
- }
- }}
- onChange={e => setDisableCode(e.target.value)}
- sx={{
- textAlign: 'center',
- fontSize: '1.2em',
- letterSpacing: verificationCode.length === 0 ? '' : '0.4em',
- }}
- slotProps={{
- input: {
- maxLength: 6,
- pattern: '[0-9]*',
- },
- }}
- />
-
- {error && {error}}
-
-
-
- Cancel
-
-
- Disable MFA
-
-
-
-
-
-
- {/* Backup Codes Modal */}
- setBackupCodesModalOpen(false)}
- >
-
-
-
- New Backup Codes
-
-
-
-
-
- Your previous backup codes are now invalid. Save these new codes
- in a safe place. Each code can only be used once.
-
-
-
-
-
- {backupCodes?.map((code, index) => (
-
- {code}
-
- ))}
-
-
-
- setBackupCodesModalOpen(false)}
- >
- I've saved my backup codes
-
-
-
-
-
+
+
+
+
)
}
diff --git a/src/views/Settings/NotificationSettings.jsx b/src/views/Settings/NotificationSettings.jsx
new file mode 100644
index 0000000..a94ebd2
--- /dev/null
+++ b/src/views/Settings/NotificationSettings.jsx
@@ -0,0 +1,12 @@
+import NotificationSetting from './NotificationSetting'
+import SettingsLayout from './SettingsLayout'
+
+const NotificationSettings = () => {
+ return (
+
+
+
+ )
+}
+
+export default NotificationSettings
\ No newline at end of file
diff --git a/src/views/Settings/ProfileSettings.jsx b/src/views/Settings/ProfileSettings.jsx
index 3975fe5..7f0eb1d 100644
--- a/src/views/Settings/ProfileSettings.jsx
+++ b/src/views/Settings/ProfileSettings.jsx
@@ -4,7 +4,6 @@ import {
Box,
Button,
Card,
- Divider,
Input,
Typography,
} from '@mui/joy'
@@ -19,6 +18,7 @@ import { UpdateUserDetails } from '../../utils/Fetcher'
import { resolvePhotoURL } from '../../utils/Helpers'
import { getCroppedImg } from '../../utils/imageCropUtils'
import { UploadFile } from '../../utils/TokenManager'
+import SettingsLayout from './SettingsLayout'
const ProfileSettings = () => {
const { data: userProfile } = useUserProfile()
@@ -136,165 +136,165 @@ const ProfileSettings = () => {
// Helper to resolve photoURL with baseURL if needed
return (
-
- Profile Settings
-
-
- Update your display name and profile photo.
-
-
-
-
+
+
+
+
+ Server Storage Usage
+ {!isPlusAccount(userProfile) && (
+
+ Plus Feature
+
+ )}
+
+
+ This is the storage used by your account on our servers (e.g. files,
+ images, and data you have uploaded).
+
+ {!isPlusAccount(userProfile) ? (
+ <>
+
+
+ -- MB used / -- MB total (--)
+
+
+ Server storage is not available in the Basic plan. Upgrade to
+ Plus to track your server storage usage.
+
+ >
+ ) : loading ? (
+ <>
+
+ Loading...
+ >
+ ) : (
+ <>
+
+
+ {usedMB} MB used / {totalMB} MB total ({percent}%)
+
+ >
)}
-
-
- This is the storage used by your account on our servers (e.g. files,
- images, and data you have uploaded).
-
- {!isPlusAccount(userProfile) ? (
- <>
-
+
+
+ {Capacitor.isNativePlatform() ? 'App' : 'Browser'} Local Storage &
+ Cache
+
+
+ This is data stored locally in your browser for faster access and
+ offline use. Clearing this will not affect your server data, but may
+ log you out or remove offline tasks.
+
+ {
+ showConfirmation(
+ 'Are you sure you want to clear your local storage and cache? This will remove all your data from this browser and require login.',
+ 'Clear All Local Storage',
+ () => {
+ localStorage.clear()
+ Navigate('/login')
},
- }}
- />
-
- -- MB used / -- MB total (--)
-
-
- Server storage monitoring is not available in the Basic plan.
- Upgrade to Plus to track your server storage usage.
-
- >
- ) : loading ? (
- <>
-
- Loading...
- >
- ) : (
- <>
-
-
- {usedMB} MB used / {totalMB} MB total ({percent}%)
-
- >
- )}
-
-
-
- {Capacitor.isNativePlatform() ? 'App' : 'Browser'} Local Storage &
- Cache
-
-
- This is data stored locally in your browser for faster access and
- offline use. Clearing this will not affect your server data, but may
- log you out or remove offline tasks.
-
- {
- showConfirmation(
- 'Are you sure you want to clear your local storage and cache? This will remove all your data from this browser and require login.',
- 'Clear All Local Storage',
- () => {
- localStorage.clear()
- Navigate('/login')
- },
- 'Clear All',
- 'Cancel',
- 'danger',
- )
- }}
- >
- Clear All Local Storage and Cache
-
- {
- showConfirmation(
- 'Are you sure you want to clear only the offline cache and tasks?',
- 'Clear Offline Cache',
- () => {
- localStorage.removeItem('offline_cache')
- localStorage.removeItem('offline_request_queue')
- localStorage.removeItem('offlineTasks')
- },
- 'Clear Cache',
- 'Cancel',
- 'danger',
- )
- }}
- sx={{ mt: 1 }}
- >
- Clear Offline Cache and Offline Tasks
-
-
+ 'Clear All',
+ 'Cancel',
+ 'danger',
+ )
+ }}
+ >
+ Clear All Local Storage and Cache
+
+ {
+ showConfirmation(
+ 'Are you sure you want to clear only the offline cache and tasks?',
+ 'Clear Offline Cache',
+ () => {
+ localStorage.removeItem('offline_cache')
+ localStorage.removeItem('offline_request_queue')
+ localStorage.removeItem('offlineTasks')
+ },
+ 'Clear Cache',
+ 'Cancel',
+ 'danger',
+ )
+ }}
+ sx={{ mt: 1 }}
+ >
+ Clear Offline Cache and Offline Tasks
+
+
- {/* Modals */}
- {confirmModalConfig?.isOpen && (
-
- )}
-
+
)
}
diff --git a/src/views/Settings/ThemeSettings.jsx b/src/views/Settings/ThemeSettings.jsx
new file mode 100644
index 0000000..06f1d7b
--- /dev/null
+++ b/src/views/Settings/ThemeSettings.jsx
@@ -0,0 +1,19 @@
+import { Typography } from '@mui/joy'
+import SettingsLayout from './SettingsLayout'
+import ThemeToggle from './ThemeToggle'
+
+const ThemeSettings = () => {
+ return (
+
+
+
+ Choose how the site looks to you. Select a single theme, or sync with
+ your system and automatically switch between day and night themes.
+
+
+
+
+ )
+}
+
+export default ThemeSettings
\ No newline at end of file
diff --git a/src/views/Terms/TermsView.jsx b/src/views/Terms/TermsView.jsx
index f0a0d9c..b55f632 100644
--- a/src/views/Terms/TermsView.jsx
+++ b/src/views/Terms/TermsView.jsx
@@ -2,190 +2,244 @@ import React from 'react'
const TermsView = () => {
return (
-
+
Terms of Service
+
Effective Date: January 1, 2024
These Terms of Service ("Terms") govern your access to and use of the
- services provided by Favoro LLC, doing business as donetick.com
- ("Favoro", "we", "us", or "our"). By accessing or using our website and
- services, you agree to be bound by these Terms. If you do not agree to
+ Donetick task management platform provided by Favoro LLC ("Donetick", "we", "us", or "our").
+ By accessing or using our services, you agree to be bound by these Terms. If you do not agree to
these Terms, you may not access or use our services.
-
Use of Services
+
+
Important: Cloud vs. Self-Hosted Services
+
+ Donetick is available in two deployment models with different terms and responsibilities:
+
+
+
Cloud-Hosted Service: Hosted at donetick.com where we provide infrastructure and data management
+
Self-Hosted Service: Open-source software you deploy on your own infrastructure
+
+
Please review the applicable sections carefully as they define different rights and obligations.
+
+
1. Definitions
-
- You must be at least 18 years old or have the legal capacity to enter
- into contracts in your jurisdiction to use our services.
-
-
- You are responsible for maintaining the confidentiality of your
- account credentials and for any activity that occurs under your
- account.
-
-
- You may not use our services for any illegal or unauthorized purpose,
- or in any way that violates these Terms.
-
-
-
Subscriptions
-
-
-
- Some parts of the Service are billed on a subscription basis
- ("Subscription(s)"). You will be billed in advance on a recurring and
- periodic basis ("Billing Cycle"). Billing cycles are set either on a
- monthly or annual basis, depending on the type of subscription plan
- you select when purchasing a Subscription.
-
-
- At the end of each Billing Cycle, your Subscription will automatically
- renew under the exact same conditions unless you cancel it or Favoro
- cancels it. You may cancel your Subscription renewal either through
- your online account management page or by contacting Donetickcustomer
- support team.
-
-
- A valid payment method, including credit or debit card, is required to
- process the payment for your Subscription. You shall provide Favoro
- with accurate and complete billing information including full name,
- address, state, zip code, telephone number, and a valid payment method
- information. By submitting such payment information, you automatically
- authorize Donetickto charge all Subscription fees incurred through
- your account to any such payment instruments.
-
-
- Should automatic billing fail to occur for any reason, Donetickwill
- issue an electronic invoice indicating that you must proceed manually,
- within a certain deadline date, with the full payment corresponding to
- the billing period as indicated on the invoice.
-
+
"Cloud Service" refers to the Donetick platform hosted at donetick.com and managed by Favoro LLC
+
"Self-Hosted Service" refers to the open-source Donetick software deployed on user-controlled infrastructure
+
"Content" means all data, information, tasks, files, and other materials you create, upload, or store using our services
+
"Circle" means a collaborative workspace shared between users for task management
-
Fee Changes
+
2. Eligibility and Account Registration
-
- {' '}
- Favoro, in its sole discretion and at any time, may modify the
- Subscription fees for the Subscriptions. Any Subscription fee change
- will become effective at the end of the then-current Billing Cycle.
-
-
- Donetickwill provide you with reasonable prior notice of any change in
- Subscription fees to give you an opportunity to terminate your
- Subscription before such change becomes effective.
-
+
You must be at least 13 years old to use our services
+
Users under 18 must have parental consent
+
You are responsible for maintaining the confidentiality of your account credentials
+
You must provide accurate and complete information when creating an account
+
One person or legal entity may maintain only one account
-
Refunds
+
3. Cloud-Hosted Service Terms
+
This section applies only to users of the Cloud Service at donetick.com
+
+
3.1 Service Availability and Uptime
-
- Certain refund requests for Subscriptions may be considered by Favoro
- on a case-by-case basis and granted at the sole discretion of Favoro.
-
+
We strive to maintain 99.5% uptime for the Cloud Service on a monthly basis
+
Scheduled maintenance will be announced at least 24 hours in advance when possible
+
We reserve the right to temporarily suspend service for emergency maintenance
+
No SLA credits or compensation are provided for downtime unless otherwise specified in a separate agreement
-
Content
+
3.2 Data Ownership and Responsibility
-
- Our services allow you to post, link, store, share, and otherwise make
- available certain information, text, graphics, videos, or other
- material ("Content").
-
-
- You are responsible for the Content that you post to our services,
- including its legality, reliability, and appropriateness.
-
-
- You may not post Content that is defamatory, obscene, abusive,
- offensive, or otherwise objectionable.
-
-
- You may not post Content that violates any party's intellectual
- property rights.
-
-
You may not post Content that violates any law or regulation.
+
Your Data: You retain ownership of all Content you create or upload
+
Our Responsibility: We provide secure hosting, backup, and infrastructure management
+
Data Portability: You can export your data at any time through our export features
+
Data Retention: We retain your data for 90 days after account deletion to allow recovery
-
Feedback Requests
+
3.3 Subscriptions and Billing
+
+
Cloud Service subscriptions are billed monthly or annually in advance
+
Subscription fees will automatically renew unless cancelled before the next billing cycle
+
You may cancel your subscription at any time through your account settings
+
Upon cancellation, you retain access until the end of your current billing period
+
We may modify subscription prices with 30 days advance notice
+
Refunds are considered on a case-by-case basis at our discretion
+
+
+
3.4 Cloud Service Limitations
+
+
Storage limits apply based on your subscription tier
+
API rate limits may be enforced to ensure service stability
+
We may suspend accounts that exceed reasonable usage limits
+
+
+
4. Self-Hosted Service Terms
+
This section applies to users deploying Donetick on their own infrastructure
+
+
4.1 Open Source License
+
+
The Self-Hosted Service is provided under the MIT License
+
You may modify, distribute, and use the software for any purpose
+
Attribution to Donetick must be maintained in derivative works
+
No warranty or support is provided for self-hosted deployments
+
+
+
4.2 User Responsibility
+
+
Infrastructure: You are solely responsible for hosting, maintenance, security, and backups
+
Data Protection: You are the data controller and responsible for compliance with applicable laws
+
Updates: You are responsible for applying security updates and patches
+
Support: No technical support is provided for self-hosted installations
+
+
+
4.3 Limitation of Our Responsibility
+
+
We provide no guarantees about the performance or security of self-hosted deployments
+
We are not responsible for any data loss, security breaches, or service interruptions in self-hosted environments
+
Technical support is limited to community forums and documentation
+
+
+
5. Acceptable Use Policy
+
Applies to both Cloud and Self-Hosted Services
+
+
You may not use our services to:
+
+
Violate any applicable laws or regulations
+
Infringe on intellectual property rights
+
Transmit malicious code or conduct security attacks
+
Harass, abuse, or harm other users
+
Distribute spam or unwanted communications
+
Attempt to reverse engineer our proprietary systems (Cloud Service)
+
Resell or redistribute the service without permission
+
+
+
6. Content and Data
+
+
6.1 Your Content Rights
+
+
You retain ownership of all Content you create
+
You grant us the necessary rights to operate the service (Cloud Service only)
+
You are responsible for ensuring you have rights to any Content you upload
+
+
+
6.2 Content Restrictions
+
+
Content must not violate any laws or third-party rights
+
Content must not contain malicious code or harmful materials
+
We may remove Content that violates these Terms (Cloud Service only)
+
+
+
7. Privacy and Security
+
+
Your privacy is important to us - please review our Privacy Policy
+
We implement industry-standard security measures (Cloud Service)
+
You are responsible for security in self-hosted deployments
+
Report security vulnerabilities to security@donetick.com
+
+
+
8. Intellectual Property
+
+
The Donetick name, logo, and proprietary features are our intellectual property
+
The open-source codebase is licensed under MIT License
+
You may not use our trademarks without written permission
+
+
+
9. Third-Party Integrations
+
+
Donetick integrates with third-party services (Telegram, Discord, webhooks, etc.)
+
Your use of these integrations is subject to their respective terms
+
We are not responsible for third-party service availability or functionality
+
+
+
10. Liability and Warranties
+
+
10.1 Disclaimer of Warranties
- Our platform allows users to send feedback requests to others. You are
- solely responsible for the content of any feedback requests you send
- using our services.
+ Our services are provided "as is" and "as available" without any warranty of any kind,
+ express or implied, including but not limited to merchantability, fitness for a particular purpose,
+ or non-infringement.
+
10.2 Cloud Service Liability
+
+
Our total liability for the Cloud Service is limited to the amount you paid in the 12 months preceding the claim
+
We are not liable for indirect, incidental, special, or consequential damages
+
We maintain appropriate insurance and implement security best practices
+
+
+
10.3 Self-Hosted Service Liability
+
+
We provide no warranties or guarantees for self-hosted deployments
+
Our liability is limited to the maximum extent permitted by law
+
You assume all risks associated with self-hosting
+
+
+
11. Indemnification
- You may not use our services to send spam, harass others, or engage in
- any abusive behavior.
+ You agree to indemnify and hold us harmless from any claims, damages, or expenses
+ arising from your use of our services, violation of these Terms, or infringement of any rights.
-
Credits
+
12. Termination
+
12.1 Termination by You
+
+
You may terminate your account at any time
+
Cloud Service: Access continues until the end of your billing period
+
Self-Hosted Service: You may stop using the software at any time
+
+
+
12.2 Termination by Us
+
+
We may terminate accounts that violate these Terms
+
We may discontinue the Cloud Service with 90 days notice
+
We will provide data export capabilities before termination when possible
+
+
+
13. Changes to These Terms
+
+
We may update these Terms from time to time
+
Material changes will be announced via email or in-app notification
+
Continued use after changes constitutes acceptance of new Terms
+
For significant changes, we may require explicit acceptance
+
+
+
14. Dispute Resolution
+
+
We encourage resolving disputes informally by contacting us first
+
These Terms are governed by the laws of Delaware, United States
+
Any disputes will be resolved in the courts of Delaware
+
You may pursue small claims court for eligible disputes
+
+
+
15. Miscellaneous
+
+
If any provision is found unenforceable, the remainder remains in effect
+
Our failure to enforce any right does not waive that right
+
These Terms constitute the entire agreement between us
+
We may assign these Terms; you may not without our consent
+
+
+
16. Contact Information
- Certain actions on our platform may require credits. You can purchase
- credits through our website.
+ If you have questions about these Terms, please contact us:
+
+
Email: legal@donetick.com
+
Support: support@donetick.com
+
Address: Favoro LLC, [Address to be provided]
+
-
Credits are non-refundable and non-transferable.
-
-
Intellectual Property
-
-
- All content on our website and services, including text, graphics,
- logos, and images, is the property of Donetickor its licensors and is
- protected by copyright and other intellectual property laws.
-
-
-
- You may not reproduce, modify, or distribute any content from our
- website or services without our prior written consent.
-
-
-
Disclaimer of Warranties
-
-
- Our services are provided "as is" and "as available" without any
- warranty of any kind, express or implied.
-
-
-
- We do not warrant that our services will be uninterrupted, secure, or
- error-free, or that any defects will be corrected.
-
-
-
Limitation of Liability
-
-
- In no event shall Donetickbe liable for any indirect, incidental,
- special, consequential, or punitive damages, including but not limited
- to lost profits, arising out of or in connection with your use of our
- services.
-
-
-
Governing Law
-
-
- These Terms shall be governed by and construed in accordance with the
- laws of the state of [Your State/Country], without regard to its
- conflict of law principles.
-
-
-
Changes to These Terms
-
-
- We may update these Terms from time to time. Any changes will be posted
- on this page, and the revised date will be indicated at the top of the
- page. Your continued use of our services after any such changes
- constitutes your acceptance of the new Terms.
-
-
-
Contact Us
-
-
- If you have any questions or concerns about these Terms, please contact
- us at support@donetick.com
+
+
+ Last Updated: January 1, 2024
+ These Terms of Service are effective immediately for new users and will become effective
+ for existing users 30 days after posting.