As a professional wedding photographer based in Melbourne, my style is to capture the true essence and authentic emotions of your wedding day. I focus on the natural, candid photographic style, coupled with a meticulous attention to detail and a personalised service, to expertly preserve your distinctive narrative and aesthetic. This approach ensures the creation of timeless, genuine memories that you will treasure for a lifetime.

import React, { useState, useEffect } from 'react'; import { initializeApp } from 'firebase/app'; import { getAuth, signInWithCustomToken, signInAnonymously, onAuthStateChanged } from 'firebase/auth'; import { getFirestore, collection, query, where, getDocs } from 'firebase/firestore'; // IMPORTANT: Do NOT modify these variables. They are provided by the environment. const appId = typeof __app_id !== 'undefined' ? __app_id : 'default-app-id'; const firebaseConfig = JSON.parse(typeof __firebase_config !== 'undefined' ? __firebase_config : '{}'); const initialAuthToken = typeof __initial_auth_token !== 'undefined' ? __initial_auth_token : ''; // Initialize Firebase const app = initializeApp(firebaseConfig); const auth = getAuth(app); const db = getFirestore(app); // App component export default function App() { const [userId, setUserId] = useState(null); const [galleries, setGalleries] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); // Custom state for the message box const [message, setMessage] = useState(''); const [isMessageVisible, setIsMessageVisible] = useState(false); // Function to show a custom message box const showMessage = (text) => { setMessage(text); setIsMessageVisible(true); setTimeout(() => { setIsMessageVisible(false); }, 3000); }; // UseEffect for Firebase authentication and data fetching useEffect(() => { let unsubscribe = () => {}; const setupFirebase = async () => { try { // Sign in with custom token if available, otherwise sign in anonymously if (initialAuthToken) { await signInWithCustomToken(auth, initialAuthToken); } else { await signInAnonymously(auth); } // Listen for authentication state changes unsubscribe = onAuthStateChanged(auth, async (user) => { if (user) { setUserId(user.uid); // Fetch data for the authenticated user await fetchGalleries(user.uid); } else { // User is signed out console.log("No user is signed in."); setUserId(null); setGalleries([]); setIsLoading(false); } }); } catch (e) { console.error("Error setting up Firebase:", e); setError("Failed to initialize the app. Please try again."); setIsLoading(false); } }; const fetchGalleries = async (uid) => { try { setIsLoading(true); // The collection path is /artifacts/{appId}/users/{userId}/galleries const galleriesCollectionRef = collection(db, 'artifacts', appId, 'users', uid, 'galleries'); const q = query(galleriesCollectionRef); const querySnapshot = await getDocs(q); const fetchedGalleries = []; querySnapshot.forEach((doc) => { fetchedGalleries.push({ id: doc.id, ...doc.data() }); }); setGalleries(fetchedGalleries); setIsLoading(false); } catch (e) { console.error("Error fetching galleries:", e); setError("Failed to fetch your galleries. Please try again later."); setIsLoading(false); } }; setupFirebase(); // Cleanup the listener on unmount return () => unsubscribe(); }, []); // Handle a click on the download button const handleDownloadClick = (url) => { if (url) { // Create a temporary link element to trigger the download const link = document.createElement('a'); link.href = url; link.download = url.substring(url.lastIndexOf('/') + 1); // Suggest a filename link.target = '_blank'; // Open in a new tab to avoid issues document.body.appendChild(link); link.click(); document.body.removeChild(link); showMessage("Your download has started."); } else { showMessage("Download link not available."); } }; // Helper function to render content based on state const renderContent = () => { if (isLoading) { return (

Loading your galleries...

); } if (error) { return (

{error}

); } if (galleries.length === 0) { return (

No galleries found for this account.

); } return ( ); }; return (
{/* Message box for user feedback */}
{message}
{/* Header */}
{/* Main Content Section */}

Client Portal

{userId && (

You are signed in as: {userId}

)}

Welcome! Below you will find your beautifully curated photo galleries.

{renderContent()}
{/* Footer */}

© 2024 Photography Studio. All rights reserved.

); }

2 Hour Coverage

Pre event consultation100 - 200 Edited Photos

4 Hour Coverage

Pre event consultation200 - 300 Edited Photos

6 Hour Coverage

Pre event consultation400 - 500 Edited Photos

8 Hour Coverage

Pre event consultation600 - 1000 Edited Photos

Contact Us

Our Work

Melbourne Wedding and Events Photographer

J & MMont Du Soleil

Melbourne Wedding and Events Photographer

H & MOlinda Tea House

Melbourne Wedding and Events Photographer

E & CQuatta Quatta

Wedding Request Form

Thank you

We will contact you within 24 hours

Thank you

We have received your request form.
If you have any questions, please contact us at [email protected]

Review

Choose a star to rate your experience. The best rating is on the right, the worst is on the left.

Review

Terms & Conditions

Thank you for choosing Mahwen Photography to capture your special day! These Terms & Conditions (T&Cs) outline the agreement between Mahwen Photography (ABN 85 881 538 467) and the client ("you") for our service (wedding photographer). By booking our service, you acknowledge you've read, understood, and agreed to these T&Cs.

Deposits & Payments

Booking Confirmation: We require a 30% non-refundable booking fee within Seven days of receiving our invoice. This secures your date and wedding photographer.
Full Payment: The full invoice amount must be paid via electronic bank transfer or another agreed method 30 days before the event. We reserve the right to cancel if full payment is not received.

Cancellations & Changes

More than 30 days before the scheduled event: 60% of the total invoice amount will be refunded.
Less than 30 days before the scheduled event: The amount already paid is non-refundable.
Rescheduling (Subject to Availability)
More than 30 days before the scheduled event: Your booking fee will be held as a credit towards the new date, and an additional deposit of 20% of the original total invoice amount will be required which will be credited towards the new date.
Less than 30 days before the scheduled event: Your booking fee will be held as a credit towards the new date, and an additional deposit of 40% of the original total invoice amount will be required which will be credited towards the new date.
Please note that only one (1) date change is permitted. Should you need to reschedule a second time, the initial booking fee and any subsequent rescheduling deposits will be forfeited.

Event Duration

Agreed-upon service times are final after deposit processing. Requests to shorten the duration won't reduce the fee. Extensions beyond the agreed time require our wedding photographer's availability and will incur additional charges. Confirmed extensions require full payment of the additional invoice. The number of photos delivered will vary by the agreed upon event duration. We will capture a comprehensive range of edited images for your special day. The Client agrees to provide a meal for the content creator during the event, packages from six (6) hours or more.

Our Liability

Our maximum liability is limited to the invoice amount you paid. We are not liable for any indirect or consequential damages arising from non-performance or any other T&C breach.

Collaboration with Vendors

To ensure a smooth event, we may need to communicate directly with your musicians, content creators, videographers & suppliers.

Content Delivery

Lead Time: All agreed-upon edited photos captured on the day will be delivered within 4 weeks of the event date. Mahwen Photography will not post the photos that were taken on all their social media platforms or their website without the client’s consent.

Artistic Style & Editing

You acknowledge our creative discretion regarding services (posing, lighting, editing). You've familiarised yourself with our portfolio and understand our artistic style. We reserve the right to make creative choices within this agreement. You agree not to reject social media content based on style or composition. You hire us for our expertise and allow us to edit the photos as deemed appropriate and consistent with our past work. Specific shots can't be guaranteed due to the live nature of the event, but we'll make every effort to try and capture the requested shots. We curate the final photos and reserve the right to choose ideal images for delivery.

Photography Service

Mahwen Photography is committed to delivering high-quality edited photography that captures the essence and emotion of your special day using the following equipment: Sony A7R V, Sony A7III, selected camera lenses and lighting within the agreed upon period.

Additional Notes

We may need to adjust prices due to unforeseen circumstances or client requests (parking, induction fees, additional time requirements).We have a zero-tolerance policy for violent, aggressive, or abusive behaviour. We reserve the right to terminate the event if we feel our staff or equipment are at risk. No refund will be provided in such cases.You agree to hold us harmless for any harm caused to our employees or equipment by anyone at the event venue.Mahwen Photography will retain all edited images captured from your event for a period of 12 months (one year) from the date of the delivered edited images. After this period, all edited images may be permanently deleted from our storage system. During the retention period, you may request access to your edited images; however, it is your responsibility to ensure you have saved the edited images delivered to you within the 4 week delivery window.While our final edited images represent the artistic vision and quality we guarantee, we understand you may inquire about the original Raw (unprocessed) files. Mahwen Photography retains the sole right to refuse requests for Raw photos, as these files require specialized software and technical expertise to view and do not reflect our finished work. Our editing process is integral to our brand and ensures the delivery of high-quality images consistent with our portfolio.We collect and use your information in accordance with the Privacy Act 1988 (and its amendments) for specific purposes like engaging solicitors or debt collectors.