diff --git a/.gitea/OPEN_PR_TO_STAGING.md b/.gitea/OPEN_PR_TO_STAGING.md new file mode 100644 index 0000000..8e0cb89 --- /dev/null +++ b/.gitea/OPEN_PR_TO_STAGING.md @@ -0,0 +1,24 @@ +# Open Pull Request: feat/storefront → staging + +## 1. Push your branch (if needed) +```bash +git push gitea feat/storefront +``` + +## 2. Create the pull request in Gitea + +Open this URL in your browser (replace `GITEA_BASE_URL` with your Gitea UI base, e.g. `https://72.61.144.167:3000` or your actual Gitea domain): + +``` +GITEA_BASE_URL/admin/the-pet-loft/compare/staging...feat/storefront +``` + +Or in Gitea UI: +1. Go to **admin/the-pet-loft** +2. Click **Pull requests** → **New pull request** +3. Set **Base** = `staging`, **Head** = `feat/storefront` +4. Use the pre-filled description from `.gitea/PULL_REQUEST_TEMPLATE.md` if needed +5. Create the pull request + +## 3. After CI passes +Merge the PR into `staging` from the Gitea PR page. diff --git a/.gitea/PULL_REQUEST_TEMPLATE.md b/.gitea/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..25c5cb8 --- /dev/null +++ b/.gitea/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,14 @@ +## Summary +Merge `feat/storefront` into `staging` to bring storefront and support/legal updates onto the staging branch. + +## Changes (feat/storefront → staging) +- **Returns & refunds**: Support returns page, FAQ, and General Terms updated so customer bears return postage cost (deducted from refund). +- **Storefront**: Returns policy page content aligned with legal (14-day withdrawal, return address, exclusions). +- **CI**: Branch pattern in workflow updated. + +## Checklist +- [ ] CI (lint, typecheck, test) passes on `feat/storefront` +- [ ] No merge conflicts with `staging` + +## How to merge +After approval, merge this PR into `staging` (merge commit or squash as per your workflow). diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index c57277f..39d2dbe 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -3,7 +3,7 @@ name: CI on: push: branches: - - feat #"**" # TODO: change to "**" after testing + - "**" # TODO: change to "**" after testing jobs: ci: diff --git a/apps/storefront/content/faq/account-and-security.md b/apps/storefront/content/faq/account-and-security.md new file mode 100644 index 0000000..fe2c305 --- /dev/null +++ b/apps/storefront/content/faq/account-and-security.md @@ -0,0 +1,11 @@ +--- +title: Account & security +subtitle: Sign-in, password reset, and account access. +order: 4 +--- + +### How do I reset my password? +If you signed up with email and password, use the **Forgot password** link on the sign-in page. You will receive an email with instructions to reset your password. If you signed up with Google or another provider, sign in using that same option; there is no separate password to reset. + +### Where can I see my order history? +Sign in and go to [Order History](/account/orders). From there you can view your orders, see tracking information, and request returns where applicable. diff --git a/apps/storefront/content/faq/contact.md b/apps/storefront/content/faq/contact.md new file mode 100644 index 0000000..c324425 --- /dev/null +++ b/apps/storefront/content/faq/contact.md @@ -0,0 +1,14 @@ +--- +title: Contact +subtitle: How to get in touch and how we handle complaints. +order: 5 +--- + +### How can I contact you? +You can reach us by filling in our [Contact Us](/support/contact-us) form or by emailing **service@thepetloft.co.uk**. We will respond as soon as we can. + +### What topic should I choose on the contact form? +Choose **Orders** for questions about delivery, returns, or a specific order. Choose **Support** for general questions about our products or services. Use **Products** for product-related inquiries and **Other** for anything else. + +### How do I make a complaint? +You can make a complaint by emailing **service@thepetloft.co.uk** or by using our [Contact Us](/support/contact-us) form. Please include your order number if your complaint relates to an order. We will acknowledge your complaint and work to resolve it. diff --git a/apps/storefront/content/faq/ordering-and-checkout.md b/apps/storefront/content/faq/ordering-and-checkout.md new file mode 100644 index 0000000..933c54c --- /dev/null +++ b/apps/storefront/content/faq/ordering-and-checkout.md @@ -0,0 +1,17 @@ +--- +title: Ordering & checkout +subtitle: Questions about placing orders and payment. +order: 1 +--- + +### How do I place an order? +Browse our shop, add items to your cart, and go to checkout. You must sign in or create an account to complete your order. Follow the steps to enter your shipping address, review your order, and pay securely. + +### Do I need an account to checkout? +Yes. You can browse and add items to your cart as a guest, but you must sign in or create an account to complete checkout. + +### What payment methods do you accept? +We accept major cards and digital wallets including Visa, Mastercard, Discover, Apple Pay, Google Pay, Link, Revolut Pay, Billie, Cartes, and Klarna. The options available at checkout may vary. + +### Is my payment information secure? +Yes. We process payments through Stripe. We do not store your full card number on our servers. Your payment details are handled securely by our payment provider. diff --git a/apps/storefront/content/faq/returns.md b/apps/storefront/content/faq/returns.md new file mode 100644 index 0000000..5098b49 --- /dev/null +++ b/apps/storefront/content/faq/returns.md @@ -0,0 +1,26 @@ +--- +title: Returns +subtitle: Returns, refunds, and non-returnable items. +order: 3 +--- + +### How do I return an item? +You have the right to withdraw from your order within **14 days** of receiving the goods. To start a return, inform us of your decision by email to [service@thepetloft.co.uk](mailto:service@thepetloft.co.uk) or by post to The Pet Loft UK, Customer Services, 39a Walton Road, Woking, GU21 5DL. You can use the model withdrawal form on our [Returns & Refunds Policy](/support/returns) page, but it is not required. We will confirm next steps. You will incur the cost of returning the product; this amount will be deducted from your refund. Send the item back to **Fanaaka Ltd**, 39a Walton Road, Woking, GU21 5DL within 14 days of telling us you are withdrawing. For full details, see our [Returns & Refunds Policy](/support/returns). + +### What items cannot be returned? +The right of withdrawal does not apply to: goods made to your order or clearly tailored to your personal requirements; goods that may perish quickly or whose use-by date would expire rapidly; goods not suitable for return for reasons of health or hygiene if their seal has been broken after delivery; and goods that were, after delivery, inseparably mixed with other goods. If you are unsure whether your item can be returned, please [contact us](/support/contact-us) before sending it back. + +### My item is wrong or damaged. What do I do? +Please [contact us](/support/contact-us) as soon as possible with your order number and a description of the issue (and photos if helpful). We will arrange for the item to be returned and will cover return postage where the error or damage is on our side. For goods damaged in transit, notifying us promptly also helps us claim from the carrier. + +### When will I receive my refund? +After we receive your returned item (or evidence that you have sent it back), we will reimburse you without undue delay and in any event within **14 days**. The cost of return postage will be deducted from your refund amount. We use the same payment method you used for the order. Refunds may take a few extra business days to show on your bank or card statement. + +### Where do I send my return? +Send the goods to **Fanaaka Ltd**, 39a Walton Road, Woking, GU21 5DL. Please send them back within 14 days of informing us of your withdrawal. The deadline is met if you dispatch the goods before the 14-day period has expired. + +### Do I have to pay for return postage? +Yes. The customer incurs the cost of returning the product, and this amount will be deducted from the refund. You are also responsible for any loss in value caused by handling the item beyond what is needed to check its nature, characteristics, and functioning. + +### How long do I have to request a return? +You have **14 days** from the day you (or someone you nominate, other than the carrier) receive the goods to inform us of your decision to withdraw. Your communication must reach us before the 14-day period has expired. You must then send the goods back within 14 days of telling us you are withdrawing. diff --git a/apps/storefront/content/faq/shipping.md b/apps/storefront/content/faq/shipping.md new file mode 100644 index 0000000..9a667e9 --- /dev/null +++ b/apps/storefront/content/faq/shipping.md @@ -0,0 +1,17 @@ +--- +title: Shipping +subtitle: Delivery times, costs, and tracking. +order: 2 +--- + +### Do you ship to my country? +We currently ship only within the United Kingdom. We do not offer international shipping. + +### How much is delivery? +Free standard delivery is applied automatically at checkout on all orders over £40. Orders under £40 may incur a delivery charge, which will be shown before you pay. + +### How long does delivery take? +Standard delivery typically takes 3–5 working days for UK mainland. We partner with trusted carriers including DPD and Evri. Delivery times are estimates and may vary during peak periods. + +### How can I track my order? +Tracking information is available on your order detail page when signed in. Go to your [Order History](/account/orders), select the order, and view the tracking details there. diff --git a/apps/storefront/content/legal/.gitkeep b/apps/storefront/content/legal/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/storefront/content/legal/data-protection.md b/apps/storefront/content/legal/data-protection.md new file mode 100644 index 0000000..84ce5be --- /dev/null +++ b/apps/storefront/content/legal/data-protection.md @@ -0,0 +1,25 @@ +--- +title: Data Protection +description: The Pet Loft data protection and GDPR information. +lastUpdated: March 2025 +--- + +## Data controller + +The Pet Loft is the data controller for the personal data we process in connection with our website and orders. + +## Legal basis for processing + +We process your data where necessary to perform our contract with you (e.g. fulfilling orders), where required by law, and where we have a legitimate interest (e.g. improving our services), in line with applicable data protection law. + +## Retention + +We retain your data only for as long as necessary to fulfil the purposes set out in our Privacy Policy and to comply with legal obligations. + +## International transfers + +If we transfer your data outside the UK or EEA, we ensure appropriate safeguards are in place as required by law. + +## Complaints + +You have the right to lodge a complaint with a supervisory authority if you believe our processing of your data infringes applicable law. diff --git a/apps/storefront/content/legal/general-terms-and-conditions.md b/apps/storefront/content/legal/general-terms-and-conditions.md new file mode 100644 index 0000000..9b12ec7 --- /dev/null +++ b/apps/storefront/content/legal/general-terms-and-conditions.md @@ -0,0 +1,286 @@ +# General Terms and Conditions + +**The Pet Loft UK** | A division of Fanaaka Ltd, 39a Walton Road, GU21, United Kingdom +**Website:** [www.thepetloft.co.uk](http://www.thepetloft.co.uk) +**Last updated:** 02 February 2026 + +--- + +## 1. Scope + +These General Terms and Conditions of Business apply to all orders and deliveries between **The Pet Loft UK**, a division of Fanaaka Ltd, 39a Walton Road, GU21, United Kingdom (hereinafter: **"Pet Loft"**) and its customers via the online shop [www.thepetloft.co.uk](http://www.thepetloft.co.uk). + +--- + +## 2. Order Process, Entry into a Contract, Quantity Limitation & Commercial Resale + +### 2.1 Order Process + +The Pet Loft offers its customers a comprehensive range for all matters concerning domestic pets. By clicking on the products or product descriptions, the customer navigates to the product details — e.g. details regarding the product design, size, colour, or flavour. The product is placed in the virtual shopping basket/cart by entering the requested quantity and clicking on the shopping basket icon. + +By clicking on the **"Shopping Cart"** button, displayed in the top right-hand corner of the online shop, the customer navigates to an overview page and can at any time check the goods in the virtual shopping basket and, where necessary, make changes. + +If a customer does not wish to purchase additional goods, they can continue via the **"To Order/Checkout"** button. Registered customers can enter their usernames and passwords here to automatically use their saved information for the order. Alternatively, the customer can register as a new customer and set up a customer account, or continue the purchase without setting up a customer account. In such a case, the customer must enter their address and invoice information on the following page. + +By further clicking on the **"Continue"** button, the customer reaches the penultimate order stage — **"Overview"**. The customer has access to an overview of the order here, with details of the price (including the statutory VAT) and details of the delivery service and costs. + +The order is placed by clicking on the **"Buy"** button. This constitutes a binding offer. + +The Pet Loft does not charge any fees for the use of remote communication systems, but the customer may incur the usual costs associated with the use of these services from third parties (e.g. mobile operator, internet provider). + +### 2.2 Entry into a Contract + +**a.** The goods offered in the shop are sold exclusively to non-commercial individuals — i.e. only to consumers who conclude the legal transaction for purposes that can be attributed neither to their commercial nor to their independent professional activity. The offers appearing on our website [www.thepetloft.co.uk](http://www.thepetloft.co.uk) are therefore not aimed at businesses. Businesses are natural or legal persons, or partnerships with legal capacity, who, when concluding a legal transaction, act in the exercise of their commercial or self-employed professional activity. + +**b.** The images of the range in the online shop are intended as an illustration and do not constitute binding offers for sale. By completing the order process by clicking on the **"Buy"** button, the customer makes a binding offer to enter into a purchase contract. The customer thereupon receives an automated confirmation of receipt of order by email (**order confirmation**). This order confirmation does not constitute acceptance of the offer. The contract with The Pet Loft is only concluded when The Pet Loft sends the ordered product to the customer and the shipping is confirmed by email (**shipping confirmation**). + +**c.** Notwithstanding clause 2.2(b), if the customer chooses to pay in advance, a contract is already concluded when The Pet Loft sends the payment information. This payment information will be sent to the customer within **24 hours** of submitting the order. The order confirmation does not constitute payment information. In the case of payment in advance, the invoice amount shall be due upon receipt of the payment information and shall be paid within **7 days** of receipt by bank transfer to one of the accounts listed under clause 8.1(b). Receipt of the invoice amount on our account is decisive for compliance with the payment deadline. Should no payment be recorded on one of the accounts specified under clause 8.1(b) after 7 days, the customer's order will be automatically cancelled. + +**d.** The contract language is **English**. + +### 2.3 Contract Text + +The text of the contract will be stored by us until the order has been processed in full, after which it will be archived in accordance with tax and commercial law. Upon receipt of the order by The Pet Loft, the purchaser will receive a separate confirmation email containing the essential contents of the contract, including the General Terms and Conditions valid at the time of the contract. If you lose your documents relating to your orders, please contact us — we will be happy to send you a copy of your order data. + +### 2.4 Quantity Limitation, Maximum Order Value & Commercial Resale + +The offered goods are sold in customary domestic quantities only, and only to persons of full age. The **commercial resale** of goods is not permitted. The Pet Loft reserves the right not to accept contractual offers that appear to be made for the purpose of the commercial resale of goods. + +--- + +## 3. Prices and Shipping Charges + +All prices include **statutory VAT** and other price components, and are exclusive of any shipping costs. + +We deliver within the **United Kingdom only**. + +If you order products from The Pet Loft for delivery outside the EU, you may be subject to import duties and taxes, which will be levied once the package reaches the specified destination. Any additional charges for customs clearance must be borne by you. We have no control over these charges. Customs regulations vary widely from country to country, so you should contact your local customs office for more information. + +--- + +## 4. Delivery + +Deliveries are only made within the **United Kingdom**. + +Unless stated otherwise in the offer or product details, delivery takes place within **1 to 3 business days**. The deadline for delivery begins on the day after the contract is concluded, except for payment in advance — in that case, the deadline begins on the day after the payment order has been issued. If the last day of the deadline falls on a Saturday, Sunday, or a public holiday recognised by the state at the place of delivery, the deadline is automatically extended to the next working day. + +In the event that some of the ordered products are not in stock, The Pet Loft shall be entitled to provide **partial deliveries** at its own cost, provided this is acceptable to the customer. + +In the event that The Pet Loft is unable to deliver the ordered product because it is not supplied by its own suppliers — and without culpability on the part of The Pet Loft — The Pet Loft may withdraw from the contract. In such a case, The Pet Loft shall inform the customer without delay and propose a comparable product. If a comparable product is not available, or if the customer does not wish to have that product delivered, The Pet Loft shall, without delay, reimburse any payments made by the customer. Deliveries are free of customs duties within the EU. In the case of delivery to countries outside the EU, customs duties, taxes, and other applicable levies shall be borne by the customer. + +In the event that supplied products are damaged in transit, The Pet Loft customer service is to be contacted as soon as possible. This enables The Pet Loft to lodge a complaint with the carrier or transport insurer regarding the damage. Failure by the customer to provide notification of transport damage shall not affect the customer's statutory guarantee rights in any way. + +In order to fulfil customer orders, The Pet Loft needs to pass on the customer's email address and, if available, a contact phone number to the delivery company authorised to deliver the goods. This forms part of the contract with The Pet Loft. The customer does not have the right to object to this. For further information, please see our **Data Protection** page. + +--- + +## 5. Retention of Title + +The goods shall remain the **property of The Pet Loft** until payment in full. Prior to the passing of ownership, pledging, ownership transfer by way of security, processing, or redesigning are not permitted without approval from The Pet Loft. + +--- + +## 6. Right of Withdrawal + +Consumers have a statutory right of withdrawal when concluding a distance selling contract. The Pet Loft provides the following information in accordance with the statutory model. A consumer is any natural person who enters into a legal transaction for purposes that are predominantly neither commercial nor self-employed. If customers have any further questions about cancellations, they can contact The Pet Loft customer service. + +### Instructions on Withdrawal + +#### Right of Withdrawal + +You have the right to **withdraw from this contract within 14 days** without giving any reason. + +The withdrawal period will expire after **14 days** from the day on which you acquire, or a third party (other than the carrier and as indicated by you), acquires physical possession of the goods. + +To exercise the right of withdrawal, you must inform us at: + +> **The Pet Loft UK**, Customer Services, 39a Walton Road, Woking, GU21 5DL +> Email: [service@thepetloft.co.uk](mailto:service@thepetloft.co.uk) + +of your decision to withdraw from this contract by an unequivocal statement (e.g. a letter sent by post or email). You may use the attached model withdrawal form, but it is not obligatory. + +To meet the withdrawal deadline, it is sufficient for you to send your communication concerning your exercise of the right of withdrawal **before** the withdrawal period has expired. + +#### Effects of Withdrawal + +If you withdraw from this contract, we shall reimburse to you **all payments received** from you, including the costs of delivery (with the exception of supplementary costs resulting from your choice of a type of delivery other than the least expensive type of standard delivery offered by us), without undue delay and in any event not later than **14 days** from the day on which we are informed about your decision to withdraw from this contract. + +The **cost of returning the goods is borne by you** and will be **deducted from the refund amount**. We will carry out such reimbursement using **the same means of payment** as you used for the initial transaction, unless you have expressly agreed otherwise. We may withhold reimbursement until we have received the goods back, or you have supplied evidence of having sent back the goods, whichever is the earliest. + +#### Return Address + +Please send the goods back to: + +> **Fanaaka Ltd**, 39a Walton Road, Woking, GU21 5DL + +without undue delay and in any event not later than **14 days** from the day on which you communicate your withdrawal from this contract to us. The deadline is met if you send back the goods before the 14-day period has expired. + +**You incur the cost of returning the goods; this amount will be deducted from your refund.** You are only liable for any diminished value of the goods resulting from handling beyond what is necessary to establish the nature, characteristics, and functioning of the goods. + +--- + +### Exclusion of the Right of Withdrawal + +The right of withdrawal does **not** apply in the event of delivery of: + +- Goods that are not pre-produced and for which an individual selection or determination by the consumer is authoritative for their manufacture, or goods that are clearly tailored to the consumer's personal requirements. +- Goods that may perish quickly or whose use-by date would expire rapidly. +- Goods that are not suitable for return for reasons of health protection or hygiene, if their seal has been broken after delivery. +- Goods that were, after delivery, inseparably mixed with other goods. + +--- + +### Model Withdrawal Form + +*(Should you wish to cancel your contract with The Pet Loft, please complete this form and return it to:)* + +**To:** The Pet Loft UK, Customer Service, 39a Walton Road, Woking, GU21 5DL +**Email:** [service@thepetloft.co.uk](mailto:service@thepetloft.co.uk) + +I/We (\*) hereby give notice that I/We (\*) withdraw from my/our (\*) contract of sale of the following goods (\*) / for the provision of the following service (\*): + +- **Ordered on (\*):** _______________ +- **Received on (\*):** _______________ +- **Name of consumer(s):** _______________ +- **Address of consumer(s):** _______________ +- **Signature of consumer(s):** _______________ *(only if this form is submitted on paper)* +- **Date:** _______________ + +*(\*) Delete as appropriate.* + +--- + +## 7. Guarantee and Liability + +The **statutory guarantee provisions** apply. + +**Veterinary diet feed** should only be used where recommended and under regular monitoring by a veterinarian. The veterinarian should be visited regularly (every 6 months) during the feeding period for check-up examinations, and without delay in the event of any deterioration in the domestic pet's condition. The Pet Loft is not liable for the consequences of inappropriate or unnecessary use of veterinary diet feed. + +**Medicines** should only be used as recommended and under regular supervision by the family veterinarian. The family veterinarian should be consulted regularly during use for check-ups, and immediately if the pet's health deteriorates. The Pet Loft accepts no liability for the consequences of improper or medically undeclared use of medicines. + +--- + +## 8. Payment Methods, Vouchers, Default Interest & Invoices + +### 8.1 Payment Methods + +We offer the following payment options: + +- **a. Credit and/or debit card** +- **b. Payment in advance** +- **c. PayPal** +- **d. Apple Pay** + +We reserve the right, for each order and in individual cases, or depending on the delivery method selected by the customer, not to offer certain payment methods or to accept only certain payment methods, and to refer to alternative payment methods. **Payment by cash or cheque is not possible**, and The Pet Loft is not liable for any loss in such cases. + +#### a. Payment by Credit Card + +If payment is made by credit card, the amount will be debited within **one week** after the goods have been dispatched. We accept **MasterCard, Visa, Diners Club, and American Express**. + +#### b. Payment in Advance + +If the customer wishes to pay in advance, the invoice amount is to be transferred to one of the accounts listed below within **7 days** of receipt of the payment information. The goods will only be dispatched **after receipt of payment**. If full payment is not received within seven days of the payment information being sent, the order will be cancelled. + +**Our bank details:** + +| Field | Details | +|---|---| +| Account name | Fanaaka Ltd | +| Sort code | 23-11-85 | +| Account number | 20952130 | + +#### c. Payment via PayPal + +You pay directly via your PayPal account. After submitting your order, you will be redirected to PayPal to authorise the order value. As soon as our PayPal account has been notified of your authorisation, shipment will take place — depending on the delivery time indicated for the item. Your PayPal account will be debited with the actual invoice amount (after deduction of any discounts, gift vouchers, etc.) immediately after authorisation. + +#### d. Payment via Apple Pay + +Apple Pay is available as a payment method for **iOS devices** on our website. You can select this payment method in the checkout area via Safari, and pay with a linked payment card. After submitting your order, you will be redirected to Apple to authorise payment. Once we are notified of your authorisation, shipping will begin — depending on the shipping time indicated on the product. The actual invoice amount, minus any discounts or vouchers, will be debited immediately after authorisation. + +### 8.2 Vouchers + +When redeeming promotional vouchers, the specifically applicable redemption conditions must be observed. The relevant information can be found on the vouchers themselves. + +### 8.3 Default Interest and Other Default Damages + +If the customer is in **default of payment**, the purchase price shall be subject to interest at the **statutory default interest rate** during the period of default. The Pet Loft reserves the right to claim higher damages for default, subject to proof. + +### 8.4 Invoices + +The Pet Loft has the right to invoice the customer **electronically**. Electronic invoices will be sent to the customer via email in **PDF format**. The invoiced sales tax does not entitle the customer to an input tax deduction. + +--- + +## 9. Data Protection + +The Pet Loft takes the **protection of its customers' data** very seriously. The Pet Loft data protection declaration can be viewed on our **Data Privacy** page. + +--- + +## 10. Marketing & Customer Communication + +If the customer enters into a contract for the purchase of a product or service with The Pet Loft and provides their email address, The Pet Loft may use this email address for **direct advertising of similar goods or services**. + +The customer has the right to **object to the use of their email address** for this purpose at any time, without incurring any costs other than the transmission costs according to the base rates. Each email contains an **unsubscribe link** for this purpose. Alternatively, the objection can be submitted at any time by email to [service@thepetloft.co.uk](mailto:service@thepetloft.co.uk). + +--- + +## 12. The Pet Loft Subscription Programme + +### 12.1 General + +The **Pet Loft Repeat** (hereinafter: **"subscription"**) allows registered customers to set up regular, automated orders for subscription-eligible items to be delivered at pre-determined intervals, without the need for manual repeat orders. All short-term or temporary promotional items are excluded from the subscription. + +Subscription-eligible items that are part of a confirmed or completed order can be converted into the Pet Loft Repeat in your **"My Pet Loft"** customer account under **"My Orders"**. + +Each automated subscription order constitutes a **binding offer** to The Pet Loft to conclude a sales contract. The contract is only concluded when The Pet Loft ships the ordered item to the customer and confirms dispatch by email (**dispatch confirmation**) within five working days of receipt of the automated order. Should the customer not receive confirmation of dispatch within the aforementioned period, a contract does not come into effect. + +Before an automated order is processed, The Pet Loft will send the customer a **reminder email** allowing the customer to cancel or change the order. + +### 12.2 Subscription Discount + +The Pet Loft offers a **subscription discount** on the current standard price of specific items. Information about discount levels and eligible items can be found on the Pet Loft Repeat FAQ page. The subscription discount applied is the level of discount valid for subscription products at the time the order is processed. Certain subscription and product details (including price, discount, and availability) may change over time. Each subscription order is subject to the subscription and product details that currently apply. The Pet Loft reserves the right to **alter the subscription discount at any time**. The subscription discount cannot be combined with other discounts. + +### 12.3 Availability of Goods + +Should a particular item in your subscription order be **out of stock** on the scheduled delivery date, the order for that item will be automatically cancelled. + +### 12.4 Duration, Changes, and Termination of Subscription + +The subscription has **no minimum term**. Delivery intervals can be freely selected in weeks, but must be a minimum of **3 weeks** and a maximum of **12 weeks**. Changes, pausing, and cancellation of the subscription are possible at any time in the customer account under **"The Pet Loft Repeat"**. + +The Pet Loft may amend these Terms & Conditions for the Pet Loft Repeat at any time by publishing the updated Terms & Conditions on [www.thepetloft.co.uk](http://www.thepetloft.co.uk) and by notifying the customer in advance of any significant changes. By continuing participation in the Pet Loft Repeat subscription service, the customer agrees to these changes. If the customer does not agree to any changes, the customer must cancel the subscription. The Pet Loft is entitled to cancel a subscription in writing at any time without stating a reason. + +### 12.5 Payment Methods + +Items ordered as part of the subscription service can only be paid for by **debit/credit card** or **PayPal**. The prerequisite for payment by these methods is that the data in the customer account is up-to-date and complete. + +### 12.6 Miscellaneous + +Should any provision in these Terms & Conditions be found to be void, invalid, or for any reason unenforceable, the validity and enforceability of the remaining Terms & Conditions shall not be affected thereby. + +--- + +## 14. Alternative Dispute Resolution + +We are neither willing nor obliged to participate in dispute resolution proceedings before a consumer arbitration board. Nevertheless, we endeavour to find an **amicable solution** to any differences of opinion with our customers. If a customer is not satisfied with one of our offers, they are welcome to contact us at [service@thepetloft.co.uk](mailto:service@thepetloft.co.uk). + +--- + +## 15. Final Provisions + +Should any provision of these Terms and Conditions be or become invalid or unenforceable, the validity or enforceability of the other provisions shall not be affected thereby. + +**United Kingdom law** applies, by way of exclusion of the UN Convention on Contracts for the International Sale of Goods (CISG). This choice of applicable law only applies in so far as the protection granted by mandatory provisions of the law of the state in which the consumer has their habitual residence at the time of their order is not withdrawn. + +--- + +## 16. Printed Version of the General Terms and Conditions + +To view a printer-friendly version of these General Terms and Conditions, click on the **printer icon** at the top of the page, in the upper right corner. Alternatively, to save a copy to your device, click on the **PDF icon**. + +To open these Terms and Conditions as a PDF file, you will need **Adobe Reader**, which can be downloaded free of charge. + +--- + +*Status of these General Terms and Conditions of Business: 02 February 2026.* diff --git a/apps/storefront/content/legal/privacy-policy.md b/apps/storefront/content/legal/privacy-policy.md new file mode 100644 index 0000000..30fb370 --- /dev/null +++ b/apps/storefront/content/legal/privacy-policy.md @@ -0,0 +1,25 @@ +--- +title: Privacy Policy +description: How The Pet Loft collects, uses, and protects your personal information. +lastUpdated: March 2025 +--- + +## Information we collect + +We collect information you provide when you create an account, place an order, or contact us. This may include your name, email address, delivery address, and payment details as necessary to fulfil your order. + +## How we use your information + +We use your information to process orders, communicate with you about your account and orders, improve our services, and comply with legal obligations. We do not sell your personal data to third parties. + +## Data security + +We take reasonable technical and organisational measures to protect your personal data against unauthorised access, loss, or misuse. + +## Your rights + +You may request access to, correction of, or deletion of your personal data in line with applicable law. Contact us to exercise these rights. + +## Updates + +We may update this privacy policy from time to time. The “Last updated” date at the top of this page will be revised when changes are made. diff --git a/apps/storefront/content/legal/terms-of-service.md b/apps/storefront/content/legal/terms-of-service.md new file mode 100644 index 0000000..7494485 --- /dev/null +++ b/apps/storefront/content/legal/terms-of-service.md @@ -0,0 +1,21 @@ +--- +title: Terms of Service +description: The Pet Loft terms of service and conditions of use for our website and services. +lastUpdated: March 2025 +--- + +## Acceptance of terms + +By accessing and using The Pet Loft website and services, you agree to be bound by these Terms of Service. If you do not agree, please do not use our site. + +## Use of the service + +You may use our website for lawful purposes only. You must not use the site in any way that could damage, disable, or impair the service or interfere with any other party’s use of the site. + +## Orders and payment + +When you place an order, you are offering to purchase goods subject to these terms. We reserve the right to refuse or cancel orders at our discretion. Payment is due at checkout as specified. + +## Changes + +We may update these terms from time to time. The “Last updated” date at the top of this page will be revised when changes are made. Continued use of the site after changes constitutes acceptance of the updated terms. diff --git a/apps/storefront/package.json b/apps/storefront/package.json index 86c64a8..197a8bb 100644 --- a/apps/storefront/package.json +++ b/apps/storefront/package.json @@ -19,7 +19,9 @@ "@stripe/react-stripe-js": "^5.6.0", "@stripe/stripe-js": "^8.8.0", "framer-motion": "^11.0.0", + "gray-matter": "^4.0.3", "lucide-react": "^0.400.0", - "react-markdown": "^10.1.0" + "react-markdown": "^10.1.0", + "remark-gfm": "^4.0.0" } } diff --git a/apps/storefront/src/app/layout.tsx b/apps/storefront/src/app/layout.tsx index 3aa3a55..1e667cd 100644 --- a/apps/storefront/src/app/layout.tsx +++ b/apps/storefront/src/app/layout.tsx @@ -3,6 +3,7 @@ import { DM_Sans, Fraunces } from "next/font/google"; import { ClerkProvider } from "@clerk/nextjs"; import { ConvexClientProvider } from "@repo/convex"; import { CartUIProvider } from "../components/cart/CartUIProvider"; +import { AnnouncementBar } from "../components/layout/AnnouncementBar"; import { Header } from "../components/layout/header/Header"; import { SessionCartMerge } from "../lib/session/SessionCartMerge"; import { StoreUserSync } from "../lib/session/StoreUserSync"; @@ -18,7 +19,7 @@ const dmSans = DM_Sans({ const fraunces = Fraunces({ subsets: ["latin"], - weight: ["400", "600", "700"], + weight: ["100", "400", "600", "700"], variable: "--font-fraunces", }); @@ -45,6 +46,7 @@ export default function RootLayout({ +
{children}