Init
6
.htaccess
Normal file
@@ -0,0 +1,6 @@
|
||||
RewriteEngine On
|
||||
|
||||
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/index\.php[\s?/] [NC]
|
||||
RewriteRule ^index\.php$ / [R=301,L]
|
||||
RewriteCond %{REQUEST_FILENAME}.php -f
|
||||
RewriteRule ^([^/]+)/?$ $1.php [L]
|
||||
157
about.php
Normal file
@@ -0,0 +1,157 @@
|
||||
<?php
|
||||
/**
|
||||
* Page details
|
||||
*/
|
||||
$page_title = 'About: Revolutionizing Online Dating Experiences';
|
||||
$page_description = "Learn about Stella Amor's mission to redefine online dating. We combine advanced search features with affordability to help you find meaningful connections.";
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/header.php');
|
||||
?>
|
||||
|
||||
|
||||
<div class="container mt-10">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-s-12 align-self-center">
|
||||
<h1>About Stella Amor</h1>
|
||||
<p>
|
||||
Stella Amor is a dating platform which let's the most picky user search for their desired partner. Our filter is among the biggest in the entire internet and let's you filter by financial statuses, body features, dreams and much much more.
|
||||
<br><br>
|
||||
Our goal is to let everyone go beyond the other platforms limits and allow users to filter by, what other platforms classes as "taboo". Want to find someone with a special fetish? We got it. Virgins? Got that too. If no one else has it, our goal is to either have it or implement it.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="image-container">
|
||||
<img src="/rss/img/logo.png" class="shadow">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="blue-banner">
|
||||
<div class="container mt-10 p-20 text-center">
|
||||
<h1>Free dating first month</h1>
|
||||
<p>We know our service is that good that we're giving away 30 days free use. After that. It's only about $4.99 per month. If you're not happy with our service, just don't pay. But we know you'll be delighted regarding the best filter for dating sites.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mt-10">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-s-12 align-self-center">
|
||||
<h1>Contact details</h1>
|
||||
<p>
|
||||
We're currently setting up a ticket system which will manage everything from investor relations to issue with accounts. While this is in development, feel free to reach out to us using the information below:<br>
|
||||
Support: <a href="mailto:support@stellaamor.com">support@stellaamor.com</a><br>
|
||||
Contact: <a href="mailto:info@stellaamor.com">info@stellaamor.com</a><br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mt-10" id="tos">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-s-12 align-self-center">
|
||||
<h1>Terms of use</h1>
|
||||
<p>
|
||||
The following article lists our Terms of use. Please read carefuly and be aware that this may change from time to time.
|
||||
</p>
|
||||
|
||||
<h2>1. User Conduct</h2>
|
||||
<ul>
|
||||
<li>Respect other users at all times. Harassment, hate speech, and abusive behavior are strictly prohibited.</li>
|
||||
<li>Do not impersonate another person or create fake profiles to mislead others.</li>
|
||||
<li>Sharing private or sensitive information of other users outside of the platform is strictly forbidden.</li>
|
||||
<li>Spamming, phishing, or any malicious activity will result in account suspension or termination.</li>
|
||||
</ul>
|
||||
|
||||
<h2>2. Profile Usage</h2>
|
||||
<ul>
|
||||
<li>You are responsible for keeping your account credentials secure.</li>
|
||||
<li>Any content you upload must not violate copyright, trademark, or privacy laws.</li>
|
||||
</ul>
|
||||
|
||||
<h2>3. Privacy and Data Usage</h2>
|
||||
<ul>
|
||||
<li>We prioritize user privacy and will not share your personal data without consent, except as required by law.</li>
|
||||
<li>By using the platform, you agree to our data collection and usage practices as outlined in our Privacy Policy.</li>
|
||||
</ul>
|
||||
|
||||
<h2>4. Reporting Issues</h2>
|
||||
<ul>
|
||||
<li>Any security vulnerabilities or bugs must be reported immediately to our support team and not exploited.</li>
|
||||
<li>If you encounter inappropriate behavior or content, report it through the provided tools or contact support.</li>
|
||||
</ul>
|
||||
|
||||
<h2>5. Liability</h2>
|
||||
<ul>
|
||||
<li>We are not responsible for the actions of users outside the platform.</li>
|
||||
<li>Use the platform at your own risk. We do not guarantee outcomes such as successful matches or relationships.</li>
|
||||
</ul>
|
||||
|
||||
<h2>6. Account Termination</h2>
|
||||
<ul>
|
||||
<li>We reserve the right to terminate accounts that violate these terms or engage in prohibited conduct.</li>
|
||||
<li>Users may terminate their accounts at any time through account settings.</li>
|
||||
</ul>
|
||||
|
||||
<h2>7. Amendments</h2>
|
||||
<ul>
|
||||
<li>We may update these Terms of Use from time to time. Continued use of the platform signifies acceptance of any changes.</li>
|
||||
<li>We offer no refunds. You have 30 days to try our service. Consider that your trial period.</li>
|
||||
<li>We do not offer refunds due to terminating accounts.</li>
|
||||
</ul>
|
||||
<h1>Privacy Policy</h1>
|
||||
<p>Your privacy is important to us. This Privacy Policy explains how we collect, use, and protect your personal information when you use Stella Amor.</p>
|
||||
<h2>1. Information We Collect</h2>
|
||||
<ul>
|
||||
<li><strong>Personal Information:</strong> When you create an account, we may collect information such as your name, email address, date of birth, and profile details.</li>
|
||||
<li><strong>Usage Data:</strong> We collect data about your interactions with the platform, including search queries, messages, and matches.</li>
|
||||
<li><strong>Device Information:</strong> Information about your device, such as IP address, browser type, and operating system, may also be collected.</li>
|
||||
</ul>
|
||||
|
||||
<h2>2. How We Use Your Information</h2>
|
||||
<ul>
|
||||
<li>To provide and improve the platform’s functionality and user experience.</li>
|
||||
<li>To personalize your experience, including suggesting matches and content.</li>
|
||||
<li>To communicate with you, including sending updates, notifications, and support messages.</li>
|
||||
<li>To monitor and enhance security, including preventing fraud and abuse.</li>
|
||||
</ul>
|
||||
|
||||
<h2>3. Sharing Your Information</h2>
|
||||
<ul>
|
||||
<li>We do not sell your personal data to third parties.</li>
|
||||
<li>Your information may be shared with trusted partners or service providers who help operate our platform, under strict confidentiality agreements.</li>
|
||||
<li>We may disclose information as required by law or to protect the rights and safety of our users or platform.</li>
|
||||
</ul>
|
||||
|
||||
<h2>4. Data Retention</h2>
|
||||
<ul>
|
||||
<li>We retain your information for as long as your account is active or as necessary to provide our services.</li>
|
||||
<li>Data may be retained to comply with legal obligations, resolve disputes, and enforce agreements.</li>
|
||||
</ul>
|
||||
|
||||
<h2>5. Your Rights</h2>
|
||||
<ul>
|
||||
<li>You can opt out of marketing communications by adjusting your preferences in your account.</li>
|
||||
<li>If you have concerns about how your data is being used, contact our support team at support@stellaamor.com</li>
|
||||
</ul>
|
||||
|
||||
<h2>6. Security</h2>
|
||||
<ul>
|
||||
<li>We use industry-standard security measures to protect your data from unauthorized access and breaches.</li>
|
||||
<li>However, no online service can guarantee absolute security. Use the platform at your own risk.</li>
|
||||
</ul>
|
||||
|
||||
<h2>7. Changes to This Privacy Policy</h2>
|
||||
<ul>
|
||||
<li>We may update this Privacy Policy from time to time. Significant changes will be communicated to users through the platform or email.</li>
|
||||
<li>Continued use of the platform indicates acceptance of any updates.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/footer.php');
|
||||
?>
|
||||
12
home/.htaccess
Normal file
@@ -0,0 +1,12 @@
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
|
||||
RewriteCond %{HTTPS} off
|
||||
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
|
||||
|
||||
RewriteRule ^index\.html$ - [L]
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule . /index.html [L]
|
||||
</IfModule>
|
||||
1
home/css/app.5360f6f2.css
Normal file
@@ -0,0 +1 @@
|
||||
@import url(https://fonts.googleapis.com/css2?family=Niconne&family=Poly:ital@0;1&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap);#app{font-family:Poppins,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#353535}nav{padding:30px}nav a{font-weight:700;color:#fff}nav a.router-link-exact-active{color:#42b983}.font-niconne{font-family:Niconne,cursive;font-family:Poly,serif}.poppins,body{font-family:Poppins,sans-serif}img{max-width:100%}.main{padding-top:60px}@media(min-width:960px){.main{padding-top:70px}}*{text-align:left}.app-main{margin-top:60px;position:relative;min-height:calc(100vh - 60px)}.top-bar{z-index:10;position:fixed}.loadingScreen{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#ffffffc9;display:flex;justify-content:center;align-items:center;z-index:9}.resetRow{justify-content:flex-end;padding:8px}.filterDrawer{background-color:#fff;z-index:9;height:calc(100% - 60px);padding-top:50px}.filter-header{font-size:18px;font-weight:300;padding-left:5px;padding-bottom:5px;padding-top:20px}.filter-label{font-size:12px;padding-left:15px;margin-bottom:10px;margin-top:10px;display:block}.filter-span{color:#747474;display:block;text-wrap:wrap}.filter-titles{font-size:14px;color:#6d6b6b;font-weight:400;padding-bottom:5px}.list-actions{position:fixed;height:60px;bottom:0;width:100%;padding:0 15px;background:#fff}.filter{padding-bottom:70px}.v-input--selection-controls .v-input__slot>.v-label{font-size:12px}.v-list--dense .v-l,.v-list-item--dense{min-height:30px}.user-age{padding-left:5px;font-size:14px;color:#999}.user-info{color:#666}.user-info ul{list-style:none;padding:0;margin:0}.banner{background-size:cover;background-position:50%;height:350px;background-color:#f7f7f7}.profile-card{margin-top:-100px}.user-info{text-align:center;padding:20px}.user-info h2{margin-bottom:10px}.user-info p{margin:0}.lightbox-arrow{position:absolute;top:50%;width:36px!important;height:36px!important;transform:translateY(-50%);color:#fff!important;background-color:rgba(0,0,0,.5)!important;border-radius:50%!important;box-shadow:0 2px 4px rgba(0,0,0,.3)!important;min-width:unset!important}.lightbox-arrow.left{left:10px}.lightbox-arrow.right{right:10px}.removeImage{top:3px;right:3px;width:18px!important;height:18px!important}.removeImage,.removeImage2{position:absolute;padding:5px!important;color:#e5e5e5!important;background-color:rgba(0,0,0,.5)!important;border-radius:50%!important;box-shadow:0 2px 4px rgba(0,0,0,.3)!important;min-width:unset!important}.removeImage2{top:10px;right:10px;width:30px!important;height:30px!important}.unreadMessages{color:#1976d2!important}.equal-height-row{display:flex;flex-wrap:wrap}.equal-height-card{flex:1 0 auto;display:flex;flex-direction:column}.userInfoListClass{list-style-type:none;padding:0;margin:0;display:flex;flex-wrap:wrap}.userInfoListClass li{width:calc(50% - 20px);margin:10px;padding:15px;border-radius:10px;box-shadow:0 4px 6px rgba(0,0,0,.1);background-color:#fff;transition:background-color .3s ease}.userInfoListClass li:hover{background-color:#f0f0f0}.userInfoListClass li h4{margin-top:0;margin-bottom:10px;font-size:14px;font-weight:400;color:#979797}.userInfoListClass li p{margin-bottom:5px;font-size:12px;color:#919191;line-height:1.4}@media(max-width:768px){.userInfoListClass li{width:calc(100% - 20px)}}.fixedToolbar[data-v-4464b245]{position:fixed;top:0;width:100%}.chat-messages[data-v-4464b245]{padding-top:65px;overflow-y:auto;display:flex;flex-direction:column;height:100%}.chat-message[data-v-4464b245]{margin:10px;padding:10px;border-radius:10px;width:80%}.message-header[data-v-4464b245]{display:flex;align-items:center}.avatar[data-v-4464b245]{width:40px;height:40px;border-radius:50%;margin-right:10px}.username[data-v-4464b245]{font-weight:700;margin-right:10px;cursor:pointer}.message-content[data-v-4464b245]{word-wrap:break-word}.outgoing[data-v-4464b245]{align-self:flex-end;background-color:#2196f3;color:#fff}.incoming[data-v-4464b245]{align-self:flex-start;background-color:#f5f5f5}.sendButton[data-v-4464b245]{display:flex;align-items:center;justify-content:flex-end}.chat-container[data-v-4464b245]{display:flex;flex-direction:column;min-height:100%;justify-content:space-between}.conversation-row[data-v-4464b245]{background-color:#6492f938;padding:10px;margin-bottom:20px;border-radius:12px;cursor:pointer}.conversationTime[data-v-4464b245]{font-size:12px;color:#a3a3a3;right:5px;position:absolute}.conversationUsername[data-v-4464b245]{display:inline;font-weight:500;padding-bottom:5px}.conversation-box[data-v-4464b245]{position:relative}
|
||||
5
home/css/chunk-vendors.0ee1ee54.css
Normal file
BIN
home/favicon.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
home/img/logo.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
home/img/logo2.9f656f3d.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
5
home/index.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/x-icon" href="favicon.ico"><title>Stella Amor | Discover Your Dream Date Today</title><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" crossorigin="anonymous"/><link rel="canonical" href="https://stellaamor.com"><link rel="icon" type="image/x-icon" href="favicon.ico"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="Discover endless possibilities for meaningful connections at Stella Amor, the innovative dating platform designed to cater to every preference. With our comprehensive filtering system, finding your perfect match has never been easier. Explore a diverse community and unlock your path to love and companionship today"><meta property="og:title" content="Stella Amor | Discover Your Dream Date Today"><meta property="og:description" content="Discover endless possibilities for meaningful connections at Stella Amor, the innovative dating platform designed to cater to every preference. With our comprehensive filtering system, finding your perfect match has never been easier. Explore a diverse community and unlock your path to love and companionship today"><meta property="og:image" content="https://api.stellaamor.com/static/logo2.png"><meta property="og:url" content="https://stellaamor.com"><meta property="og:type" content="website"><meta name="twitter:title" content="Stella Amor | Discover Your Dream Date Today"><meta name="twitter:description" content="Discover endless possibilities for meaningful connections at Stella Amor, the innovative dating platform designed to cater to every preference. With our comprehensive filtering system, finding your perfect match has never been easier. Explore a diverse community and unlock your path to love and companionship today"><meta name="twitter:image" content="https://api.stellaamor.com/static/logo2.png"><meta name="twitter:card" content="summary_large_image"><meta name="author" content="Stella Amor"><meta name="keywords" content="Dating"><meta name="robots" content="index,follow"><meta httpequiv="expires" content="0"><meta httpequiv="pragma" content="no-cache"><script defer="defer" src="/home/js/chunk-vendors.644485be.js"></script><script defer="defer" src="/home/js/app.eb118890.js"></script><link href="/home/css/chunk-vendors.0ee1ee54.css" rel="stylesheet"><link href="/home/css/app.5360f6f2.css" rel="stylesheet"></head><script async src="https://www.googletagmanager.com/gtag/js?id=G-486MZV8H9M"></script><script>window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-486MZV8H9M');</script><body><noscript><strong>We're sorry but app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
5
home/index.html.bck
Normal file
@@ -0,0 +1,5 @@
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/x-icon" href="favicon.ico"><title>Stella Amor | Discover Your Dream Date Today</title><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" crossorigin="anonymous"/><link rel="canonical" href="https://stellaamor.com"><link rel="icon" type="image/x-icon" href="favicon.ico"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="Discover endless possibilities for meaningful connections at Stella Amor, the innovative dating platform designed to cater to every preference. With our comprehensive filtering system, finding your perfect match has never been easier. Explore a diverse community and unlock your path to love and companionship today"><meta property="og:title" content="Stella Amor | Discover Your Dream Date Today"><meta property="og:description" content="Discover endless possibilities for meaningful connections at Stella Amor, the innovative dating platform designed to cater to every preference. With our comprehensive filtering system, finding your perfect match has never been easier. Explore a diverse community and unlock your path to love and companionship today"><meta property="og:image" content="https://api.stellaamor.com/static/logo2.png"><meta property="og:url" content="https://stellaamor.com"><meta property="og:type" content="website"><meta name="twitter:title" content="Stella Amor | Discover Your Dream Date Today"><meta name="twitter:description" content="Discover endless possibilities for meaningful connections at Stella Amor, the innovative dating platform designed to cater to every preference. With our comprehensive filtering system, finding your perfect match has never been easier. Explore a diverse community and unlock your path to love and companionship today"><meta name="twitter:image" content="https://api.stellaamor.com/static/logo2.png"><meta name="twitter:card" content="summary_large_image"><meta name="author" content="Stella Amor"><meta name="keywords" content="Dating"><meta name="robots" content="index,follow"><meta httpequiv="expires" content="0"><meta httpequiv="pragma" content="no-cache"><script defer="defer" src="/js/chunk-vendors.644485be.js"></script><script defer="defer" src="/js/app.eb118890.js"></script><link href="/css/chunk-vendors.0ee1ee54.css" rel="stylesheet"><link href="/css/app.5360f6f2.css" rel="stylesheet"></head><script async src="https://www.googletagmanager.com/gtag/js?id=G-486MZV8H9M"></script><script>window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-486MZV8H9M');</script><body><noscript><strong>We're sorry but app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
2
home/js/app.eb118890.js
Normal file
1
home/js/app.eb118890.js.map
Normal file
15
home/js/chunk-vendors.644485be.js
Normal file
1
home/js/chunk-vendors.644485be.js.map
Normal file
BIN
home/rss/img/logo.png
Normal file
|
After Width: | Height: | Size: 176 KiB |
147
index.php
Normal file
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
/**
|
||||
* Page details
|
||||
*/
|
||||
|
||||
$page_title = 'Exclusive Online Dating Platform with Advanced Match Filters';
|
||||
$page_description = 'Join Stella Amor to experience the largest dating filters online. Enjoy personalized matchmaking with free first-month access. Start finding meaningful connections today!';
|
||||
include($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/header.php');
|
||||
?>
|
||||
|
||||
|
||||
<section class="landing-banner">
|
||||
<div class="overlay">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-12">
|
||||
<h1>Explore the Future of Online Dating with StellaAmor</h1>
|
||||
<p>Join StellaAmor for free and discover meaningful connections with our advanced match filters.
|
||||
Love is just a click away!</p>
|
||||
</div>
|
||||
<div class="col-md-6 col-12">
|
||||
|
||||
<div class="home-container">
|
||||
<h2>Sign Up</h2>
|
||||
<form action="#" method="POST" id="signup">
|
||||
<div class="form-field">
|
||||
<label for="username">Username:</label>
|
||||
<input type="text" id="username" placeholder="Username" required>
|
||||
<div class="errors" id="usernameError"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-field">
|
||||
<label for="email">Email:</label>
|
||||
<input type="email" id="email" placeholder="Enter your email" required>
|
||||
<div class="errors" id="emailError"></div>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label for="u_dob">Date of birth:</label>
|
||||
<input type="date" id="u_dob" required>
|
||||
<div class="errors" id="dobError"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="gender-select form-field">
|
||||
<label for="gender">Gender:</label>
|
||||
<select id="gender" required>
|
||||
<option value="" disabled selected>Select your gender</option>
|
||||
<option value="male">Male</option>
|
||||
<option value="female">Female</option>
|
||||
<option value="other">Other</option>
|
||||
</select>
|
||||
<div class="errors" id="genderError"></div>
|
||||
</div>
|
||||
|
||||
<div class="country-select form-field">
|
||||
<label for="userCountry">Country:</label>
|
||||
<select id="userCountry" required>
|
||||
<option value="" disabled selected>Select your country</option>
|
||||
</select>
|
||||
<div class="errors" id="countryError"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-field">
|
||||
<label for="password">Password:</label>
|
||||
<input type="password" id="password" placeholder="Password" required>
|
||||
<div class="errors" id="passwordError"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-field">
|
||||
<label for="password2">Confirm Password:</label>
|
||||
<input type="password" id="password2" placeholder="Confirm Password" required>
|
||||
<div class="errors" id="password2Error"></div>
|
||||
</div>
|
||||
|
||||
<div class="checkbox-container">
|
||||
<label>
|
||||
<input type="checkbox" required> I am over 18 years old
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" required id="tos"> I accept the <a class="link" target="_blank" href="/about#tos">terms of use</a>
|
||||
</label>
|
||||
<div class="errors" id=""></div>
|
||||
</div>
|
||||
|
||||
<button type="submit">Sign up</button>
|
||||
<i class="mdi mdi-loading" id="spinner"></i>
|
||||
</form>
|
||||
|
||||
<div class="error" id="errors"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="container mt-10">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-s-12 align-self-center">
|
||||
<h2>Online dating made exclusive</h2>
|
||||
<p>We offer the widest search filter among all dating sites. To prove how good our platform is, we give each new member an entire month of free access. No binding periods and no credit card verifications.
|
||||
Our dating platform is built for people to be able to find exactly what they are looking for. Wheter if it's body features, preferences or future dreams, we have exactly what you need to find what you're looking for.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="image-container">
|
||||
<img alt="dating couple" src="/rss/img/couple.jpg" class="shadow">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="blue-banner">
|
||||
<div class="container mt-10">
|
||||
<div class="row">
|
||||
<div class="col-md-4 col-s-12">
|
||||
<div class="image-container">
|
||||
<img src="/rss/img/save.png" alt="cheap dating" class="shadow">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8 col-s-12 align-self-center">
|
||||
<h2>Free access first month, then $9.99</h2>
|
||||
<p>At Stella Amor, we want you to try out our dating platform for free, without worrying about spending. We have built the perfect platform for everyone. We will by that also aim to be the cheapest premium online dating site as well. After your first month, you'll only be paying approximately $9.99 per month, no binding periods.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mt-10">
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-s-12 align-self-center">
|
||||
<h2>Why Stella Amor Stands Out</h2>
|
||||
<p>Our goal is to provide you with the biggest filter you've ever seen. At Stella Amor's dating platform, you can filter by body features, finance, life goals, religion, sexual activity, pets, life situations and much much more.</p>
|
||||
</div>
|
||||
<div class="col-md-3 col-s-12">
|
||||
<div class="image-container">
|
||||
<img src="/rss/img/search.png" alt="dating filter">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/footer.php');?>
|
||||
1127
rss/css/main.css
Normal file
1
rss/css/main.css.map
Normal file
657
rss/css/main.scss
Normal file
@@ -0,0 +1,657 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Arima:wght@100..700&display=swap');
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
font-family: "Arima", system-ui;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
$gutter-width: 30px;
|
||||
$breakpoints: (
|
||||
"s": 320px,
|
||||
"sm": 576px,
|
||||
"md": 768px,
|
||||
"lg": 992px,
|
||||
"xl": 1200px,
|
||||
"xxl": 1400px
|
||||
);
|
||||
|
||||
// Define max-width for each breakpoint
|
||||
$max-widths: (
|
||||
"sm": 540px, // Set a specific max-width for small screens
|
||||
"md": 720px, // Set a specific max-width for medium screens
|
||||
"lg": 960px, // Set a specific max-width for large screens
|
||||
"xl": 1140px, // Existing value for extra large screens
|
||||
"xxl": 1320px // Existing value for extra large screens
|
||||
);
|
||||
|
||||
.container {
|
||||
width: 100%;
|
||||
padding-right: $gutter-width / 2;
|
||||
padding-left: $gutter-width / 2;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
|
||||
@each $breakpoint, $value in $breakpoints {
|
||||
@media (min-width: #{$value}) {
|
||||
max-width: map-get($max-widths, $breakpoint); // Use the defined max-widths
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Margins
|
||||
**/
|
||||
.mt-10{
|
||||
margin-top:100px;
|
||||
}
|
||||
|
||||
// Padding
|
||||
|
||||
.p-0{
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.p-20{
|
||||
padding:20px;
|
||||
}
|
||||
|
||||
// Text
|
||||
.text-center{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-right: -$gutter-width / 2;
|
||||
margin-left: -$gutter-width / 2;
|
||||
}
|
||||
|
||||
// Default column classes (no media queries)
|
||||
@for $i from 1 through 12 {
|
||||
.col-#{$i} {
|
||||
flex: 0 0 #{(100% / 12) * $i};
|
||||
max-width: #{(100% / 12) * $i};
|
||||
padding-right: $gutter-width / 2;
|
||||
padding-left: $gutter-width / 2;
|
||||
}
|
||||
}
|
||||
|
||||
.col-auto {
|
||||
flex: 0 0 auto;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
// Media queries for specific breakpoints
|
||||
@each $breakpoint, $value in $breakpoints {
|
||||
@media (min-width: #{$value}) {
|
||||
.col-#{$breakpoint}-auto {
|
||||
flex: 0 0 auto;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
@for $i from 1 through 12 {
|
||||
.col-#{$breakpoint}-#{$i} {
|
||||
flex: 0 0 #{(100% / 12) * $i};
|
||||
max-width: #{(100% / 12) * $i};
|
||||
padding-right: $gutter-width / 2;
|
||||
padding-left: $gutter-width / 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.blue-banner{
|
||||
background-color: #5a7489;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.col {
|
||||
flex: 1;
|
||||
padding-right: $gutter-width / 2;
|
||||
padding-left: $gutter-width / 2;
|
||||
}
|
||||
|
||||
.justify-content-center{
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.align-items-center{
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.align-self-center{
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.d-flex{
|
||||
display:flex;
|
||||
}
|
||||
|
||||
.h-auto{
|
||||
height:auto !important;
|
||||
min-height: auto !important;
|
||||
max-height: auto !important;
|
||||
}
|
||||
|
||||
.image-container{
|
||||
width: 100%;
|
||||
position: relative;
|
||||
|
||||
@media(max-width:768px){
|
||||
padding:10px;
|
||||
}
|
||||
|
||||
img{
|
||||
width: 100%;
|
||||
border-radius: 12px;
|
||||
|
||||
.shadow{
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Menu
|
||||
|
||||
.navbar {
|
||||
background-color: #fff;
|
||||
padding: 5px 10px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.logo {
|
||||
img {
|
||||
width: 125px;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-links {
|
||||
list-style: none;
|
||||
display: flex;
|
||||
gap: 1.5rem;
|
||||
|
||||
li {
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: #333;
|
||||
font-size: 1rem;
|
||||
font-weight: 500;
|
||||
padding: 0.3rem 0.8rem;
|
||||
border-radius: 4px;
|
||||
transition: background-color 0.3s ease, color 0.3s ease;
|
||||
|
||||
&:hover {
|
||||
background-color: #f0f0f0;
|
||||
color: #6d6d6d;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.burger {
|
||||
display: none;
|
||||
cursor: pointer;
|
||||
flex-direction: column;
|
||||
gap: 0.3rem;
|
||||
|
||||
span {
|
||||
width: 28px;
|
||||
height: 2px;
|
||||
background-color: #333;
|
||||
border-radius: 2px;
|
||||
transition: transform 0.3s ease, opacity 0.3s ease;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.nav-links {
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
right: 0;
|
||||
background-color: #fff;
|
||||
width: 100%;
|
||||
padding: 0rem 0.5rem;
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
||||
opacity: 0;
|
||||
transform: translateY(-10px);
|
||||
transition: opacity 0.3s ease, transform 0.3s ease;
|
||||
border-radius: 0px 0px 8px 8px;
|
||||
margin: 0;
|
||||
gap: 15px;
|
||||
padding: 10px 0px;
|
||||
|
||||
li {
|
||||
// margin-bottom: 0.1rem;
|
||||
text-align: left;
|
||||
|
||||
a {
|
||||
font-size: 1.1rem;
|
||||
font-weight: 500;
|
||||
color: #333;
|
||||
// padding: 0.8rem;
|
||||
text-align: center;
|
||||
border-radius: 4px;
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding:0;
|
||||
text-align: left;
|
||||
padding: 0px 20px;
|
||||
|
||||
&:hover {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.nav-active {
|
||||
display: flex;
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
.burger {
|
||||
display: flex;
|
||||
|
||||
&.toggle span:nth-child(1) {
|
||||
transform: rotate(-45deg) translate(-5px, 6px);
|
||||
}
|
||||
|
||||
&.toggle span:nth-child(2) {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
&.toggle span:nth-child(3) {
|
||||
transform: rotate(45deg) translate(-5px, -6px);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Home banner
|
||||
|
||||
.landing-banner {
|
||||
background: url('/rss/img/people.jpg') no-repeat center center/cover;
|
||||
background-attachment: fixed;
|
||||
min-height: 100vh;
|
||||
position: relative;
|
||||
color: #fff;
|
||||
|
||||
|
||||
.overlay {
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
padding: 1.5rem;
|
||||
position: absolute;
|
||||
top:0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
min-height:100vh;
|
||||
|
||||
@media(max-width: 768px){
|
||||
padding-bottom:150px;
|
||||
}
|
||||
|
||||
@media(max-width:768px){
|
||||
height:unset;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@media(max-width:768px) {
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
&.login{
|
||||
padding-top:100px;
|
||||
|
||||
@media(max-width:768px){
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
|
||||
@media(max-width:768px) {
|
||||
max-width: unset;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.2rem;
|
||||
margin-bottom: 2rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.home-container {
|
||||
background: #fff; // Added missing semicolon
|
||||
padding: 2rem;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
|
||||
|
||||
h2 {
|
||||
margin-bottom: 1rem;
|
||||
font-size: 1.5rem; // Size for the signup heading
|
||||
color: #333; // Dark text color for contrast
|
||||
}
|
||||
|
||||
form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.form-field {
|
||||
margin-bottom: 1rem; // Space between fields
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
text-align: left;
|
||||
|
||||
@media(max-width:768px) {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
label {
|
||||
margin-bottom: 0.5rem; // Space between label and input/select
|
||||
color: #333; // Dark text color for labels
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
input[type="date"],
|
||||
input[type="email"],
|
||||
input[type="password"],
|
||||
select {
|
||||
padding: 0.75rem;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
font-size: 1rem;
|
||||
color: #333; // Dark text color for inputs/selects
|
||||
background-color: #fff; // White background for inputs/selects
|
||||
|
||||
&:focus {
|
||||
border-color: #007bff; // Focus effect
|
||||
outline: none;
|
||||
}
|
||||
|
||||
&.invalid{
|
||||
border: 1px solid #ef3c3c
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.form-row {
|
||||
display: flex; // Display the selects in a row
|
||||
justify-content: space-between; // Space between selects
|
||||
margin-bottom: 1rem; // Space below the row
|
||||
|
||||
@media(max-width:768px) {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.gender-select,
|
||||
.country-select {
|
||||
width: 48%; // Set width to 48% for two select elements side by side
|
||||
|
||||
@media(max-width:768px) {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.checkbox-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-bottom: 1rem;
|
||||
|
||||
label {
|
||||
font-size: 0.9rem; // Slightly smaller font for checkboxes
|
||||
display: flex;
|
||||
align-items: center; // Align checkbox and text
|
||||
color: #333; // Dark text color for checkbox labels
|
||||
|
||||
input[type="checkbox"] {
|
||||
margin-right: 0.5rem; // Space between checkbox and label text
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
button {
|
||||
padding: 0.75rem;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
background-color: #007bff; // Primary button color
|
||||
color: #fff;
|
||||
font-size: 1rem;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.3s ease;
|
||||
|
||||
&:hover {
|
||||
background-color: #0056b3; // Darker on hover
|
||||
}
|
||||
}
|
||||
|
||||
.link{
|
||||
font-weight: bold;
|
||||
color: inherit;
|
||||
margin-left: 3px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.errors{
|
||||
background-color: rgba(239, 60, 60, 0.93);
|
||||
border-radius: 4px;
|
||||
color: #fff;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.home-container {
|
||||
padding: 1.5rem;
|
||||
|
||||
h2 {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.login-page {
|
||||
width: 100%;
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: #E7E7E7;
|
||||
|
||||
|
||||
.login {
|
||||
width: 400px;
|
||||
padding: 4rem 2rem;
|
||||
background-color: #fff;
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.1), 0 12px 24px rgba(0, 0, 0, 0.2);
|
||||
|
||||
@media(max-width:768px){
|
||||
width: calc(100% - 40px);
|
||||
}
|
||||
|
||||
@media(min-width:769px){
|
||||
margin-top: -125px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 84px;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
.input {
|
||||
width: 100%;
|
||||
padding: 0.75rem;
|
||||
margin: 0.5rem 0;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 4px;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.login-button {
|
||||
width: 100%;
|
||||
padding: 0.75rem;
|
||||
margin-top: 1rem;
|
||||
background-color: #0073aa;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
font-size: 1rem;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.3s ease;
|
||||
|
||||
&:hover {
|
||||
background-color: #006799;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.forgot-password {
|
||||
display: block;
|
||||
margin-top: 1rem;
|
||||
font-size: 0.875rem;
|
||||
color: #0073aa;
|
||||
text-decoration: none;
|
||||
transition: color 0.3s ease;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer{
|
||||
width: 100%;
|
||||
background-color:#333;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 45px;
|
||||
.footer-inner{
|
||||
width: 80%;
|
||||
padding: 20px 40px;
|
||||
display:flex;
|
||||
flex-direction: row;
|
||||
color:#fff;
|
||||
margin: 0 -20px;
|
||||
|
||||
@media(max-width:768px){
|
||||
padding: 5px;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.footer-col{
|
||||
width: 20%;
|
||||
max-width: 20%;
|
||||
padding: 0 20px;
|
||||
|
||||
@media(max-width:768px){
|
||||
width: 100%;
|
||||
max-width: unset;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.image-container{
|
||||
width: 180px;
|
||||
}
|
||||
|
||||
&.img{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-self: flex-end;
|
||||
margin-left: auto;
|
||||
|
||||
@media(max-width: 768px){
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.footer-menu{
|
||||
.link-title{
|
||||
margin:5px 0px;
|
||||
padding:0;
|
||||
line-height: 1;
|
||||
}
|
||||
ul{
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
a{
|
||||
color:inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.mdi{
|
||||
color:#0056b3;
|
||||
font-size: 1.8rem;
|
||||
|
||||
&.mdi-loading{
|
||||
animation: rotate 1s linear infinite;
|
||||
display: none;
|
||||
|
||||
&.show{
|
||||
display:block
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes rotate {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
BIN
rss/favicon/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
rss/favicon/favicon-96x96.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
rss/favicon/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
3
rss/favicon/favicon.svg
Normal file
|
After Width: | Height: | Size: 49 KiB |
21
rss/favicon/site.webmanifest
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "MyWebSite",
|
||||
"short_name": "MySite",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/rss/favicon/web-app-manifest-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/rss/favicon/web-app-manifest-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"display": "standalone"
|
||||
}
|
||||
BIN
rss/favicon/web-app-manifest-192x192.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
rss/favicon/web-app-manifest-512x512.png
Normal file
|
After Width: | Height: | Size: 181 KiB |
BIN
rss/img/couple.jpg
Normal file
|
After Width: | Height: | Size: 350 KiB |
BIN
rss/img/logo-light.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
rss/img/logo.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
rss/img/logo_old.png
Normal file
|
After Width: | Height: | Size: 286 KiB |
BIN
rss/img/people.jpg
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
rss/img/save.png
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
rss/img/search.png
Normal file
|
After Width: | Height: | Size: 111 KiB |
BIN
rss/img/sunset.webp
Normal file
|
After Width: | Height: | Size: 477 KiB |
128
rss/js/home.js
Normal file
@@ -0,0 +1,128 @@
|
||||
document.addEventListener('DOMContentLoaded', async (v) => {
|
||||
let countries = await fetchCountries();
|
||||
|
||||
// Handlers
|
||||
let countrySelector = document.getElementById('userCountry');
|
||||
for(country of countries){
|
||||
countrySelector.innerHTML += `<option value="${country.text}">${country.text}</option>`;
|
||||
}
|
||||
|
||||
let signupForm = document.getElementById('signup');
|
||||
signupForm.addEventListener('submit', (e) => {
|
||||
e.preventDefault();
|
||||
document.getElementById('spinner').classList.add('show');
|
||||
|
||||
// Extract form data
|
||||
let username = signupForm.querySelector('#username').value;
|
||||
let dob = signupForm.querySelector('#u_dob').value;
|
||||
let country = signupForm.querySelector('#userCountry').value;
|
||||
let gender = signupForm.querySelector('#gender').value;
|
||||
let email = signupForm.querySelector('#email').value;
|
||||
let password = signupForm.querySelector('#password').value;
|
||||
let password2 = signupForm.querySelector('#password2').value;
|
||||
let tosInput = signupForm.querySelector('#tos');
|
||||
let tos = tosInput.checked;
|
||||
|
||||
// Remove errors
|
||||
document.getElementById('usernameError').innerText = null;
|
||||
document.getElementById('countryError').innerText = null;
|
||||
document.getElementById('emailError').innerText = null;
|
||||
document.getElementById('dobError').innerText = null;
|
||||
document.getElementById('genderError').innerText = null;
|
||||
document.getElementById('passwordError').innerText = null;
|
||||
document.getElementById('password2Error').innerText = null;
|
||||
|
||||
|
||||
let userData = {
|
||||
username: username,
|
||||
country: country,
|
||||
gender: gender,
|
||||
email: email,
|
||||
dob: dob,
|
||||
password: password,
|
||||
password2: password2,
|
||||
acceptTerms: tos
|
||||
};
|
||||
|
||||
let action = 'signup';
|
||||
|
||||
let formData = JSON.stringify({
|
||||
action: action,
|
||||
userData: userData
|
||||
});
|
||||
|
||||
// Send request
|
||||
fetch('https://api.stellaamor.com/users.php', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: formData
|
||||
})
|
||||
.then(response => {
|
||||
if(response && response.length){
|
||||
return response.json();
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.then(msg => {
|
||||
console.log(msg);
|
||||
// If we have a JSON response, process it; otherwise, assume success
|
||||
document.getElementById('spinner').classList.remove('show');
|
||||
if (msg && msg.status === 'fail') {
|
||||
let errorArea = msg.fail_status;
|
||||
|
||||
if (errorArea === 'username') {
|
||||
document.getElementById('usernameError').innerText = msg.message;
|
||||
}
|
||||
if (errorArea === 'country') {
|
||||
document.getElementById('countryError').innerText = msg.message;
|
||||
}
|
||||
if (errorArea === 'email') {
|
||||
document.getElementById('emailError').innerText = msg.message;
|
||||
}
|
||||
if (errorArea === 'dob') {
|
||||
document.getElementById('dobError').innerText = msg.message;
|
||||
}
|
||||
if (errorArea === 'gender') {
|
||||
document.getElementById('genderError').innerText = msg.message;
|
||||
}
|
||||
if (errorArea === 'password') {
|
||||
document.getElementById('passwordError').innerText = msg.message;
|
||||
}
|
||||
if (errorArea === 'password2' || errorArea === 'passwords') {
|
||||
document.getElementById('password2Error').innerText = msg.message;
|
||||
}
|
||||
} else {
|
||||
// Success: Redirect to signin page
|
||||
setTimeout(() => {
|
||||
window.location.href = '/signin';
|
||||
}, 2000);
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error during signup:', error);
|
||||
document.getElementById('errors').innerText = 'An error occurred. Please try again later.';
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Call init functions
|
||||
});
|
||||
|
||||
async function fetchCountries() {
|
||||
try {
|
||||
const response = await fetch('https://restcountries.com/v3.1/all?fields=name');
|
||||
const data = await response.json();
|
||||
|
||||
const countries = data.map(country => ({
|
||||
text: country.name.common,
|
||||
val: country.cca2,
|
||||
})).sort((a, b) => a.text.localeCompare(b.text));
|
||||
|
||||
return countries;
|
||||
} catch (error) {
|
||||
console.error('Error fetching countries:', error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
83
rss/js/login.js
Normal file
@@ -0,0 +1,83 @@
|
||||
document.addEventListener('DOMContentLoaded', async (v) =>{
|
||||
await isAuth();
|
||||
let loginForm = document.getElementById('loginForm');
|
||||
|
||||
loginForm.addEventListener('submit', async (e) =>{
|
||||
e.preventDefault();
|
||||
|
||||
login();
|
||||
})
|
||||
})
|
||||
|
||||
// Async login function in vanilla JS
|
||||
async function login() {
|
||||
// Set login running state
|
||||
let loginRunning = true;
|
||||
let loginError = false;
|
||||
|
||||
// Get form data
|
||||
let username = document.getElementById('username').value;
|
||||
let password = document.getElementById('password').value;
|
||||
|
||||
let postFields = {
|
||||
userData: {
|
||||
username: username,
|
||||
password: password
|
||||
},
|
||||
action: 'login'
|
||||
};
|
||||
|
||||
try {
|
||||
// Send request
|
||||
const response = await fetch('https://api.stellaamor.com/users.php', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
credentials: 'include', // To handle cookies
|
||||
body: JSON.stringify(postFields)
|
||||
});
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
if (data.status === 'fail') {
|
||||
// Display error if login fails
|
||||
loginError = true;
|
||||
document.getElementById('loginError').innerText = data.message;
|
||||
loginRunning = false;
|
||||
} else {
|
||||
// Successful login, redirect to /home
|
||||
loginRunning = false;
|
||||
setTimeout(() => {
|
||||
window.location.href = '/home';
|
||||
|
||||
// Reset form fields and errors after login
|
||||
document.getElementById('username').value = '';
|
||||
document.getElementById('password').value = '';
|
||||
document.getElementById('loginError').innerText = '';
|
||||
loginRunning = false;
|
||||
}, 1500);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Login error:', error);
|
||||
loginError = true;
|
||||
loginRunning = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Async authentication check function in vanilla JS
|
||||
async function isAuth() {
|
||||
try {
|
||||
const response = await fetch('https://api.stellaamor.com/users.php?isAuth=true', {
|
||||
method: 'GET',
|
||||
credentials: 'include'
|
||||
});
|
||||
const data = await response.json();
|
||||
|
||||
if (data.status === true) {
|
||||
window.location.href = '/home';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} catch (error) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
4
rss/js/main.js
Normal file
@@ -0,0 +1,4 @@
|
||||
// Global functions
|
||||
async function mainFetch(fdata){
|
||||
|
||||
}
|
||||
7
rss/js/menu.js
Normal file
@@ -0,0 +1,7 @@
|
||||
const burger = document.querySelector('.burger');
|
||||
const navLinks = document.querySelector('.nav-links');
|
||||
|
||||
burger.addEventListener('click', () => {
|
||||
navLinks.classList.toggle('nav-active');
|
||||
burger.classList.toggle('toggle');
|
||||
});
|
||||
1
rss/json/countries.json
Normal file
45
rss/php/includes/footer.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<script src="/rss/js/menu.js"></script>
|
||||
|
||||
<?php
|
||||
$pre_page = $_SERVER['PHP_SELF'];
|
||||
$page = str_replace('/', '', $pre_page);
|
||||
$page = str_replace('.php', '', $page);
|
||||
|
||||
if($page == 'index'){
|
||||
echo '<script src="/rss/js/home.js"></script>';
|
||||
}
|
||||
|
||||
if($page == 'signin'){
|
||||
echo '<script src="/rss/js/login.js"></script>';
|
||||
}
|
||||
?>
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<div class="footer-col">
|
||||
<div class="footer-menu">
|
||||
<h3 class="link-title">Links</h3>
|
||||
<ul>
|
||||
<li><a href="/">Home</li>
|
||||
<li><a href="/signin">Sign in</a></li>
|
||||
<li><a href="/about">About</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-col">
|
||||
<div class="footer-menu">
|
||||
<h3 class="link-title">Contact</h3>
|
||||
<ul>
|
||||
<li>Support: <a href="mailto:support@stellaamor.com">support@stellaamor.com</li>
|
||||
<li>Contact: <a href="mailto:info@stellaamor.com">info@stellaamor.com</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-col img">
|
||||
<div class="image-container">
|
||||
<img src="/rss/img/logo-light.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
63
rss/php/includes/header.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Basic Meta Tags -->
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>Stella Amor | <?php echo $page_title;?></title>
|
||||
|
||||
<!-- Meta Description -->
|
||||
<meta name="description" content="<?php echo $page_description;?> ">
|
||||
<meta name="keywords" content="dating">
|
||||
|
||||
<!-- Open Graph Tags for Social Media -->
|
||||
<meta property="og:title" content="Stella Amor | <?php echo $page_title;?>">
|
||||
<meta property="og:description" content="<?php echo $page_description;?>">
|
||||
<meta property="og:image" content="https://stellaamor.com/rss/img/logo.png">
|
||||
<meta property="og:url" content="https://stellaamor.com<?php echo $_SERVER['REQUEST_URI'];?>">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
<!-- Twitter Card Meta Tags -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Stella Amor | <?php echo $page_title;?>">
|
||||
<meta name="twitter:description" content="<?php echo $page_description;?>">
|
||||
<meta name="twitter:image" content="https://stellaamor.com/rss/img/logo.png">
|
||||
|
||||
|
||||
<link rel="icon" type="image/png" href="/rss/favicon/favicon-96x96.png" sizes="96x96" />
|
||||
<link rel="icon" type="image/svg+xml" href="/rss/favicon/favicon.svg" />
|
||||
<link rel="shortcut icon" href="/rss/favicon/favicon.ico" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/rss/favicon/apple-touch-icon.png" />
|
||||
<link rel="manifest" href="/rss/favicon/site.webmanifest" />
|
||||
|
||||
<!-- Canonical Link (for duplicate pages) -->
|
||||
<link rel="canonical" href="https://stellaamor.com<?php echo $_SERVER['REQUEST_URI'];?>">
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="/favicon.ico" type="image/x-icon">
|
||||
|
||||
<!-- Robots Meta Tag (for search engine crawling control) -->
|
||||
<meta name="robots" content="index, follow">
|
||||
|
||||
<!-- Include css and JS -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/@mdi/font/css/materialdesignicons.min.css" rel="stylesheet">
|
||||
<link href="/rss/css/main.css" rel="stylesheet">
|
||||
<body>
|
||||
|
||||
<!-- Begin menu -->
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<a href="/" class="logo"><img src="/rss/img/logo.png"></a>
|
||||
<ul class="nav-links">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="signin">Login</a></li>
|
||||
<li><a href="/about">About us</a></li>
|
||||
</ul>
|
||||
<div class="burger">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
22
signin.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
/**
|
||||
* Page details
|
||||
*/
|
||||
$page_title = 'Log In or Sign Up: Start Your Dating Journey';
|
||||
$page_description = 'Log in or create a Stella Amor account. Your path to personalized online dating with advanced matchmaking starts here. Join now!';
|
||||
include($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/header.php');
|
||||
?>
|
||||
|
||||
|
||||
<div class="login-page">
|
||||
<div class="login">
|
||||
<img src="/rss/img/logo.png" alt="Stella Amor" class="logo">
|
||||
<form method="POST" action="#" id="loginForm">
|
||||
<input type="text" placeholder="Username" id="username" class="input">
|
||||
<input type="password" placeholder="Password" id="password" class="input">
|
||||
<button type="submit" class="login-button">Log In</button>
|
||||
</form>
|
||||
<!-- <a href="#" class="forgot-password">Lost your password?</a> -->
|
||||
</div>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/rss/php/includes/footer.php');?>
|
||||
23
sitemap.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<!-- Homepage -->
|
||||
<url>
|
||||
<loc>https://stellaamor.com/</loc>
|
||||
<lastmod>2024-12-15</lastmod>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
|
||||
<!-- Login/Sign-Up Page -->
|
||||
<url>
|
||||
<loc>https://stellaamor.com/login</loc>
|
||||
<lastmod>2024-12-15</lastmod>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
|
||||
<!-- About Us Page -->
|
||||
<url>
|
||||
<loc>https://stellaamor.com/about</loc>
|
||||
<lastmod>2024-12-15</lastmod>
|
||||
<priority>0.6</priority>
|
||||
</url>
|
||||
</urlset>
|
||||