diff --git a/attached_assets/Pasted--DOCTYPE-html-html-lang-en-head-meta-charset-UTF-8-meta-name-viewport-con-1749993908224_1749993908225.txt b/attached_assets/Pasted--DOCTYPE-html-html-lang-en-head-meta-charset-UTF-8-meta-name-viewport-con-1749993908224_1749993908225.txt new file mode 100644 index 0000000..a332202 --- /dev/null +++ b/attached_assets/Pasted--DOCTYPE-html-html-lang-en-head-meta-charset-UTF-8-meta-name-viewport-con-1749993908224_1749993908225.txt @@ -0,0 +1,152 @@ + + + + + + Privacy Policy - Pilates with Fadia + + + +
+

Privacy Policy

+ +
+ Last Updated: [INSERT DATE] +
+ +

At Pilates with Fadia ("we," "our," or "us"), we are committed to protecting your privacy and personal information. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you visit our website pilateswithfadia.com and use our services.

+ +

1. Information We Collect

+ +

Personal Information

+

We may collect personal information that you voluntarily provide to us, including:

+ + +

Automatically Collected Information

+

When you visit our website, we may automatically collect:

+ + +

2. How We Use Your Information

+

We use your information to:

+ + +

3. Information Sharing and Disclosure

+

We do not sell, trade, or rent your personal information to third parties. We may share your information in the following circumstances:

+ + +

4. Data Security

+

We implement appropriate technical and organizational security measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction. However, no method of transmission over the internet is 100% secure.

+ +

5. Your Rights and Choices

+

You have the right to:

+ + +

6. Cookies and Tracking Technologies

+

We use cookies and similar tracking technologies to enhance your browsing experience. Please refer to our Cookie Policy for detailed information about our use of cookies.

+ +

7. Third-Party Links

+

Our website may contain links to third-party websites. We are not responsible for the privacy practices of these external sites. We encourage you to review their privacy policies.

+ +

8. Children's Privacy

+

Our services are not intended for children under 13. We do not knowingly collect personal information from children under 13. If you are a parent or guardian and believe your child has provided us with personal information, please contact us.

+ +

9. International Data Transfers

+

Your information may be transferred to and processed in countries other than your own. We ensure appropriate safeguards are in place for such transfers.

+ +

10. Data Retention

+

We retain your personal information only as long as necessary to fulfill the purposes outlined in this Privacy Policy or as required by law.

+ +

11. Changes to This Privacy Policy

+

We may update this Privacy Policy from time to time. We will notify you of any material changes by posting the new policy on our website and updating the "Last Updated" date.

+ +

12. Contact Us

+
+

If you have any questions about this Privacy Policy or our privacy practices, please contact us:

+

Pilates with Fadia
+ Email: [INSERT EMAIL]
+ Phone: [INSERT PHONE]
+ Address: [INSERT ADDRESS]
+ Website: pilateswithfadia.com

+
+
+ + \ No newline at end of file diff --git a/client/src/components/photo-gallery.tsx b/client/src/components/photo-gallery.tsx index d336e92..3bf4518 100644 --- a/client/src/components/photo-gallery.tsx +++ b/client/src/components/photo-gallery.tsx @@ -1,4 +1,25 @@ +import { useQuery } from "@tanstack/react-query"; +import { useState } from "react"; + +interface InstagramPost { + id: string; + media_type: 'IMAGE' | 'VIDEO' | 'CAROUSEL_ALBUM'; + media_url: string; + permalink: string; + caption?: string; + timestamp: string; +} + export function PhotoGallery() { + const [showAllPosts, setShowAllPosts] = useState(false); + + const { data: posts, isLoading, error } = useQuery({ + queryKey: ['/api/instagram-feed'], + staleTime: 1000 * 60 * 30, // Cache for 30 minutes + }); + + const displayPosts = showAllPosts ? posts : posts?.slice(0, 6); + return (
@@ -10,29 +31,94 @@ export function PhotoGallery() {
- {/* Instagram Feed Embed */} -
-
- -

Follow me on Instagram for daily inspiration, movement tips, and behind-the-scenes content from my classes.

+ {isLoading && ( +
+ {[1, 2, 3, 4, 5, 6].map((index) => ( +
+ ))}
- - - - {/* Instagram embed placeholder - this would typically be replaced with actual Instagram embed code */} -
+ )} + + {error && ( +
+
+ +

Follow me on Instagram for daily inspiration, movement tips, and behind-the-scenes content from my classes.

+ + + Visit Instagram + +
+
+ )} + + {posts && posts.length > 0 && ( +
- {[1, 2, 3, 4, 5, 6].map((index) => ( -
- -
+ {displayPosts?.map((post: InstagramPost) => ( + + {post.media_type === 'VIDEO' ? ( +
+
+ ) : ( + {post.caption + )} +
))}
-

- Instagram feed will display here. For the best experience, visit my Instagram profile directly. -

+ + {posts.length > 6 && ( +
+ +
+ )} + +
-
+ )}
diff --git a/client/src/pages/privacy-policy-page.tsx b/client/src/pages/privacy-policy-page.tsx new file mode 100644 index 0000000..c391d3a --- /dev/null +++ b/client/src/pages/privacy-policy-page.tsx @@ -0,0 +1,121 @@ +export default function PrivacyPolicyPage() { + return ( +
+
+
+

+ Privacy Policy +

+ +
+ Last Updated: December 2024 +
+ +

+ At Pilates with Fadia ("we," "our," or "us"), we are committed to protecting your privacy and personal information. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you visit our website pilateswithfadia.com and use our services. +

+ +

1. Information We Collect

+ +

Personal Information

+

We may collect personal information that you voluntarily provide to us, including:

+
    +
  • Name and contact information (email address, phone number, mailing address)
  • +
  • Account credentials (username and password)
  • +
  • Payment information (processed securely through third-party payment processors)
  • +
  • Health and fitness information relevant to your Pilates practice
  • +
  • Class preferences and booking history
  • +
  • Communication preferences
  • +
+ +

Automatically Collected Information

+

When you visit our website, we may automatically collect:

+
    +
  • IP address and location data
  • +
  • Browser type and version
  • +
  • Device information
  • +
  • Pages visited and time spent on our site
  • +
  • Referring website information
  • +
+ +

2. How We Use Your Information

+

We use your information to:

+
    +
  • Provide and improve our Pilates services and classes
  • +
  • Process bookings and payments
  • +
  • Send class schedules, updates, and important notifications
  • +
  • Respond to your inquiries and provide customer support
  • +
  • Personalize your experience and class recommendations
  • +
  • Send marketing communications (with your consent)
  • +
  • Ensure the safety and security of our services
  • +
  • Comply with legal obligations
  • +
+ +

3. Information Sharing and Disclosure

+

We do not sell, trade, or rent your personal information to third parties. We may share your information in the following circumstances:

+
    +
  • Service Providers: With trusted third-party service providers who assist us in operating our website and providing services
  • +
  • Legal Requirements: When required by law or to protect our rights and safety
  • +
  • Business Transfers: In connection with a merger, acquisition, or sale of assets
  • +
  • Consent: With your explicit consent for specific purposes
  • +
+ +

4. Data Security

+

+ We implement appropriate technical and organizational security measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction. However, no method of transmission over the internet is 100% secure. +

+ +

5. Your Rights and Choices

+

You have the right to:

+
    +
  • Access, update, or delete your personal information
  • +
  • Opt-out of marketing communications
  • +
  • Request data portability
  • +
  • Object to certain data processing activities
  • +
  • Withdraw consent at any time
  • +
+ +

6. Cookies and Tracking Technologies

+

+ We use cookies and similar tracking technologies to enhance your browsing experience. Please refer to our Cookie Policy for detailed information about our use of cookies. +

+ +

7. Third-Party Links

+

+ Our website may contain links to third-party websites. We are not responsible for the privacy practices of these external sites. We encourage you to review their privacy policies. +

+ +

8. Children's Privacy

+

+ Our services are not intended for children under 13. We do not knowingly collect personal information from children under 13. If you are a parent or guardian and believe your child has provided us with personal information, please contact us. +

+ +

9. International Data Transfers

+

+ Your information may be transferred to and processed in countries other than your own. We ensure appropriate safeguards are in place for such transfers. +

+ +

10. Data Retention

+

+ We retain your personal information only as long as necessary to fulfill the purposes outlined in this Privacy Policy or as required by law. +

+ +

11. Changes to This Privacy Policy

+

+ We may update this Privacy Policy from time to time. We will notify you of any material changes by posting the new policy on our website and updating the "Last Updated" date. +

+ +

12. Contact Us

+
+

If you have any questions about this Privacy Policy or our privacy practices, please contact us:

+
+

Pilates with Fadia

+

Email: hello@pilateswithfadia.com

+

Website: pilateswithfadia.com

+
+
+
+
+
+ ); +} \ No newline at end of file diff --git a/server/routes.ts b/server/routes.ts index 8d46807..9acc19f 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -143,6 +143,44 @@ export async function registerRoutes(app: Express): Promise { } }); + // Instagram Feed + app.get("/api/instagram-feed", async (_req, res) => { + try { + const instagramAccessToken = process.env.INSTAGRAM_ACCESS_TOKEN; + + if (!instagramAccessToken) { + return res.status(500).json({ + message: "Instagram access token not configured", + error: "INSTAGRAM_ACCESS_TOKEN environment variable is required" + }); + } + + // Fetch recent posts from Instagram Basic Display API + const response = await fetch( + `https://graph.instagram.com/me/media?fields=id,media_type,media_url,permalink,caption,timestamp&access_token=${instagramAccessToken}` + ); + + if (!response.ok) { + throw new Error(`Instagram API error: ${response.status} ${response.statusText}`); + } + + const data = await response.json(); + + // Filter out only images and videos, exclude carousels for simplicity + const posts = data.data?.filter((post: any) => + post.media_type === 'IMAGE' || post.media_type === 'VIDEO' + ).slice(0, 12) || []; // Limit to 12 most recent posts + + res.json(posts); + } catch (error) { + console.error('Instagram API error:', error); + res.status(500).json({ + message: "Failed to fetch Instagram posts", + error: error instanceof Error ? error.message : "Unknown error" + }); + } + }); + const httpServer = createServer(app); return httpServer; }