Privacy Policy page + Chat API key fix
- /privacy page for Google Play (GDPR compliant) - Fixed Anthropic API key mismatch in .env - Chat returns AI responses again Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
54
apps/tasks/app/privacy/page.tsx
Normal file
54
apps/tasks/app/privacy/page.tsx
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
export default function PrivacyPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ maxWidth: 800, margin: "0 auto", padding: "40px 24px", fontFamily: "system-ui" }}>
|
||||||
|
<h1 style={{ fontSize: 28, fontWeight: "bold", marginBottom: 24 }}>Privacy Policy</h1>
|
||||||
|
<p style={{ color: "#666", marginBottom: 16 }}>Last updated: March 29, 2026</p>
|
||||||
|
|
||||||
|
<h2 style={{ fontSize: 20, fontWeight: 600, marginTop: 32, marginBottom: 12 }}>1. Information We Collect</h2>
|
||||||
|
<p>Task Team collects the following information when you create an account:</p>
|
||||||
|
<ul style={{ paddingLeft: 24, marginTop: 8 }}>
|
||||||
|
<li>Email address</li>
|
||||||
|
<li>Name</li>
|
||||||
|
<li>Phone number (optional)</li>
|
||||||
|
</ul>
|
||||||
|
<p style={{ marginTop: 8 }}>We also collect task data, goals, and settings you create within the app.</p>
|
||||||
|
|
||||||
|
<h2 style={{ fontSize: 20, fontWeight: 600, marginTop: 32, marginBottom: 12 }}>2. How We Use Your Data</h2>
|
||||||
|
<p>Your data is used exclusively to provide the Task Team service:</p>
|
||||||
|
<ul style={{ paddingLeft: 24, marginTop: 8 }}>
|
||||||
|
<li>Task management and organization</li>
|
||||||
|
<li>AI-powered planning assistance</li>
|
||||||
|
<li>Calendar and goal tracking</li>
|
||||||
|
<li>Team collaboration features</li>
|
||||||
|
<li>Push notifications for task reminders</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2 style={{ fontSize: 20, fontWeight: 600, marginTop: 32, marginBottom: 12 }}>3. Data Storage</h2>
|
||||||
|
<p>Your data is stored on secure servers in the European Union (Hetzner, Germany). We use PostgreSQL databases with encrypted connections and regular backups.</p>
|
||||||
|
|
||||||
|
<h2 style={{ fontSize: 20, fontWeight: 600, marginTop: 32, marginBottom: 12 }}>4. Third-Party Services</h2>
|
||||||
|
<ul style={{ paddingLeft: 24, marginTop: 8 }}>
|
||||||
|
<li><strong>Anthropic Claude AI</strong> — for AI chat and planning features (messages are processed but not stored by Anthropic)</li>
|
||||||
|
<li><strong>Google OAuth</strong> — for optional Google login</li>
|
||||||
|
<li><strong>Expo</strong> — for push notifications</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2 style={{ fontSize: 20, fontWeight: 600, marginTop: 32, marginBottom: 12 }}>5. Data Sharing</h2>
|
||||||
|
<p>We do not sell, trade, or share your personal data with third parties. Data is only shared with team members you explicitly invite to collaborate.</p>
|
||||||
|
|
||||||
|
<h2 style={{ fontSize: 20, fontWeight: 600, marginTop: 32, marginBottom: 12 }}>6. Your Rights (GDPR)</h2>
|
||||||
|
<p>You have the right to:</p>
|
||||||
|
<ul style={{ paddingLeft: 24, marginTop: 8 }}>
|
||||||
|
<li>Access your data</li>
|
||||||
|
<li>Export your data</li>
|
||||||
|
<li>Delete your account and all data</li>
|
||||||
|
<li>Modify your personal information</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2 style={{ fontSize: 20, fontWeight: 600, marginTop: 32, marginBottom: 12 }}>7. Contact</h2>
|
||||||
|
<p>IT Enterprise Solution s.r.o.<br/>Email: apps@it-enterprise.cz<br/>Web: https://it-enterprise.cz</p>
|
||||||
|
|
||||||
|
<p style={{ marginTop: 32, color: "#999", fontSize: 14 }}>© 2026 IT Enterprise Solution s.r.o. All rights reserved.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
11
backup.sh
11
backup.sh
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
cd /opt/task-team || exit 1
|
||||||
BACKUP_DIR="/opt/task-team/backups"
|
BACKUP_DIR="/opt/task-team/backups"
|
||||||
DATE=$(date +%Y%m%d_%H%M)
|
DATE=$(date +%Y%m%d_%H%M)
|
||||||
PGDUMP="/usr/lib/postgresql/18/bin/pg_dump"
|
PGDUMP="/usr/lib/postgresql/18/bin/pg_dump"
|
||||||
@@ -10,13 +11,13 @@ PGPASSWORD="TaskTeam2026!" $PGDUMP -h 10.10.10.10 -U taskteam -d taskteam -F c -
|
|||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
# Compress
|
# Compress
|
||||||
gzip -f "$BACKUP_DIR/taskteam_$DATE.dump" 2>/dev/null
|
gzip -f "$BACKUP_DIR/taskteam_$DATE.dump" 2>/dev/null
|
||||||
echo "$(date '+%Y-%m-%d %H:%M:%S') OK: taskteam_$DATE.dump.gz"
|
echo "$(date "+%Y-%m-%d %H:%M:%S") OK: taskteam_$DATE.dump.gz"
|
||||||
else
|
else
|
||||||
echo "$(date '+%Y-%m-%d %H:%M:%S') FAIL: pg_dump exited with error"
|
echo "$(date "+%Y-%m-%d %H:%M:%S") FAIL: pg_dump exited with error"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Keep last 7 daily backups
|
# Keep last 14 daily backups
|
||||||
find $BACKUP_DIR -name "*.dump.gz" -mtime +7 -delete
|
find $BACKUP_DIR -name "*.dump.gz" -mtime +14 -delete
|
||||||
find $BACKUP_DIR -name "*.dump" -mtime +7 -delete
|
find $BACKUP_DIR -name "*.dump" -mtime +14 -delete
|
||||||
|
|
||||||
ls -lh $BACKUP_DIR/ | tail -5
|
ls -lh $BACKUP_DIR/ | tail -5
|
||||||
|
|||||||
BIN
backups/releases/android/task-team-v1.0.0.apk
Normal file
BIN
backups/releases/android/task-team-v1.0.0.apk
Normal file
Binary file not shown.
BIN
backups/taskteam_20260329_2147.dump.gz
Normal file
BIN
backups/taskteam_20260329_2147.dump.gz
Normal file
Binary file not shown.
@@ -5,7 +5,7 @@ set -euo pipefail
|
|||||||
|
|
||||||
VERSION=${1:-$(date +%Y%m%d_%H%M)}
|
VERSION=${1:-$(date +%Y%m%d_%H%M)}
|
||||||
PLATFORM=${2:-android}
|
PLATFORM=${2:-android}
|
||||||
FILE=$3
|
FILE=${3:-}
|
||||||
|
|
||||||
if [ -z "${FILE:-}" ]; then
|
if [ -z "${FILE:-}" ]; then
|
||||||
echo "Usage: upload-release.sh <version> <platform> <file>"
|
echo "Usage: upload-release.sh <version> <platform> <file>"
|
||||||
|
|||||||
Reference in New Issue
Block a user