mesy10 commited on
Commit
dac2a3c
·
verified ·
1 Parent(s): c0cf9e1

Ok je, ali ova koncept mi nije baš za SaaS dovoljno jak, uradi izmjene tako da bude prilagođen današnjim SaaS riješenjima! - Initial Deployment

Browse files
Files changed (2) hide show
  1. README.md +7 -5
  2. index.html +267 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Qr Menu Sign Up
3
- emoji: 🏃
4
- colorFrom: red
5
- colorTo: red
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: qr-menu-sign-up
3
+ emoji: 🐳
4
+ colorFrom: purple
5
+ colorTo: pink
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,267 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>QR Menu Pro | Sign Up</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ .gradient-bg {
11
+ background: linear-gradient(135deg, #6366F1 0%, #8B5CF6 50%, #EC4899 100%);
12
+ }
13
+ .feature-card {
14
+ backdrop-filter: blur(10px);
15
+ background: rgba(255, 255, 255, 0.1);
16
+ border: 1px solid rgba(255, 255, 255, 0.2);
17
+ }
18
+ .input-focus:focus {
19
+ box-shadow: 0 0 0 3px rgba(107, 115, 255, 0.3);
20
+ }
21
+ .shake {
22
+ animation: shake 0.5s;
23
+ }
24
+ @keyframes shake {
25
+ 0%, 100% { transform: translateX(0); }
26
+ 20%, 60% { transform: translateX(-5px); }
27
+ 40%, 80% { transform: translateX(5px); }
28
+ }
29
+ </style>
30
+ </head>
31
+ <body class="bg-gray-50 min-h-screen flex items-center justify-center p-4">
32
+ <div class="max-w-4xl w-full bg-white rounded-2xl shadow-xl overflow-hidden flex flex-col md:flex-row">
33
+ <!-- Left Side - Visual Section -->
34
+ <div class="gradient-bg text-white p-10 md:w-1/2 flex flex-col justify-center items-center text-center">
35
+ <div class="mb-8">
36
+ <div class="flex items-center justify-center mb-4">
37
+ <div class="bg-white rounded-xl p-3 shadow-lg">
38
+ <i class="fas fa-qrcode text-4xl text-indigo-600"></i>
39
+ </div>
40
+ <h1 class="text-3xl font-bold ml-3">QRMenu<span class="text-indigo-200">Pro</span></h1>
41
+ </div>
42
+ <p class="opacity-90 text-lg">The complete digital menu solution for modern restaurants</p>
43
+ </div>
44
+
45
+ <div class="mt-8 w-full max-w-xs">
46
+ <div class="feature-card p-4 rounded-xl mb-4 transition hover:scale-[1.02]">
47
+ <div class="flex items-center mb-2">
48
+ <i class="fas fa-bolt text-yellow-300 mr-2"></i>
49
+ <span class="font-medium">Instant Setup</span>
50
+ </div>
51
+ <p class="text-sm opacity-90">Get your digital menu running in minutes</p>
52
+ </div>
53
+
54
+ <div class="bg-white bg-opacity-20 p-4 rounded-lg mb-4">
55
+ <div class="flex items-center mb-2">
56
+ <i class="fas fa-chart-line text-green-300 mr-2"></i>
57
+ <span class="font-medium">Real-time Analytics</span>
58
+ </div>
59
+ <p class="text-sm opacity-90">Track customer interactions and preferences</p>
60
+ </div>
61
+
62
+ <div class="bg-white bg-opacity-20 p-4 rounded-lg">
63
+ <div class="flex items-center mb-2">
64
+ <i class="fas fa-mobile-alt text-blue-200 mr-2"></i>
65
+ <span class="font-medium">Mobile Optimized</span>
66
+ </div>
67
+ <p class="text-sm opacity-90">Works perfectly on any device</p>
68
+ </div>
69
+ </div>
70
+ </div>
71
+
72
+ <!-- Right Side - Form Section -->
73
+ <div class="p-8 md:p-10 md:w-1/2">
74
+ <h2 class="text-3xl font-bold text-gray-900 mb-1">Get Started</h2>
75
+ <p class="text-gray-600 mb-6">Start your 14-day free trial. No credit card required.</p>
76
+
77
+ <div class="flex space-x-4 mb-6">
78
+ <button class="flex-1 flex items-center justify-center py-2 px-4 border border-gray-300 rounded-lg hover:bg-gray-50 transition">
79
+ <i class="fab fa-google text-red-500 mr-2"></i>
80
+ <span>Google</span>
81
+ </button>
82
+ <button class="flex-1 flex items-center justify-center py-2 px-4 border border-gray-300 rounded-lg hover:bg-gray-50 transition">
83
+ <i class="fab fa-apple text-gray-900 mr-2"></i>
84
+ <span>Apple</span>
85
+ </button>
86
+ </div>
87
+
88
+ <div class="relative mb-6">
89
+ <div class="absolute inset-0 flex items-center">
90
+ <div class="w-full border-t border-gray-300"></div>
91
+ </div>
92
+ <div class="relative flex justify-center text-sm">
93
+ <span class="px-2 bg-white text-gray-500">Or continue with email</span>
94
+ </div>
95
+ </div>
96
+
97
+ <form id="signupForm" class="space-y-6">
98
+ <div>
99
+ <label for="name" class="block text-sm font-medium text-gray-700 mb-1">Full Name</label>
100
+ <div class="relative">
101
+ <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
102
+ <i class="fas fa-user text-gray-400"></i>
103
+ </div>
104
+ <input type="text" id="name" name="name" required
105
+ class="input-focus pl-10 w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:border-blue-500 transition"
106
+ placeholder="John Doe">
107
+ </div>
108
+ </div>
109
+
110
+ <div>
111
+ <label for="email" class="block text-sm font-medium text-gray-700 mb-1">Email Address</label>
112
+ <div class="relative">
113
+ <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
114
+ <i class="fas fa-envelope text-gray-400"></i>
115
+ </div>
116
+ <input type="email" id="email" name="email" required
117
+ class="input-focus pl-10 w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:border-blue-500 transition"
118
+ placeholder="[email protected]">
119
+ </div>
120
+ </div>
121
+
122
+ <div>
123
+ <label for="password" class="block text-sm font-medium text-gray-700 mb-1">Password</label>
124
+ <div class="relative">
125
+ <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
126
+ <i class="fas fa-lock text-gray-400"></i>
127
+ </div>
128
+ <input type="password" id="password" name="password" required minlength="8"
129
+ class="input-focus pl-10 w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:border-blue-500 transition"
130
+ placeholder="••••••••">
131
+ <div class="absolute inset-y-0 right-0 pr-3 flex items-center">
132
+ <button type="button" class="text-gray-400 hover:text-gray-600 focus:outline-none toggle-password">
133
+ <i class="fas fa-eye"></i>
134
+ </button>
135
+ </div>
136
+ </div>
137
+ <p class="mt-1 text-xs text-gray-500">Must be at least 8 characters</p>
138
+ </div>
139
+
140
+ <div>
141
+ <label for="confirmPassword" class="block text-sm font-medium text-gray-700 mb-1">Confirm Password</label>
142
+ <div class="relative">
143
+ <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
144
+ <i class="fas fa-lock text-gray-400"></i>
145
+ </div>
146
+ <input type="password" id="confirmPassword" name="confirmPassword" required minlength="8"
147
+ class="input-focus pl-10 w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:border-blue-500 transition"
148
+ placeholder="••••••••">
149
+ <div class="absolute inset-y-0 right-0 pr-3 flex items-center">
150
+ <button type="button" class="text-gray-400 hover:text-gray-600 focus:outline-none toggle-password">
151
+ <i class="fas fa-eye"></i>
152
+ </button>
153
+ </div>
154
+ </div>
155
+ </div>
156
+
157
+ <div class="flex items-center">
158
+ <input id="terms" name="terms" type="checkbox" required
159
+ class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
160
+ <label for="terms" class="ml-2 block text-sm text-gray-700">
161
+ I agree to the <a href="#" class="text-blue-600 hover:text-blue-500">Terms of Service</a> and <a href="#" class="text-blue-600 hover:text-blue-500">Privacy Policy</a>
162
+ </label>
163
+ </div>
164
+
165
+ <button type="submit"
166
+ class="gradient-bg w-full text-white py-3 px-4 rounded-lg font-medium hover:opacity-90 transition focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 shadow-lg hover:shadow-indigo-500/20">
167
+ Get Started Now
168
+ </button>
169
+
170
+ <div class="text-center text-sm text-gray-600">
171
+ Already have an account? <a href="#" class="text-blue-600 hover:text-blue-500 font-medium">Sign in</a>
172
+ </div>
173
+ </form>
174
+ </div>
175
+ </div>
176
+
177
+ <script>
178
+ document.addEventListener('DOMContentLoaded', function() {
179
+ // Toggle password visibility
180
+ const togglePasswordButtons = document.querySelectorAll('.toggle-password');
181
+ togglePasswordButtons.forEach(button => {
182
+ button.addEventListener('click', function() {
183
+ const input = this.closest('.relative').querySelector('input');
184
+ const icon = this.querySelector('i');
185
+
186
+ if (input.type === 'password') {
187
+ input.type = 'text';
188
+ icon.classList.replace('fa-eye', 'fa-eye-slash');
189
+ } else {
190
+ input.type = 'password';
191
+ icon.classList.replace('fa-eye-slash', 'fa-eye');
192
+ }
193
+ });
194
+ });
195
+
196
+ // Form validation
197
+ const form = document.getElementById('signupForm');
198
+ form.addEventListener('submit', function(e) {
199
+ e.preventDefault();
200
+
201
+ const name = document.getElementById('name').value.trim();
202
+ const email = document.getElementById('email').value.trim();
203
+ const password = document.getElementById('password').value;
204
+ const confirmPassword = document.getElementById('confirmPassword').value;
205
+ const terms = document.getElementById('terms').checked;
206
+
207
+ let isValid = true;
208
+
209
+ // Reset error states
210
+ document.querySelectorAll('input').forEach(input => {
211
+ input.classList.remove('border-red-500', 'shake');
212
+ });
213
+
214
+ // Validate name
215
+ if (name === '') {
216
+ document.getElementById('name').classList.add('border-red-500', 'shake');
217
+ isValid = false;
218
+ }
219
+
220
+ // Validate email
221
+ if (email === '' || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
222
+ document.getElementById('email').classList.add('border-red-500', 'shake');
223
+ isValid = false;
224
+ }
225
+
226
+ // Validate password
227
+ if (password.length < 8) {
228
+ document.getElementById('password').classList.add('border-red-500', 'shake');
229
+ isValid = false;
230
+ }
231
+
232
+ // Validate password match
233
+ if (password !== confirmPassword) {
234
+ document.getElementById('confirmPassword').classList.add('border-red-500', 'shake');
235
+ isValid = false;
236
+ }
237
+
238
+ // Validate terms
239
+ if (!terms) {
240
+ document.getElementById('terms').classList.add('border-red-500', 'shake');
241
+ isValid = false;
242
+ }
243
+
244
+ if (isValid) {
245
+ // Simulate form submission
246
+ const submitButton = form.querySelector('button[type="submit"]');
247
+ submitButton.innerHTML = '<i class="fas fa-spinner fa-spin mr-2"></i> Creating account...';
248
+ submitButton.disabled = true;
249
+
250
+ setTimeout(() => {
251
+ alert('Account created successfully! Redirecting to dashboard...');
252
+ // In a real app, you would redirect to the dashboard
253
+ // window.location.href = '/dashboard';
254
+ }, 1500);
255
+ }
256
+ });
257
+
258
+ // Remove shake animation after it ends
259
+ document.querySelectorAll('input').forEach(input => {
260
+ input.addEventListener('animationend', function() {
261
+ this.classList.remove('shake');
262
+ });
263
+ });
264
+ });
265
+ </script>
266
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=mesy10/qr-menu-sign-up" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
267
+ </html>