feat: Added html that serves privacy policy
This commit is contained in:
5
.dockerignore
Normal file
5
.dockerignore
Normal file
@@ -0,0 +1,5 @@
|
||||
.git
|
||||
.cursor
|
||||
Dockerfile
|
||||
.dockerignore
|
||||
|
||||
12
Dockerfile
Normal file
12
Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
||||
# Use Nginx Alpine as a lightweight base image
|
||||
FROM nginx:alpine
|
||||
|
||||
# Copy the static files to the Nginx html directory
|
||||
COPY index.html /usr/share/nginx/html/index.html
|
||||
COPY policy.md /usr/share/nginx/html/policy.md
|
||||
|
||||
# Expose port 80
|
||||
EXPOSE 80
|
||||
|
||||
# Nginx starts automatically by default
|
||||
|
||||
58
index.html
Normal file
58
index.html
Normal file
@@ -0,0 +1,58 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Privacy Policy - Cardly</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/9.1.2/marked.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/3.0.6/purify.min.js"></script>
|
||||
<style>
|
||||
.prose h1 { @apply text-4xl font-bold mb-6 text-gray-900; }
|
||||
.prose h2 { @apply text-2xl font-semibold mt-8 mb-4 text-gray-800; }
|
||||
.prose p { @apply mb-4 text-gray-600 leading-relaxed; }
|
||||
.prose ul { @apply list-disc pl-6 mb-4 text-gray-600; }
|
||||
.prose li { @apply mb-2; }
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-gray-50 min-h-screen">
|
||||
<div class="max-w-4xl mx-auto py-12 px-4 sm:px-6 lg:px-8">
|
||||
<div class="bg-white shadow-sm rounded-lg p-8 md:p-12">
|
||||
<div id="content" class="prose max-w-none">
|
||||
<div class="flex justify-center items-center py-20">
|
||||
<div class="animate-spin rounded-full h-12 w-12 border-b-2 border-indigo-600"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="mt-8 text-center text-gray-400 text-sm">
|
||||
© 2026 Cardly. All rights reserved.
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
async function loadPolicy() {
|
||||
const contentEl = document.getElementById('content');
|
||||
try {
|
||||
const response = await fetch('policy.md');
|
||||
if (!response.ok) {
|
||||
throw new Error('Failed to load policy.md');
|
||||
}
|
||||
const markdown = await response.text();
|
||||
const html = marked.parse(markdown);
|
||||
contentEl.innerHTML = DOMPurify.sanitize(html);
|
||||
} catch (error) {
|
||||
console.error('Error loading policy:', error);
|
||||
contentEl.innerHTML = `
|
||||
<div class="text-center py-10">
|
||||
<h2 class="text-red-500 text-xl font-semibold">Error Loading Policy</h2>
|
||||
<p class="text-gray-600 mt-2">Could not load the privacy policy content. Please make sure policy.md exists and is accessible.</p>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', loadPolicy);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
61
policy.md
Normal file
61
policy.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Privacy Policy for Cardly
|
||||
|
||||
**Last Updated:** 2026-01-01
|
||||
|
||||
## 1. Introduction
|
||||
|
||||
Welcome to **Cardly** ("we," "our," or "us"). We are committed to protecting your privacy. This Privacy Policy explains how our mobile application (the "App") collects, uses, and safeguards your information.
|
||||
|
||||
By downloading and using Cardly, you agree to the terms of this Privacy Policy.
|
||||
|
||||
## 2. Information We Collect
|
||||
|
||||
We collect a limited amount of information to provide the features of the App.
|
||||
|
||||
### A. Device Permissions and Data
|
||||
To function correctly, Cardly requires access to certain features on your device:
|
||||
|
||||
* **Camera and Photo Gallery:** We Request access to your camera and photo library to allow you to upload custom cover images for your flashcard decks. Images are uploaded to our secure storage provider (Supabase) and are only used for displaying your deck covers.
|
||||
* **Usage Stats (Package Usage Stats):** We use the `PACKAGE_USAGE_STATS` permission to enable "Focus Mode." This feature monitors which apps you are currently using to block distracting apps while you are studying. **We do not store, sell, or share your usage history.** This data is processed locally on your device to trigger the blocking mechanism.
|
||||
* **System Alert Window (Overlay):** We use the "Display over other apps" permission to show the Focus Mode blocking screen when you attempt to open a restricted app during a study session.
|
||||
|
||||
### B. Account Information
|
||||
If you create an account, we store your authentication credentials (via email or social login) and user profile information consistent with our backend provider, Supabase. This includes your:
|
||||
* Email address
|
||||
* User ID
|
||||
* Flashcard data (Decks, Cards, Progress)
|
||||
|
||||
## 3. How We Use Your Information
|
||||
|
||||
We use the collected information for the following purposes:
|
||||
* **Core Functionality:** To allow you to create flashcards, study them, and upload associated images.
|
||||
* **Focus Mode:** To detect distracting apps and intervene to help you stay focused.
|
||||
* **Sync:** To synchronize your study progress and decks across multiple devices.
|
||||
|
||||
**We do not sell your personal data to third parties.**
|
||||
|
||||
## 4. Third-Party Services
|
||||
|
||||
We may use third-party services that collect information used to identify you. Please consult the privacy policies of these third-party service providers:
|
||||
|
||||
* **Supabase:** We use Supabase for authentication and database services. [Supabase Privacy Policy](https://supabase.com/privacy)
|
||||
* **Expo:** We use Expo to build and update the app. [Expo Privacy Policy](https://expo.dev/privacy)
|
||||
* **Google Play Services:** [Google Policies](https://policies.google.com/privacy)
|
||||
|
||||
## 5. Data Security
|
||||
|
||||
We value your trust in providing us your Personal Information and strive to use commercially acceptable means of protecting it. All data synchronized with our servers is transmitted over secure SSL/TLS connections. However, remind that no method of transmission over the internet or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.
|
||||
|
||||
## 6. Children's Privacy
|
||||
|
||||
These Services do not address anyone under the age of 13. We do not knowingly collect personally identifiable information from children under 13.
|
||||
|
||||
## 7. Changes to This Privacy Policy
|
||||
|
||||
We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page.
|
||||
|
||||
## 8. Contact Us
|
||||
|
||||
If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us at:
|
||||
|
||||
**im@mati.ss**
|
||||
Reference in New Issue
Block a user