diff --git a/public/impressum.html b/public/impressum.html new file mode 100644 index 0000000..800f206 --- /dev/null +++ b/public/impressum.html @@ -0,0 +1,123 @@ + + + + + +Impressum — DocFast + + + + + + + + + + +
+
+

Impressum

+

Legal notice according to § 5 ECG and § 25 MedienG (Austrian law)

+ +
+ Note: This page contains placeholder information marked with XXXXXX. The website owner must fill in the actual details before going live. +
+ +

Company Information

+

Company: Cloonar Technologies GmbH

+

Address: Address on request, Vienna, Austria

+

Email: legal@docfast.dev

+ +

Legal Registration

+

Commercial Register: FN XXXXXX

+

VAT ID: ATU XXXXXXXX

+

Jurisdiction: Commercial Court Vienna

+ +
+ Important: Placeholders above (marked XXXXXX) must be filled with actual company registration details. +
+ +

Responsible for Content

+

Cloonar Technologies GmbH
+ Legal contact: legal@docfast.dev

+ +

Disclaimer

+

Despite careful content control, we assume no liability for the content of external links. The operators of the linked pages are solely responsible for their content.

+ +

The content of our website has been created with the greatest possible care. However, we cannot guarantee that the content is current, reliable or complete.

+ +

EU Online Dispute Resolution

+

Platform of the European Commission for Online Dispute Resolution (ODR): https://ec.europa.eu/consumers/odr

+
+
+ + + + + \ No newline at end of file diff --git a/public/privacy.html b/public/privacy.html new file mode 100644 index 0000000..4ecb74a --- /dev/null +++ b/public/privacy.html @@ -0,0 +1,202 @@ + + + + + +Privacy Policy — DocFast + + + + + + + + + + +
+
+

Privacy Policy

+

Last updated: February 16, 2026

+ +
+ This privacy policy is GDPR compliant and explains how we collect, use, and protect your personal data. +
+ +

1. Data Controller

+

Cloonar Technologies GmbH
+ Address: Vienna, Austria
+ Email: legal@docfast.dev
+ Data Protection Contact: privacy@docfast.dev

+ +

2. Data We Collect

+ +

2.1 Account Information

+ + +

2.2 API Usage Data

+ + +

2.3 Payment Information

+ + +
+ No PDF content stored: We process your HTML/Markdown input to generate PDFs, but do not store the content or resulting PDFs on our servers. +
+ +

3. Legal Basis for Processing

+ + +

4. Data Retention

+ + +

5. Third-Party Processors

+ +

5.1 Stripe (Payment Processing)

+

Purpose: Payment processing for Pro subscriptions
+ Data: Email, payment information
+ Location: EU (GDPR compliant)
+ Privacy Policy: https://stripe.com/privacy

+ +

5.2 Hetzner (Hosting)

+

Purpose: Server hosting and infrastructure
+ Data: All data processed by DocFast
+ Location: Germany (Nuremberg)
+ Privacy Policy: https://www.hetzner.com/legal/privacy-policy

+ +
+ EU Data Residency: All your data is processed and stored exclusively within the European Union. +
+ +

6. Your Rights Under GDPR

+ + +

To exercise your rights: Email privacy@docfast.dev

+ +

7. Cookies and Tracking

+

DocFast uses minimal technical cookies:

+ + +

8. Data Security

+ + +

9. International Transfers

+

Your personal data does not leave the European Union. Our infrastructure is hosted exclusively by Hetzner in Germany.

+ +

10. Contact for Data Protection

+

For questions about data processing or to exercise your rights:

+

Email: privacy@docfast.dev
+ Subject: Include "GDPR" in the subject line for priority handling

+ +

11. Changes to This Policy

+

We will notify users of material changes via email. Continued use of the service constitutes acceptance of updated terms.

+
+
+ + + + + \ No newline at end of file diff --git a/public/terms.html b/public/terms.html new file mode 100644 index 0000000..2e18dd7 --- /dev/null +++ b/public/terms.html @@ -0,0 +1,275 @@ + + + + + +Terms of Service — DocFast + + + + + + + + + + +
+
+

Terms of Service

+

Last updated: February 16, 2026

+ +
+ By using DocFast, you agree to these terms. Please read them carefully. +
+ +

1. Service Description

+

DocFast provides an API service for converting HTML, Markdown, and URLs to PDF documents. The service includes:

+ + +

2. Service Plans

+ +

2.1 Free Tier

+ + +

2.2 Pro Tier

+ + +
+ Overage: If you exceed your plan limits, API requests will return rate limiting errors. No automatic charges apply. +
+ +

3. Acceptable Use

+ +

3.1 Permitted Uses

+ + +

3.2 Prohibited Uses

+ + +
+ Violation consequences: Account termination, permanent ban, and legal action if necessary. +
+ +

4. API Key Security

+ + +

5. Service Availability

+ +

5.1 Uptime

+ + +

5.2 Performance

+ + +

6. Data Processing

+ + +

7. Payment Terms

+ +

7.1 Pro Subscription

+ + +

7.2 Cancellation

+ + +
+ EU Consumer Rights: 14-day right of withdrawal applies to digital services not yet delivered. Once you start using the Pro service, withdrawal right expires. +
+ +

8. Limitation of Liability

+ + +

9. Account Termination

+ +

9.1 By You

+ + +

9.2 By Us

+

We may terminate accounts for:

+ + +
+ Termination notice: We will provide reasonable notice except for immediate security threats. +
+ +

10. Intellectual Property

+ + +

11. Governing Law

+ + +

12. Changes to Terms

+

We may update these terms by:

+ + +

13. Contact Information

+

Questions about these terms:

+ + +
+ Effective Date: These terms are effective immediately upon posting. By using DocFast, you acknowledge reading and agreeing to these terms. +
+
+
+ + + + + \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 93f4e74..fc05510 100644 --- a/src/index.ts +++ b/src/index.ts @@ -186,6 +186,22 @@ app.get("/docs", (_req, res) => { res.sendFile(path.join(__dirname, "../public/docs.html")); }); +// Legal pages (clean URLs) +app.get("/impressum", (_req, res) => { + res.setHeader('Cache-Control', 'public, max-age=86400'); + res.sendFile(path.join(__dirname, "../public/impressum.html")); +}); + +app.get("/privacy", (_req, res) => { + res.setHeader('Cache-Control', 'public, max-age=86400'); + res.sendFile(path.join(__dirname, "../public/privacy.html")); +}); + +app.get("/terms", (_req, res) => { + res.setHeader('Cache-Control', 'public, max-age=86400'); + res.sendFile(path.join(__dirname, "../public/terms.html")); +}); + // API root app.get("/api", (_req, res) => { res.json({