diff --git a/public/about.html b/public/about.html index 99e1b5b..3bb5ab1 100644 --- a/public/about.html +++ b/public/about.html @@ -3,39 +3,250 @@ {% block meta_description %}Welcome to Alpha One Labs, your hub for hands-on learning and teaching experiences in tech, science, and engineering.{% endblock %} {% block content %}
-
-
-
-

About Alpha One Labs

-

- Welcome to Alpha One Labs, your hub for hands-on learning - and teaching experiences in tech, science, and engineering. Since our founding in 2009, - we've grown from a small community hackerspace into a dynamic organization committed - to inspiring creativity, experimentation, and collaboration. Now, in 2025, we've fully - evolved into an education platform, providing engaging and cutting-edge STEM experiences - for learners everywhere. + +

+ + +
+

+ About Alpha One Labs +

+

+ Welcome to Alpha One Labs, your hub for hands-on learning and teaching experiences in tech, science, and engineering. + Since our founding in 2009, we've grown from a small community hackerspace into a dynamic organization committed to + inspiring creativity, experimentation, and collaboration. Now, in 2025, we've fully evolved into an education platform, + providing engaging and cutting-edge STEM experiences for learners everywhere.

-
-

Our Journey

-
    -
  • 2009: Founded as a small hackerspace in Brooklyn, fostering a community-driven environment for exploration.
  • -
  • 2010: Hosted our first workshops on 3D printing and robotics, igniting local interest in emerging technologies.
  • -
  • 2012: Expanded lab facilities and introduced collaborative community projects, strengthening our member network.
  • -
  • 2015: Formed partnerships with local schools to bring hands-on STEM experiences to classrooms.
  • -
  • 2018: Launched a mentorship program connecting experienced professionals with aspiring innovators.
  • -
  • 2020: Adapted to global challenges by shifting to virtual learning initiatives.
  • -
  • 2023: Grew internationally through new educational partnerships and outreach programs.
  • -
  • 2025: Transitioned into a full-fledged education platform, continuing to empower learners with hands-on innovation.
  • -
+
+ + +
+
+
+
2009
+
Year Founded
+
+
+
16+
+
Years of Innovation
+
+
+
Global
+
Reach & Partnerships
+
+
+
STEM
+
Focused Platform
+
-
- - - - +
+ + +
+
+
+
+
+ +
+ Our Journey +
+
-
-
+ +
+
+ + +
+
+ +
+
+
+ 2009 +

Foundation

+
+

+ Founded as a small hackerspace in Brooklyn, fostering a community-driven environment for exploration. +

+
+
+ + +
+
+ +
+
+
+ 2010 +

First Workshops

+
+

+ Hosted our first workshops on 3D printing and robotics, igniting local interest in emerging technologies. +

+
+
+ + +
+
+ +
+
+
+ 2012 +

Lab Expansion

+
+

+ Expanded lab facilities and introduced collaborative community projects, strengthening our member network. +

+
+
+ + +
+
+ +
+
+
+ 2015 +

School Partnerships

+
+

+ Formed partnerships with local schools to bring hands-on STEM experiences to classrooms. +

+
+
+ + +
+
+ +
+
+
+ 2018 +

Mentorship Program

+
+

+ Launched a mentorship program connecting experienced professionals with aspiring innovators. +

+
+
+ + +
+
+ +
+
+
+ 2020 +

Virtual Learning

+
+

+ Adapted to global challenges by shifting to virtual learning initiatives. +

+
+
+ + +
+
+ +
+
+
+ 2023 +

Global Expansion

+
+

+ Grew internationally through new educational partnerships and outreach programs. +

+
+
+ + +
+
+ +
+
+
+ 2025 +

Full Education Platform

+ Now +
+

+ Transitioned into a full-fledged education platform, continuing to empower learners with hands-on innovation. +

+
+
+ +
+
+ + + +
+
+
+
+
+ +
+ What We Stand For +
+
+
+ +
+
+
+ +
+

Hands-On Learning

+

+ We believe in learning by doing. Every concept is best understood through experimentation and real-world application. +

+
+ +
+
+ +
+

Community First

+

+ Our community of learners, teachers, and mentors is what makes Alpha One Labs special. Together, we grow faster. +

+
+ +
+
+ +
+

Open Source

+

+ We build in public and believe education should be accessible to everyone. Knowledge is meant to be shared freely. +

+
+
+
+ + +
+

Ready to Join Our Community?

+

Whether you want to learn new skills or share your expertise, there's a place for you at Alpha One Labs.

+
{% endblock %} diff --git a/public/feedback.html b/public/feedback.html index 93b28fc..9cb1698 100644 --- a/public/feedback.html +++ b/public/feedback.html @@ -4,36 +4,239 @@ {% block body_class %}min-h-screen flex flex-col bg-white text-gray-900 dark:bg-black dark:text-gray-100{% endblock %} {% block content %}
-
-

Share feedback

-

Tell us what is confusing, broken, missing, or worth improving.

-
- -
-
-
- -

-
+
+

Share Your Feedback

+

+ We value your feedback and are committed to continuously improving our platform. Please share your thoughts, suggestions, or concerns with us. +

+
+ + +
+
+ + +
+
+

+ Why Your Feedback Matters +

+

+ Your feedback directly shapes the future of Alpha One Labs. Every suggestion is reviewed by our team and influences our roadmap. +

+
+ + +
+ + +
+ + + + + +
+

+ Your Feedback +

+ + + + + +
+ + +
+ + +
+ + +

Provide your email if you'd like us to follow up with you.

+
+ + +
+ + +

0 / 5000

+
+ + + +
+ +
+
{% endblock %} diff --git a/public/terms.html b/public/terms.html index 65cb569..ea0a469 100644 --- a/public/terms.html +++ b/public/terms.html @@ -2,91 +2,317 @@ {% block title %}Terms of Service & Privacy Policy - Alpha One Labs{% endblock %} {% block meta_description %}Alpha One Labs terms of service, teacher payments, refund policy, platform rules, and privacy policy.{% endblock %} {% block content %} -
-

Terms of Service & Privacy Policy

-
-

1. Commission Structure

-

Alpha One Labs operates on a revenue-sharing model where:

- -

2. Teacher Payments

-

To receive payments, teachers must:

- -

3. Platform Rules

-

All users must adhere to the following rules:

- -

4. Course Content

-

Teachers are responsible for:

- -

5. Refund Policy

-

Our refund policy includes:

- -

6. Privacy and Data Protection

-

We are committed to:

- -

6.1 IP Address Collection and Usage

-

For certain features on our platform, we collect and store IP addresses. This includes:

- -

6.2 IP Address Data Processing

-

When we process IP address data, we adhere to the following practices:

- -

6.4 Your Rights Regarding IP Address Data

-

You have the following rights regarding the IP address data we collect:

- -

7. Platform Changes

-

Alpha One Labs reserves the right to:

- -
-

Last Updated: July 6, 2026

-

For questions about these terms or privacy policy, please contact our support team.

+
+
+
+

Terms of Service & Privacy Policy

+

+ Please read these terms carefully before using the Alpha One Labs platform. +

+
+
+ +
+
+ + + + + +
+ + +
+
+
+ +
+

1. Commission Structure

+
+

+ Alpha One Labs operates on a revenue-sharing model where: +

+
    +
  • + + + + Teachers receive 90% of the course and session fees +
  • +
  • + + + + Alpha One Labs retains a 10% commission to cover platform maintenance, payment processing, and support services +
  • +
  • + + + + Payments are processed automatically through Stripe and distributed to teachers' connected accounts +
  • +
+
+ + +
+
+
+ +
+

2. Teacher Payments

+
+

To receive payments, teachers must:

+
    +
  • + 1 + Create and connect a Stripe account +
  • +
  • + 2 + Provide necessary tax information and banking details +
  • +
  • + 3 + Maintain compliance with Stripe's terms of service +
  • +
  • + 4 + Keep their payment information up to date +
  • +
+
+ + +
+
+
+ +
+

3. Platform Rules

+
+

All users must adhere to the following rules:

+
+
+ + Provide accurate and truthful information +
+
+ + Respect intellectual property rights +
+
+ + Maintain professional conduct +
+
+ + Follow content guidelines +
+
+
+ + +
+
+
+ +
+

4. Course Content

+
+

Teachers are responsible for:

+
    +
  • + + Creating and maintaining high-quality course content +
  • +
  • + + Ensuring content accuracy and relevance +
  • +
  • + + Responding to student inquiries in a timely manner +
  • +
  • + + Updating course materials as needed +
  • +
+
+ + +
+
+
+ +
+

5. Refund Policy

+
+

Our refund policy includes:

+
+
+ + 30-day money-back guarantee for course purchases +
+
+ + Pro-rated refunds for subscription-based courses +
+
+ + No refunds for completed individual sessions +
+
+ + Case-by-case evaluation for special circumstances +
+
+
+ + +
+
+
+ +
+

6. Privacy and Data Protection

+
+

We are committed to:

+
    +
  • + + Protecting user data and privacy +
  • +
  • + + Complying with relevant data protection regulations +
  • +
  • + + Securing payment information +
  • +
  • + + Maintaining transparent data practices +
  • +
+ + +
+

6.1 IP Address Collection and Usage

+

For certain features on our platform, we collect and store IP addresses. This includes:

+
    +
  • Feature voting system, where IP addresses are used to prevent duplicate votes from anonymous users
  • +
  • Security monitoring to detect and prevent abuse or unauthorized access
  • +
  • Analytics to understand geographical distribution of our users (in aggregated form only)
  • +
+
+ + +
+

6.2 IP Address Data Processing

+

When we process IP address data, we adhere to the following practices:

+
    +
  • IP addresses are stored securely in our database with appropriate access controls
  • +
  • For feature voting, IP addresses are stored only when a user is not logged in
  • +
  • IP addresses for feature votes are never used for marketing purposes
  • +
  • We do not share IP addresses with third parties except when required by law
  • +
+
+ + +
+

6.3 Your Rights Regarding IP Address Data

+

You have the following rights regarding the IP address data we collect:

+
+
+ +
+ Right to access +

You can request information about what IP address data we store

+
+
+
+ +
+ Right to deletion +

You can request deletion of your IP address data

+
+
+
+ +
+ Right to opt-out +

You can choose not to participate in features that collect IP addresses by creating an account and logging in

+
+
+
+

To exercise these rights, please contact our support team with your request.

+
+
+ + +
+
+
+ +
+

7. Platform Changes

+
+

Alpha One Labs reserves the right to:

+
    +
  • + + Modify these terms with notice to users +
  • +
  • + + Update platform features and functionality +
  • +
  • + + Adjust commission rates with advance notice +
  • +
  • + + Change payment processing methods if necessary +
  • +
+
+ + +
+ +

Questions About These Terms?

+

+ For questions about these terms or privacy policy, please contact our support team. +

+ + Contact Support + +
+ +
+
-
-{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/src/worker.py b/src/worker.py index 1b58009..6f7a9cc 100644 --- a/src/worker.py +++ b/src/worker.py @@ -33,6 +33,7 @@ """ import base64 +import html as _html import datetime import hashlib import hmac as _hmac @@ -6298,11 +6299,75 @@ async def _dispatch(request, env): if path == "/api/notification-preferences" and method == "PATCH": return await api_patch_notification_preferences(request, env) + # Feedback + if path == "/api/feedback" and method == "POST": + return await api_submit_feedback(request, env) + return err("API endpoint not found", 404) return await serve_static(path, env, request) +# Feedback API + +async def api_submit_feedback(request, env): + try: + body = json.loads(await request.text()) + except (json.JSONDecodeError, ValueError): + return err("Invalid JSON", 400) + + if not isinstance(body, dict): + return err("Invalid JSON", 400) + + description = (body.get("description") or "").strip() + if not description: + return err("Feedback description is required", 400) + if len(description) > 5000: + return err("Feedback too long (max 5000 characters)", 400) + + name = (body.get("name") or "Anonymous").strip() or "Anonymous" + email = (body.get("email") or "Not provided").strip() or "Not provided" + + # Send via Mailgun to admin email + admin_email = (getattr(env, "ADMIN_EMAIL", "") or getattr(env, "EMAIL_FROM", "") or "").strip() + if admin_email: + subject = f"[Alpha One Labs] New Feedback from {name}" + safe_name = _html.escape(name) + safe_email = _html.escape(email) + safe_description = _html.escape(description) + html = f""" +

New Feedback Received

+ + + + + +
From{safe_name}
Email{safe_email}
Feedback{safe_description}
+ """ + await _send_email_via_mailgun(admin_email, subject, html, env) + + # Post to Slack if webhook is configured + slack_url = (getattr(env, "SLACK_WEBHOOK_URL", "") or "").strip() + if slack_url: + message = f"*New Feedback*\nFrom: {name}\nEmail: {email}\n\n{description}" + try: + options = to_js( + { + "method": "POST", + "headers": {"Content-Type": "application/json"}, + "body": json.dumps({"text": message}), + }, + dict_converter=js.Object.fromEntries, + ) + resp = await js.fetch(slack_url, options) + if not resp.ok: + print(f"[feedback] Slack webhook returned {resp.status}") + except Exception as e: + print(f"[feedback] Slack webhook delivery failed: {e}") + + return ok({"message": "Thank you for your feedback! We appreciate your input."}) + + async def on_fetch(request, env): try: init_sentry(env)