amr701 commited on
Commit
7680b8a
·
verified ·
1 Parent(s): 389e5ae

Add 3 files

Browse files
Files changed (3) hide show
  1. README.md +7 -5
  2. index.html +698 -19
  3. prompts.txt +0 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Gazdo
3
- emoji: 🚀
4
- colorFrom: blue
5
- colorTo: indigo
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: gazdo
3
+ emoji: 🐳
4
+ colorFrom: gray
5
+ colorTo: purple
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,698 @@
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>DirectWork - Fair Job Platform</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
+ .blur-effect {
11
+ backdrop-filter: blur(10px);
12
+ -webkit-backdrop-filter: blur(10px);
13
+ }
14
+ .gradient-bg {
15
+ background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
16
+ }
17
+ .service-card:hover {
18
+ transform: translateY(-5px);
19
+ box-shadow: 0 10px 25px rgba(0,0,0,0.1);
20
+ }
21
+ .dark-mode {
22
+ background-color: #1a202c;
23
+ color: #f7fafc;
24
+ }
25
+ .dark-mode .card {
26
+ background-color: #2d3748;
27
+ color: #f7fafc;
28
+ }
29
+ .encrypted::before {
30
+ content: "🔒 ";
31
+ }
32
+ .tor-warning {
33
+ animation: pulse 2s infinite;
34
+ }
35
+ @keyframes pulse {
36
+ 0% { opacity: 0.8; }
37
+ 50% { opacity: 1; }
38
+ 100% { opacity: 0.8; }
39
+ }
40
+ </style>
41
+ </head>
42
+ <body class="gradient-bg min-h-screen">
43
+ <!-- Tor Warning Banner -->
44
+ <div class="tor-warning bg-yellow-100 text-yellow-800 p-2 text-center text-sm hidden" id="torBanner">
45
+ For maximum privacy, access this site through Tor browser. <a href="https://www.torproject.org/" target="_blank" class="font-bold underline">Get Tor</a>
46
+ </div>
47
+
48
+ <!-- Navigation -->
49
+ <nav class="bg-white shadow-sm blur-effect sticky top-0 z-50">
50
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
51
+ <div class="flex justify-between h-16">
52
+ <div class="flex">
53
+ <div class="flex-shrink-0 flex items-center">
54
+ <i class="fas fa-handshake text-blue-500 text-2xl"></i>
55
+ <span class="ml-2 text-xl font-semibold">DirectWork</span>
56
+ </div>
57
+ </div>
58
+ <div class="hidden sm:ml-6 sm:flex sm:items-center space-x-4">
59
+ <button id="darkModeToggle" class="p-1 rounded-full focus:outline-none">
60
+ <i class="fas fa-moon text-gray-600"></i>
61
+ </button>
62
+ <button id="languageToggle" class="p-1 rounded-full focus:outline-none">
63
+ <i class="fas fa-language text-gray-600"></i>
64
+ </button>
65
+ <button id="torToggle" class="p-1 rounded-full focus:outline-none">
66
+ <i class="fas fa-user-secret text-gray-600"></i>
67
+ </button>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ </nav>
72
+
73
+ <!-- Main Content -->
74
+ <main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
75
+ <!-- Hero Section -->
76
+ <section class="text-center py-12">
77
+ <h1 class="text-4xl font-bold text-gray-800 mb-4">Fair Work. Direct Pay.</h1>
78
+ <p class="text-xl text-gray-600 max-w-3xl mx-auto">
79
+ Connecting workers directly with people who need help - no middlemen, no exploitation.
80
+ </p>
81
+ <div class="mt-8 flex justify-center space-x-4">
82
+ <button id="findWorkBtn" class="bg-blue-500 hover:bg-blue-600 text-white px-6 py-3 rounded-lg font-medium transition">
83
+ <i class="fas fa-search mr-2"></i> Find Work
84
+ </button>
85
+ <button id="findWorkerBtn" class="bg-green-500 hover:bg-green-600 text-white px-6 py-3 rounded-lg font-medium transition">
86
+ <i class="fas fa-users mr-2"></i> Find Worker
87
+ </button>
88
+ </div>
89
+ </section>
90
+
91
+ <!-- How It Works -->
92
+ <section class="py-12">
93
+ <h2 class="text-3xl font-bold text-center text-gray-800 mb-12">How It Works</h2>
94
+ <div class="grid md:grid-cols-3 gap-8">
95
+ <div class="bg-white p-6 rounded-lg shadow-md">
96
+ <div class="text-blue-500 text-4xl mb-4">
97
+ <i class="fas fa-user-plus"></i>
98
+ </div>
99
+ <h3 class="text-xl font-semibold mb-2">1. Create Profile</h3>
100
+ <p class="text-gray-600">Workers create anonymous profiles with skills and availability.</p>
101
+ </div>
102
+ <div class="bg-white p-6 rounded-lg shadow-md">
103
+ <div class="text-blue-500 text-4xl mb-4">
104
+ <i class="fas fa-search"></i>
105
+ </div>
106
+ <h3 class="text-xl font-semibold mb-2">2. Find Match</h3>
107
+ <p class="text-gray-600">Clients search for workers based on skills, location, and ratings.</p>
108
+ </div>
109
+ <div class="bg-white p-6 rounded-lg shadow-md">
110
+ <div class="text-blue-500 text-4xl mb-4">
111
+ <i class="fas fa-hand-holding-usd"></i>
112
+ </div>
113
+ <h3 class="text-xl font-semibold mb-2">3. Work & Get Paid</h3>
114
+ <p class="text-gray-600">Direct payment upon completion with no middlemen taking cuts.</p>
115
+ </div>
116
+ </div>
117
+ </section>
118
+
119
+ <!-- Worker Registration Form (Hidden by default) -->
120
+ <section id="workerForm" class="hidden bg-white p-8 rounded-lg shadow-lg max-w-3xl mx-auto my-12">
121
+ <h2 class="text-2xl font-bold mb-6 text-center">Worker Registration</h2>
122
+ <form id="workerRegistrationForm">
123
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
124
+ <div>
125
+ <label class="block text-gray-700 mb-2">Choose a Nickname</label>
126
+ <input type="text" class="w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Worker123" required>
127
+ </div>
128
+ <div>
129
+ <label class="block text-gray-700 mb-2">Primary Skill</label>
130
+ <select class="w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" required>
131
+ <option value="">Select...</option>
132
+ <option>Cleaning</option>
133
+ <option>Farming</option>
134
+ <option>Construction</option>
135
+ <option>Gardening</option>
136
+ <option>Cooking</option>
137
+ <option>Delivery</option>
138
+ <option>Other</option>
139
+ </select>
140
+ </div>
141
+ <div class="md:col-span-2">
142
+ <label class="block text-gray-700 mb-2">Description</label>
143
+ <textarea class="w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" rows="3" placeholder="Describe your skills and experience..." required></textarea>
144
+ </div>
145
+ <div>
146
+ <label class="block text-gray-700 mb-2">Hourly Rate (€)</label>
147
+ <input type="number" min="5" max="50" class="w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="10" required>
148
+ </div>
149
+ <div>
150
+ <label class="block text-gray-700 mb-2">Availability</label>
151
+ <select class="w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" required>
152
+ <option value="">Select...</option>
153
+ <option>Full-time</option>
154
+ <option>Part-time</option>
155
+ <option>Weekends</option>
156
+ <option>Evenings</option>
157
+ <option>On-call</option>
158
+ </select>
159
+ </div>
160
+ <div class="md:col-span-2">
161
+ <label class="block text-gray-700 mb-2">Contact Method</label>
162
+ <div class="flex items-center space-x-4">
163
+ <select class="flex-1 px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" required>
164
+ <option value="">Select...</option>
165
+ <option>Signal</option>
166
+ <option>Telegram</option>
167
+ <option>WhatsApp</option>
168
+ <option>Email</option>
169
+ <option>Phone</option>
170
+ </select>
171
+ <input type="text" class="flex-1 px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Contact info" required>
172
+ </div>
173
+ </div>
174
+ <div class="md:col-span-2">
175
+ <div class="flex items-center">
176
+ <input type="checkbox" id="privacyCheck" class="mr-2" required>
177
+ <label for="privacyCheck" class="text-sm text-gray-600">I understand this platform collects minimal data and prioritizes privacy</label>
178
+ </div>
179
+ </div>
180
+ </div>
181
+ <div class="mt-6 text-center">
182
+ <button type="submit" class="bg-blue-500 hover:bg-blue-600 text-white px-8 py-3 rounded-lg font-medium transition">
183
+ <i class="fas fa-user-plus mr-2"></i> Register as Worker
184
+ </button>
185
+ </div>
186
+ </form>
187
+ </section>
188
+
189
+ <!-- Client Search Form (Hidden by default) -->
190
+ <section id="clientForm" class="hidden bg-white p-8 rounded-lg shadow-lg max-w-3xl mx-auto my-12">
191
+ <h2 class="text-2xl font-bold mb-6 text-center">Find a Worker</h2>
192
+ <form id="clientSearchForm">
193
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
194
+ <div>
195
+ <label class="block text-gray-700 mb-2">Service Needed</label>
196
+ <select class="w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" required>
197
+ <option value="">Select...</option>
198
+ <option>Cleaning</option>
199
+ <option>Farming</option>
200
+ <option>Construction</option>
201
+ <option>Gardening</option>
202
+ <option>Cooking</option>
203
+ <option>Delivery</option>
204
+ <option>Other</option>
205
+ </select>
206
+ </div>
207
+ <div>
208
+ <label class="block text-gray-700 mb-2">Location Area</label>
209
+ <input type="text" class="w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="City or District" required>
210
+ </div>
211
+ <div>
212
+ <label class="block text-gray-700 mb-2">Date Needed</label>
213
+ <input type="date" class="w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" required>
214
+ </div>
215
+ <div>
216
+ <label class="block text-gray-700 mb-2">Estimated Hours</label>
217
+ <input type="number" min="1" max="12" class="w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="4" required>
218
+ </div>
219
+ <div class="md:col-span-2">
220
+ <label class="block text-gray-700 mb-2">Job Description</label>
221
+ <textarea class="w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" rows="3" placeholder="Describe the work needed..." required></textarea>
222
+ </div>
223
+ <div class="md:col-span-2">
224
+ <label class="block text-gray-700 mb-2">Budget (€ per hour)</label>
225
+ <input type="range" min="5" max="30" value="10" class="w-full" id="budgetSlider">
226
+ <div class="flex justify-between text-sm text-gray-600">
227
+ <span>€5</span>
228
+ <span id="budgetValue">€10</span>
229
+ <span>€30</span>
230
+ </div>
231
+ </div>
232
+ </div>
233
+ <div class="mt-6 text-center">
234
+ <button type="submit" class="bg-green-500 hover:bg-green-600 text-white px-8 py-3 rounded-lg font-medium transition">
235
+ <i class="fas fa-search mr-2"></i> Search Workers
236
+ </button>
237
+ </div>
238
+ </form>
239
+ </section>
240
+
241
+ <!-- Worker Results (Hidden by default) -->
242
+ <section id="workerResults" class="hidden my-12">
243
+ <div class="flex justify-between items-center mb-6">
244
+ <h2 class="text-2xl font-bold">Available Workers</h2>
245
+ <div class="flex space-x-2">
246
+ <select class="px-3 py-1 border rounded-lg">
247
+ <option>Sort by: Rating</option>
248
+ <option>Sort by: Price</option>
249
+ <option>Sort by: Availability</option>
250
+ </select>
251
+ </div>
252
+ </div>
253
+ <div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6" id="workersContainer">
254
+ <!-- Worker cards will be added here by JavaScript -->
255
+ </div>
256
+ </section>
257
+
258
+ <!-- Worker Detail Modal (Hidden by default) -->
259
+ <div id="workerModal" class="hidden fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4">
260
+ <div class="bg-white rounded-lg max-w-2xl w-full max-h-[90vh] overflow-y-auto">
261
+ <div class="p-6">
262
+ <div class="flex justify-between items-start mb-4">
263
+ <div>
264
+ <h3 class="text-2xl font-bold" id="modalWorkerName">Worker Name</h3>
265
+ <div class="flex items-center mt-1">
266
+ <div class="flex text-yellow-400">
267
+ <i class="fas fa-star"></i>
268
+ <i class="fas fa-star"></i>
269
+ <i class="fas fa-star"></i>
270
+ <i class="fas fa-star"></i>
271
+ <i class="fas fa-star-half-alt"></i>
272
+ </div>
273
+ <span class="ml-2 text-gray-600" id="modalRating">4.5 (12 reviews)</span>
274
+ </div>
275
+ </div>
276
+ <button id="closeModal" class="text-gray-500 hover:text-gray-700">
277
+ <i class="fas fa-times text-2xl"></i>
278
+ </button>
279
+ </div>
280
+
281
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-6">
282
+ <div class="md:col-span-2">
283
+ <h4 class="font-semibold text-lg mb-2">About</h4>
284
+ <p id="modalDescription" class="text-gray-700 mb-4">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
285
+
286
+ <h4 class="font-semibold text-lg mb-2">Skills</h4>
287
+ <div class="flex flex-wrap gap-2 mb-4">
288
+ <span class="bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm">Cleaning</span>
289
+ <span class="bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm">Organization</span>
290
+ <span class="bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm">Laundry</span>
291
+ </div>
292
+
293
+ <h4 class="font-semibold text-lg mb-2">Availability</h4>
294
+ <p id="modalAvailability" class="text-gray-700 mb-4">Weekdays, 9am-5pm</p>
295
+ </div>
296
+
297
+ <div class="bg-gray-50 p-4 rounded-lg">
298
+ <h4 class="font-semibold text-lg mb-4">Hire This Worker</h4>
299
+ <div class="mb-4">
300
+ <label class="block text-gray-700 mb-2">Date</label>
301
+ <input type="date" class="w-full px-3 py-2 border rounded-lg">
302
+ </div>
303
+ <div class="mb-4">
304
+ <label class="block text-gray-700 mb-2">Hours Needed</label>
305
+ <input type="number" min="1" value="2" class="w-full px-3 py-2 border rounded-lg">
306
+ </div>
307
+ <div class="mb-4">
308
+ <label class="block text-gray-700 mb-2">Hourly Rate</label>
309
+ <p class="font-semibold text-lg" id="modalRate">€12/hour</p>
310
+ </div>
311
+ <div class="mb-4">
312
+ <label class="block text-gray-700 mb-2">Estimated Total</label>
313
+ <p class="font-semibold text-xl">€24</p>
314
+ </div>
315
+ <button class="w-full bg-blue-500 hover:bg-blue-600 text-white py-3 rounded-lg font-medium">
316
+ <i class="fas fa-handshake mr-2"></i> Request Worker
317
+ </button>
318
+ <p class="text-xs text-gray-500 mt-2 text-center encrypted">All communications are encrypted</p>
319
+ </div>
320
+ </div>
321
+
322
+ <div>
323
+ <h4 class="font-semibold text-lg mb-4">Reviews</h4>
324
+ <div class="space-y-4" id="reviewsContainer">
325
+ <!-- Reviews will be added here by JavaScript -->
326
+ </div>
327
+ </div>
328
+ </div>
329
+ </div>
330
+ </div>
331
+
332
+ <!-- Security & Privacy Section -->
333
+ <section class="py-12 bg-white rounded-lg shadow-md mt-12">
334
+ <div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
335
+ <h2 class="text-3xl font-bold text-center mb-8">Our Commitment to Privacy</h2>
336
+ <div class="grid md:grid-cols-2 gap-8">
337
+ <div class="flex items-start">
338
+ <div class="bg-blue-100 p-3 rounded-full mr-4">
339
+ <i class="fas fa-shield-alt text-blue-500 text-xl"></i>
340
+ </div>
341
+ <div>
342
+ <h3 class="text-xl font-semibold mb-2">No Personal Data</h3>
343
+ <p class="text-gray-600">We don't collect or store government-identifiable information about workers.</p>
344
+ </div>
345
+ </div>
346
+ <div class="flex items-start">
347
+ <div class="bg-blue-100 p-3 rounded-full mr-4">
348
+ <i class="fas fa-lock text-blue-500 text-xl"></i>
349
+ </div>
350
+ <div>
351
+ <h3 class="text-xl font-semibold mb-2">Encrypted Communications</h3>
352
+ <p class="text-gray-600">All messages and transactions are encrypted end-to-end.</p>
353
+ </div>
354
+ </div>
355
+ <div class="flex items-start">
356
+ <div class="bg-blue-100 p-3 rounded-full mr-4">
357
+ <i class="fas fa-eye-slash text-blue-500 text-xl"></i>
358
+ </div>
359
+ <div>
360
+ <h3 class="text-xl font-semibold mb-2">No Tracking</h3>
361
+ <p class="text-gray-600">We don't use tracking cookies or analytics that could compromise privacy.</p>
362
+ </div>
363
+ </div>
364
+ <div class="flex items-start">
365
+ <div class="bg-blue-100 p-3 rounded-full mr-4">
366
+ <i class="fas fa-network-wired text-blue-500 text-xl"></i>
367
+ </div>
368
+ <div>
369
+ <h3 class="text-xl font-semibold mb-2">Tor Compatible</h3>
370
+ <p class="text-gray-600">Access our service anonymously through the Tor network for maximum privacy.</p>
371
+ </div>
372
+ </div>
373
+ </div>
374
+ </div>
375
+ </section>
376
+ </main>
377
+
378
+ <!-- Footer -->
379
+ <footer class="bg-gray-800 text-white py-8">
380
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
381
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-8">
382
+ <div>
383
+ <h3 class="text-lg font-semibold mb-4">DirectWork</h3>
384
+ <p class="text-gray-400">Connecting workers directly with fair opportunities since 2023.</p>
385
+ </div>
386
+ <div>
387
+ <h3 class="text-lg font-semibold mb-4">Quick Links</h3>
388
+ <ul class="space-y-2">
389
+ <li><a href="#" class="text-gray-400 hover:text-white">Find Work</a></li>
390
+ <li><a href="#" class="text-gray-400 hover:text-white">Find Workers</a></li>
391
+ <li><a href="#" class="text-gray-400 hover:text-white">Safety Tips</a></li>
392
+ </ul>
393
+ </div>
394
+ <div>
395
+ <h3 class="text-lg font-semibold mb-4">Resources</h3>
396
+ <ul class="space-y-2">
397
+ <li><a href="#" class="text-gray-400 hover:text-white">Worker Rights</a></li>
398
+ <li><a href="#" class="text-gray-400 hover:text-white">Privacy Guide</a></li>
399
+ <li><a href="#" class="text-gray-400 hover:text-white">Tor Browser</a></li>
400
+ </ul>
401
+ </div>
402
+ <div>
403
+ <h3 class="text-lg font-semibold mb-4">Contact</h3>
404
+ <p class="text-gray-400">For support, use secure messaging apps:</p>
405
+ <div class="flex space-x-4 mt-2">
406
+ <a href="#" class="text-gray-400 hover:text-white"><i class="fab fa-telegram text-xl"></i></a>
407
+ <a href="#" class="text-gray-400 hover:text-white"><i class="fab fa-signal text-xl"></i></a>
408
+ </div>
409
+ </div>
410
+ </div>
411
+ <div class="border-t border-gray-700 mt-8 pt-8 text-center text-gray-400 text-sm">
412
+ <p>© 2023 DirectWork. All rights reserved. This service operates in accordance with privacy laws.</p>
413
+ <p class="mt-2">This website does not collect personal data and respects user anonymity.</p>
414
+ </div>
415
+ </div>
416
+ </footer>
417
+
418
+ <script>
419
+ // Sample worker data
420
+ const workers = [
421
+ {
422
+ id: 1,
423
+ nickname: "CleanExpert",
424
+ skill: "Cleaning",
425
+ description: "Professional cleaner with 5 years experience. Specialize in deep cleaning and organization. Very detail-oriented and reliable.",
426
+ rate: 12,
427
+ rating: 4.7,
428
+ reviews: 15,
429
+ availability: "Weekdays",
430
+ contact: "Telegram: @CleanExpertNL"
431
+ },
432
+ {
433
+ id: 2,
434
+ nickname: "FarmHand",
435
+ skill: "Farming",
436
+ description: "Experienced farm worker skilled in planting, harvesting, and animal care. Strong and hardworking with own transportation.",
437
+ rate: 15,
438
+ rating: 4.9,
439
+ reviews: 8,
440
+ availability: "Full-time",
441
+ contact: "Signal: +31 6 12345678"
442
+ },
443
+ {
444
+ id: 3,
445
+ nickname: "GreenThumb",
446
+ skill: "Gardening",
447
+ description: "Passionate gardener with knowledge of plants and landscaping. Can help with planting, pruning, and garden maintenance.",
448
+ rate: 14,
449
+ rating: 4.5,
450
+ reviews: 12,
451
+ availability: "Weekends",
452
+ contact: "WhatsApp: +31 6 87654321"
453
+ },
454
+ {
455
+ id: 4,
456
+ nickname: "FixItMax",
457
+ skill: "Construction",
458
+ description: "Skilled handyman for small construction and repair jobs. Honest and efficient with fair pricing.",
459
+ rate: 18,
460
+ rating: 4.8,
461
+ reviews: 20,
462
+ availability: "On-call",
463
+ contact: "Email: fixitmax@protonmail.com"
464
+ },
465
+ {
466
+ id: 5,
467
+ nickname: "FreshCook",
468
+ skill: "Cooking",
469
+ description: "Home cook specializing in healthy meals and traditional dishes. Can prepare meals for families or events.",
470
+ rate: 16,
471
+ rating: 4.6,
472
+ reviews: 7,
473
+ availability: "Evenings",
474
+ contact: "Telegram: @FreshCookNL"
475
+ },
476
+ {
477
+ id: 6,
478
+ nickname: "QuickDelivery",
479
+ skill: "Delivery",
480
+ description: "Reliable delivery person with own bicycle. Available for food, packages, and other local deliveries.",
481
+ rate: 10,
482
+ rating: 4.4,
483
+ reviews: 5,
484
+ availability: "Daily",
485
+ contact: "Signal: +31 6 11223344"
486
+ }
487
+ ];
488
+
489
+ // Sample reviews data
490
+ const reviews = [
491
+ {
492
+ workerId: 1,
493
+ author: "HappyClient",
494
+ rating: 5,
495
+ comment: "Did an amazing job cleaning my apartment. Very thorough and professional!",
496
+ date: "2023-05-15"
497
+ },
498
+ {
499
+ workerId: 1,
500
+ author: "SatisfiedCustomer",
501
+ rating: 4,
502
+ comment: "Good cleaning service, arrived on time and did what was asked.",
503
+ date: "2023-06-02"
504
+ },
505
+ {
506
+ workerId: 2,
507
+ author: "FarmOwner",
508
+ rating: 5,
509
+ comment: "Best farm worker I've ever hired. Knowledgeable and hardworking.",
510
+ date: "2023-04-20"
511
+ },
512
+ {
513
+ workerId: 3,
514
+ author: "GardenLover",
515
+ rating: 5,
516
+ comment: "Transformed my messy garden into a beautiful space. Highly recommend!",
517
+ date: "2023-05-30"
518
+ }
519
+ ];
520
+
521
+ // DOM Elements
522
+ const findWorkBtn = document.getElementById('findWorkBtn');
523
+ const findWorkerBtn = document.getElementById('findWorkerBtn');
524
+ const workerForm = document.getElementById('workerForm');
525
+ const clientForm = document.getElementById('clientForm');
526
+ const workerResults = document.getElementById('workerResults');
527
+ const workersContainer = document.getElementById('workersContainer');
528
+ const workerModal = document.getElementById('workerModal');
529
+ const closeModal = document.getElementById('closeModal');
530
+ const darkModeToggle = document.getElementById('darkModeToggle');
531
+ const torToggle = document.getElementById('torToggle');
532
+ const torBanner = document.getElementById('torBanner');
533
+ const budgetSlider = document.getElementById('budgetSlider');
534
+ const budgetValue = document.getElementById('budgetValue');
535
+
536
+ // Event Listeners
537
+ findWorkBtn.addEventListener('click', () => {
538
+ workerForm.classList.remove('hidden');
539
+ clientForm.classList.add('hidden');
540
+ workerResults.classList.add('hidden');
541
+ window.scrollTo({ top: workerForm.offsetTop - 20, behavior: 'smooth' });
542
+ });
543
+
544
+ findWorkerBtn.addEventListener('click', () => {
545
+ clientForm.classList.remove('hidden');
546
+ workerForm.classList.add('hidden');
547
+ workerResults.classList.add('hidden');
548
+ window.scrollTo({ top: clientForm.offsetTop - 20, behavior: 'smooth' });
549
+ });
550
+
551
+ document.getElementById('workerRegistrationForm').addEventListener('submit', (e) => {
552
+ e.preventDefault();
553
+ // In a real app, this would send data to backend
554
+ alert('Profile created successfully! Workers will contact you if interested.');
555
+ workerForm.classList.add('hidden');
556
+ });
557
+
558
+ document.getElementById('clientSearchForm').addEventListener('submit', (e) => {
559
+ e.preventDefault();
560
+ showWorkerResults();
561
+ window.scrollTo({ top: workerResults.offsetTop - 20, behavior: 'smooth' });
562
+ });
563
+
564
+ closeModal.addEventListener('click', () => {
565
+ workerModal.classList.add('hidden');
566
+ });
567
+
568
+ darkModeToggle.addEventListener('click', toggleDarkMode);
569
+ torToggle.addEventListener('click', toggleTorBanner);
570
+ budgetSlider.addEventListener('input', updateBudgetValue);
571
+
572
+ // Initialize
573
+ function updateBudgetValue() {
574
+ budgetValue.textContent = `€${budgetSlider.value}`;
575
+ }
576
+
577
+ function toggleDarkMode() {
578
+ document.body.classList.toggle('dark-mode');
579
+ const icon = darkModeToggle.querySelector('i');
580
+ if (document.body.classList.contains('dark-mode')) {
581
+ icon.classList.replace('fa-moon', 'fa-sun');
582
+ } else {
583
+ icon.classList.replace('fa-sun', 'fa-moon');
584
+ }
585
+ }
586
+
587
+ function toggleTorBanner() {
588
+ torBanner.classList.toggle('hidden');
589
+ }
590
+
591
+ function showWorkerResults() {
592
+ workerResults.classList.remove('hidden');
593
+ workersContainer.innerHTML = '';
594
+
595
+ workers.forEach(worker => {
596
+ const workerCard = document.createElement('div');
597
+ workerCard.className = 'bg-white rounded-lg shadow-md p-6 service-card transition duration-300';
598
+ workerCard.innerHTML = `
599
+ <div class="flex justify-between items-start mb-4">
600
+ <h3 class="text-xl font-semibold">${worker.nickname}</h3>
601
+ <span class="bg-blue-100 text-blue-800 px-2 py-1 rounded-full text-sm">${worker.skill}</span>
602
+ </div>
603
+ <p class="text-gray-600 mb-4 line-clamp-3">${worker.description}</p>
604
+ <div class="flex items-center mb-2">
605
+ <div class="flex text-yellow-400">
606
+ ${renderStars(worker.rating)}
607
+ </div>
608
+ <span class="ml-2 text-gray-600">${worker.rating.toFixed(1)} (${worker.reviews} reviews)</span>
609
+ </div>
610
+ <div class="flex justify-between items-center">
611
+ <span class="font-semibold">€${worker.rate}/hour</span>
612
+ <button class="view-worker-btn bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded-lg text-sm transition" data-id="${worker.id}">
613
+ View Profile
614
+ </button>
615
+ </div>
616
+ `;
617
+ workersContainer.appendChild(workerCard);
618
+ });
619
+
620
+ // Add event listeners to all view buttons
621
+ document.querySelectorAll('.view-worker-btn').forEach(btn => {
622
+ btn.addEventListener('click', (e) => {
623
+ const workerId = parseInt(e.target.getAttribute('data-id'));
624
+ showWorkerModal(workerId);
625
+ });
626
+ });
627
+ }
628
+
629
+ function renderStars(rating) {
630
+ let stars = '';
631
+ const fullStars = Math.floor(rating);
632
+ const hasHalfStar = rating % 1 >= 0.5;
633
+
634
+ for (let i = 0; i < fullStars; i++) {
635
+ stars += '<i class="fas fa-star"></i>';
636
+ }
637
+
638
+ if (hasHalfStar) {
639
+ stars += '<i class="fas fa-star-half-alt"></i>';
640
+ }
641
+
642
+ const emptyStars = 5 - fullStars - (hasHalfStar ? 1 : 0);
643
+ for (let i = 0; i < emptyStars; i++) {
644
+ stars += '<i class="far fa-star"></i>';
645
+ }
646
+
647
+ return stars;
648
+ }
649
+
650
+ function showWorkerModal(workerId) {
651
+ const worker = workers.find(w => w.id === workerId);
652
+ if (!worker) return;
653
+
654
+ // Update modal content
655
+ document.getElementById('modalWorkerName').textContent = worker.nickname;
656
+ document.getElementById('modalDescription').textContent = worker.description;
657
+ document.getElementById('modalAvailability').textContent = worker.availability;
658
+ document.getElementById('modalRate').textContent = `€${worker.rate}/hour`;
659
+ document.getElementById('modalRating').textContent = `${worker.rating.toFixed(1)} (${worker.reviews} reviews)`;
660
+
661
+ // Update stars
662
+ const starsContainer = document.querySelector('#workerModal .flex.text-yellow-400');
663
+ starsContainer.innerHTML = renderStars(worker.rating);
664
+
665
+ // Update reviews
666
+ const workerReviews = reviews.filter(r => r.workerId === workerId);
667
+ const reviewsContainer = document.getElementById('reviewsContainer');
668
+ reviewsContainer.innerHTML = '';
669
+
670
+ if (workerReviews.length === 0) {
671
+ reviewsContainer.innerHTML = '<p class="text-gray-500">No reviews yet.</p>';
672
+ } else {
673
+ workerReviews.forEach(review => {
674
+ const reviewElement = document.createElement('div');
675
+ reviewElement.className = 'bg-gray-50 p-4 rounded-lg';
676
+ reviewElement.innerHTML = `
677
+ <div class="flex justify-between items-center mb-2">
678
+ <h5 class="font-medium">${review.author}</h5>
679
+ <span class="text-sm text-gray-500">${review.date}</span>
680
+ </div>
681
+ <div class="flex text-yellow-400 mb-1">
682
+ ${renderStars(review.rating)}
683
+ </div>
684
+ <p class="text-gray-700">${review.comment}</p>
685
+ `;
686
+ reviewsContainer.appendChild(reviewElement);
687
+ });
688
+ }
689
+
690
+ // Show modal
691
+ workerModal.classList.remove('hidden');
692
+ }
693
+
694
+ // Initialize budget value display
695
+ updateBudgetValue();
696
+ </script>
697
+ <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=amr701/gazdo" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
698
+ </html>
prompts.txt ADDED
File without changes