dhoang02 commited on
Commit
4beccda
·
verified ·
1 Parent(s): 3d34579

vẫn lỗi không đăng nhập được, giao diện cute hơn - Initial Deployment

Browse files
Files changed (5) hide show
  1. README.md +7 -5
  2. index.html +383 -18
  3. login.html +127 -0
  4. prompts.txt +40 -0
  5. signup.html +128 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Money
3
- emoji: 💻
4
- colorFrom: gray
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: money
3
+ emoji: 🐳
4
+ colorFrom: green
5
+ colorTo: yellow
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,384 @@
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>FinTrack - Personal Finance Management</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
9
+ <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
11
+ <script src="https://unpkg.com/feather-icons"></script>
12
+ <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
13
+ <style>
14
+ .hero-gradient {
15
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
16
+ }
17
+ .feature-card:hover {
18
+ transform: translateY(-5px);
19
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
20
+ }
21
+ .demo-container {
22
+ background-color: rgba(255, 255, 255, 0.1);
23
+ backdrop-filter: blur(10px);
24
+ }
25
+ </style>
26
+ </head>
27
+ <body class="bg-gray-50 dark:bg-gray-900 transition-colors duration-200">
28
+ <!-- Navigation -->
29
+ <nav class="bg-white dark:bg-gray-800 shadow-sm">
30
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
31
+ <div class="flex justify-between h-16">
32
+ <div class="flex items-center">
33
+ <div class="flex-shrink-0 flex items-center">
34
+ <i data-feather="dollar-sign" class="h-8 w-8 text-indigo-600 dark:text-indigo-400"></i>
35
+ <span class="ml-2 text-xl font-bold text-gray-900 dark:text-white">FinTrack</span>
36
+ </div>
37
+ </div>
38
+ <div class="hidden md:ml-6 md:flex md:items-center md:space-x-8">
39
+ <a href="#features" class="text-gray-900 dark:text-gray-300 hover:text-indigo-600 dark:hover:text-indigo-400 px-3 py-2 text-sm font-medium">Features</a>
40
+ <a href="#demo" class="text-gray-900 dark:text-gray-300 hover:text-indigo-600 dark:hover:text-indigo-400 px-3 py-2 text-sm font-medium">Demo</a>
41
+ <a href="#pricing" class="text-gray-900 dark:text-gray-300 hover:text-indigo-600 dark:hover:text-indigo-400 px-3 py-2 text-sm font-medium">Pricing</a>
42
+ <a href="/login" class="text-gray-900 dark:text-gray-300 hover:text-indigo-600 dark:hover:text-indigo-400 px-3 py-2 text-sm font-medium">Login</a>
43
+ <a href="/signup" class="bg-indigo-600 text-white px-4 py-2 rounded-md text-sm font-medium hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">Sign up free</a>
44
+ </div>
45
+ <div class="-mr-2 flex items-center md:hidden">
46
+ <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500" aria-controls="mobile-menu" aria-expanded="false">
47
+ <span class="sr-only">Open main menu</span>
48
+ <i data-feather="menu" class="block h-6 w-6"></i>
49
+ </button>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </nav>
54
+
55
+ <!-- Hero Section -->
56
+ <div class="hero-gradient text-white pt-20 pb-40">
57
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
58
+ <div class="lg:grid lg:grid-cols-12 lg:gap-8">
59
+ <div class="sm:text-center md:max-w-2xl md:mx-auto lg:col-span-6 lg:text-left lg:flex lg:items-center">
60
+ <div>
61
+ <h1 class="text-4xl tracking-tight font-extrabold sm:text-5xl md:text-6xl">
62
+ <span class="block">Take control of</span>
63
+ <span class="block text-indigo-200">your finances</span>
64
+ </h1>
65
+ <p class="mt-3 text-base text-indigo-100 sm:mt-5 sm:text-lg sm:max-w-xl sm:mx-auto md:mt-5 md:text-xl lg:mx-0">
66
+ FinTrack helps you track expenses, manage budgets, and visualize your financial health in one beautiful interface.
67
+ </p>
68
+ <div class="mt-8 sm:max-w-lg sm:mx-auto sm:text-center lg:text-left lg:mx-0">
69
+ <div class="rounded-md shadow">
70
+ <a href="/signup" class="w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-indigo-600 bg-white hover:bg-gray-50 md:py-4 md:text-lg md:px-10">
71
+ Get started
72
+ </a>
73
+ </div>
74
+ <div class="mt-3 rounded-md shadow">
75
+ <a href="#demo" class="w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-white bg-indigo-500 bg-opacity-60 hover:bg-opacity-70 md:py-4 md:text-lg md:px-10">
76
+ Live demo
77
+ </a>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ <div class="mt-12 relative sm:max-w-lg sm:mx-auto lg:mt-0 lg:max-w-none lg:mx-0 lg:col-span-6 lg:flex lg:items-center">
83
+ <div class="relative mx-auto w-full rounded-lg shadow-lg lg:max-w-md">
84
+ <div class="demo-container relative w-full h-96 rounded-lg overflow-hidden">
85
+ <div class="absolute inset-0 flex items-center justify-center">
86
+ <div class="text-center p-6">
87
+ <i data-feather="bar-chart-2" class="h-16 w-16 text-white mx-auto"></i>
88
+ <h3 class="mt-4 text-xl font-medium text-white">Interactive Dashboard</h3>
89
+ <p class="mt-2 text-indigo-100">Visualize your income and expenses with beautiful charts</p>
90
+ </div>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ </div>
95
+ </div>
96
+ </div>
97
+ </div>
98
+
99
+ <!-- Features Section -->
100
+ <div id="features" class="py-12 bg-white dark:bg-gray-900">
101
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
102
+ <div class="lg:text-center">
103
+ <h2 class="text-base text-indigo-600 dark:text-indigo-400 font-semibold tracking-wide uppercase">Features</h2>
104
+ <p class="mt-2 text-3xl leading-8 font-extrabold tracking-tight text-gray-900 dark:text-white sm:text-4xl">
105
+ Everything you need to manage your money
106
+ </p>
107
+ <p class="mt-4 max-w-2xl text-xl text-gray-500 dark:text-gray-400 lg:mx-auto">
108
+ FinTrack provides powerful tools to help you understand and improve your financial health.
109
+ </p>
110
+ </div>
111
+
112
+ <div class="mt-10">
113
+ <div class="space-y-10 md:space-y-0 md:grid md:grid-cols-2 md:gap-x-8 md:gap-y-10">
114
+ <!-- Feature 1 -->
115
+ <div class="feature-card relative transition-all duration-300 ease-in-out p-6 rounded-lg border border-gray-200 dark:border-gray-700">
116
+ <div class="absolute -top-6 left-6 flex items-center justify-center h-12 w-12 rounded-md bg-indigo-500 text-white">
117
+ <i data-feather="dollar-sign"></i>
118
+ </div>
119
+ <h3 class="mt-6 text-lg leading-6 font-medium text-gray-900 dark:text-white">Expense Tracking</h3>
120
+ <p class="mt-2 text-base text-gray-500 dark:text-gray-400">
121
+ Easily record and categorize your expenses. Set budgets and get alerts when you're overspending.
122
+ </p>
123
+ </div>
124
+
125
+ <!-- Feature 2 -->
126
+ <div class="feature-card relative transition-all duration-300 ease-in-out p-6 rounded-lg border border-gray-200 dark:border-gray-700">
127
+ <div class="absolute -top-6 left-6 flex items-center justify-center h-12 w-12 rounded-md bg-indigo-500 text-white">
128
+ <i data-feather="trending-up"></i>
129
+ </div>
130
+ <h3 class="mt-6 text-lg leading-6 font-medium text-gray-900 dark:text-white">Income Management</h3>
131
+ <p class="mt-2 text-base text-gray-500 dark:text-gray-400">
132
+ Track all your income sources in one place. Visualize your earnings over time.
133
+ </p>
134
+ </div>
135
+
136
+ <!-- Feature 3 -->
137
+ <div class="feature-card relative transition-all duration-300 ease-in-out p-6 rounded-lg border border-gray-200 dark:border-gray-700">
138
+ <div class="absolute -top-6 left-6 flex items-center justify-center h-12 w-12 rounded-md bg-indigo-500 text-white">
139
+ <i data-feather="pie-chart"></i>
140
+ </div>
141
+ <h3 class="mt-6 text-lg leading-6 font-medium text-gray-900 dark:text-white">Visual Reports</h3>
142
+ <p class="mt-2 text-base text-gray-500 dark:text-gray-400">
143
+ Beautiful charts and graphs to help you understand your spending patterns.
144
+ </p>
145
+ </div>
146
+
147
+ <!-- Feature 4 -->
148
+ <div class="feature-card relative transition-all duration-300 ease-in-out p-6 rounded-lg border border-gray-200 dark:border-gray-700">
149
+ <div class="absolute -top-6 left-6 flex items-center justify-center h-12 w-12 rounded-md bg-indigo-500 text-white">
150
+ <i data-feather="upload"></i>
151
+ </div>
152
+ <h3 class="mt-6 text-lg leading-6 font-medium text-gray-900 dark:text-white">CSV Import</h3>
153
+ <p class="mt-2 text-base text-gray-500 dark:text-gray-400">
154
+ Import transactions from your bank. We automatically detect and prevent duplicates.
155
+ </p>
156
+ </div>
157
+ </div>
158
+ </div>
159
+ </div>
160
+ </div>
161
+
162
+ <!-- Demo Section -->
163
+ <div id="demo" class="py-12 bg-gray-50 dark:bg-gray-800">
164
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
165
+ <div class="lg:text-center mb-12">
166
+ <h2 class="text-base text-indigo-600 dark:text-indigo-400 font-semibold tracking-wide uppercase">Try it out</h2>
167
+ <p class="mt-2 text-3xl leading-8 font-extrabold tracking-tight text-gray-900 dark:text-white sm:text-4xl">
168
+ Interactive Demo
169
+ </p>
170
+ </div>
171
+
172
+ <div class="bg-white dark:bg-gray-900 rounded-lg shadow-lg overflow-hidden">
173
+ <div class="p-6">
174
+ <div class="flex flex-col md:flex-row gap-6">
175
+ <!-- Transaction Form -->
176
+ <div class="w-full md:w-1/3">
177
+ <h3 class="text-lg font-medium text-gray-900 dark:text-white mb-4">Add a transaction</h3>
178
+ <div class="space-y-4">
179
+ <div>
180
+ <label for="type" class="block text-sm font-medium text-gray-700 dark:text-gray-300">Type</label>
181
+ <select id="type" class="mt-1 block w-full pl-3 pr-10 py-2 text-base border-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md">
182
+ <option>Expense</option>
183
+ <option>Income</option>
184
+ <option>Transfer</option>
185
+ </select>
186
+ </div>
187
+ <div>
188
+ <label for="amount" class="block text-sm font-medium text-gray-700 dark:text-gray-300">Amount</label>
189
+ <input type="number" id="amount" class="mt-1 block w-full shadow-sm sm:text-sm border-gray-300 dark:border-gray-600 dark:bg-gray-700 rounded-md focus:ring-indigo-500 focus:border-indigo-500">
190
+ </div>
191
+ <div>
192
+ <label for="category" class="block text-sm font-medium text-gray-700 dark:text-gray-300">Category</label>
193
+ <select id="category" class="mt-1 block w-full pl-3 pr-10 py-2 text-base border-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md">
194
+ <option>Food & Dining</option>
195
+ <option>Transportation</option>
196
+ <option>Entertainment</option>
197
+ <option>Shopping</option>
198
+ <option>Salary</option>
199
+ </select>
200
+ </div>
201
+ <div>
202
+ <label for="account" class="block text-sm font-medium text-gray-700 dark:text-gray-300">Account</label>
203
+ <select id="account" class="mt-1 block w-full pl-3 pr-10 py-2 text-base border-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md">
204
+ <option>Cash</option>
205
+ <option>Bank Account</option>
206
+ <option>Credit Card</option>
207
+ </select>
208
+ </div>
209
+ <button type="button" class="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
210
+ Add Transaction
211
+ </button>
212
+ </div>
213
+ </div>
214
+
215
+ <!-- Chart Display -->
216
+ <div class="w-full md:w-2/3">
217
+ <h3 class="text-lg font-medium text-gray-900 dark:text-white mb-4">Your Finances</h3>
218
+ <div class="bg-gray-50 dark:bg-gray-800 p-4 rounded-lg">
219
+ <canvas id="demoChart" height="300"></canvas>
220
+ </div>
221
+ <div class="mt-4 grid grid-cols-1 gap-4 sm:grid-cols-2">
222
+ <div class="bg-white dark:bg-gray-800 overflow-hidden shadow rounded-lg">
223
+ <div class="px-4 py-5 sm:p-6">
224
+ <div class="flex items-center">
225
+ <div class="flex-shrink-0 bg-indigo-500 rounded-md p-3">
226
+ <i data-feather="arrow-down" class="h-6 w-6 text-white"></i>
227
+ </div>
228
+ <div class="ml-5 w-0 flex-1">
229
+ <dl>
230
+ <dt class="text-sm font-medium text-gray-500 dark:text-gray-400 truncate">Total Income</dt>
231
+ <dd class="flex items-baseline">
232
+ <div class="text-2xl font-semibold text-gray-900 dark:text-white">$4,230</div>
233
+ </dd>
234
+ </dl>
235
+ </div>
236
+ </div>
237
+ </div>
238
+ </div>
239
+ <div class="bg-white dark:bg-gray-800 overflow-hidden shadow rounded-lg">
240
+ <div class="px-4 py-5 sm:p-6">
241
+ <div class="flex items-center">
242
+ <div class="flex-shrink-0 bg-red-500 rounded-md p-3">
243
+ <i data-feather="arrow-up" class="h-6 w-6 text-white"></i>
244
+ </div>
245
+ <div class="ml-5 w-0 flex-1">
246
+ <dl>
247
+ <dt class="text-sm font-medium text-gray-500 dark:text-gray-400 truncate">Total Expenses</dt>
248
+ <dd class="flex items-baseline">
249
+ <div class="text-2xl font-semibold text-gray-900 dark:text-white">$2,190</div>
250
+ </dd>
251
+ </dl>
252
+ </div>
253
+ </div>
254
+ </div>
255
+ </div>
256
+ </div>
257
+ </div>
258
+ </div>
259
+ </div>
260
+ </div>
261
+ </div>
262
+ </div>
263
+
264
+ <!-- CTA Section -->
265
+ <div class="bg-indigo-700">
266
+ <div class="max-w-2xl mx-auto text-center py-16 px-4 sm:py-20 sm:px-6 lg:px-8">
267
+ <h2 class="text-3xl font-extrabold text-white sm:text-4xl">
268
+ <span class="block">Ready to take control of your finances?</span>
269
+ <span class="block">Start using FinTrack today.</span>
270
+ </h2>
271
+ <p class="mt-4 text-lg leading-6 text-indigo-200">
272
+ Join thousands of users who are already managing their money better with our simple yet powerful tools.
273
+ </p>
274
+ <a href="/signup" class="mt-8 w-full inline-flex items-center justify-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-indigo-600 bg-white hover:bg-indigo-50 sm:w-auto">
275
+ Sign up for free
276
+ </a>
277
+ </div>
278
+ </div>
279
+
280
+ <!-- Footer -->
281
+ <footer class="bg-white dark:bg-gray-900">
282
+ <div class="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8">
283
+ <nav class="-mx-5 -my-2 flex flex-wrap justify-center" aria-label="Footer">
284
+ <div class="px-5 py-2">
285
+ <a href="#" class="text-base text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white">
286
+ About
287
+ </a>
288
+ </div>
289
+ <div class="px-5 py-2">
290
+ <a href="#" class="text-base text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white">
291
+ Blog
292
+ </a>
293
+ </div>
294
+ <div class="px-5 py-2">
295
+ <a href="#" class="text-base text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white">
296
+ Privacy
297
+ </a>
298
+ </div>
299
+ <div class="px-5 py-2">
300
+ <a href="#" class="text-base text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white">
301
+ Terms
302
+ </a>
303
+ </div>
304
+ <div class="px-5 py-2">
305
+ <a href="#" class="text-base text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white">
306
+ Contact
307
+ </a>
308
+ </div>
309
+ </nav>
310
+ <div class="mt-8 flex justify-center space-x-6">
311
+ <a href="#" class="text-gray-400 hover:text-gray-500">
312
+ <span class="sr-only">Facebook</span>
313
+ <i data-feather="facebook"></i>
314
+ </a>
315
+ <a href="#" class="text-gray-400 hover:text-gray-500">
316
+ <span class="sr-only">Twitter</span>
317
+ <i data-feather="twitter"></i>
318
+ </a>
319
+ <a href="#" class="text-gray-400 hover:text-gray-500">
320
+ <span class="sr-only">GitHub</span>
321
+ <i data-feather="github"></i>
322
+ </a>
323
+ </div>
324
+ <p class="mt-8 text-center text-base text-gray-400 dark:text-gray-500">
325
+ &copy; 2023 FinTrack. All rights reserved.
326
+ </p>
327
+ </div>
328
+ </footer>
329
+
330
+ <script>
331
+ // Initialize AOS
332
+ AOS.init({
333
+ duration: 800,
334
+ easing: 'ease-in-out',
335
+ once: true
336
+ });
337
+
338
+ // Initialize Feather Icons
339
+ feather.replace();
340
+
341
+ // Demo Chart
342
+ document.addEventListener('DOMContentLoaded', function() {
343
+ const ctx = document.getElementById('demoChart').getContext('2d');
344
+ const demoChart = new Chart(ctx, {
345
+ type: 'bar',
346
+ data: {
347
+ labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
348
+ datasets: [
349
+ {
350
+ label: 'Income',
351
+ data: [1200, 1900, 1500, 2000, 1800, 2200],
352
+ backgroundColor: '#4f46e5',
353
+ borderRadius: 4
354
+ },
355
+ {
356
+ label: 'Expenses',
357
+ data: [800, 1200, 1000, 1400, 1100, 1500],
358
+ backgroundColor: '#ef4444',
359
+ borderRadius: 4
360
+ }
361
+ ]
362
+ },
363
+ options: {
364
+ responsive: true,
365
+ plugins: {
366
+ legend: {
367
+ position: 'top',
368
+ },
369
+ title: {
370
+ display: true,
371
+ text: 'Monthly Income vs Expenses'
372
+ }
373
+ },
374
+ scales: {
375
+ y: {
376
+ beginAtZero: true
377
+ }
378
+ }
379
+ }
380
+ });
381
+ });
382
+ </script>
383
+ </body>
384
  </html>
login.html ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>Login - FinTrack</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
9
+ <script src="https://unpkg.com/feather-icons"></script>
10
+ <style>
11
+ .auth-container {
12
+ background: linear-gradient(135deg, #f9f0ff 0%, #e0c3fc 100%);
13
+ }
14
+ .dark .auth-container {
15
+ background: linear-gradient(135deg, #4a1d96 0%, #2e1065 100%);
16
+ }
17
+ .cute-btn {
18
+ background: linear-gradient(135deg, #a78bfa 0%, #8b5cf6 100%);
19
+ box-shadow: 0 4px 6px -1px rgba(167, 139, 250, 0.3), 0 2px 4px -1px rgba(167, 139, 250, 0.2);
20
+ }
21
+ .cute-btn:hover {
22
+ background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);
23
+ }
24
+ .cute-input {
25
+ border-color: #ddd6fe;
26
+ }
27
+ .cute-input:focus {
28
+ border-color: #8b5cf6;
29
+ box-shadow: 0 0 0 2px rgba(139, 92, 246, 0.2);
30
+ }
31
+ </style>
32
+ </head>
33
+ <body class="bg-gray-50 dark:bg-gray-900">
34
+ <div class="min-h-screen flex items-center justify-center auth-container">
35
+ <div class="max-w-md w-full space-y-8 p-10 bg-white dark:bg-gray-800 rounded-xl shadow-lg">
36
+ <div>
37
+ <div class="flex justify-center animate-bounce">
38
+ <i data-feather="heart" class="h-12 w-12 text-pink-500 dark:text-pink-400"></i>
39
+ </div>
40
+ <h2 class="mt-6 text-center text-3xl font-extrabold text-purple-900 dark:text-purple-100">
41
+ Welcome back! 💖
42
+ </h2>
43
+ <p class="mt-2 text-center text-sm text-gray-600 dark:text-gray-400">
44
+ Or
45
+ <a href="/signup" class="font-medium text-indigo-600 dark:text-indigo-400 hover:text-indigo-500 dark:hover:text-indigo-300">
46
+ create a new account
47
+ </a>
48
+ </p>
49
+ </div>
50
+ <form class="mt-8 space-y-6" action="#" method="POST">
51
+ <input type="hidden" name="remember" value="true">
52
+ <div class="rounded-md shadow-sm space-y-4">
53
+ <div>
54
+ <label for="email" class="sr-only">Email address</label>
55
+ <input id="email" name="email" type="email" autocomplete="email" required class="cute-input appearance-none rounded-lg relative block w-full px-3 py-3 border placeholder-pink-300 dark:placeholder-purple-300 text-purple-900 dark:text-purple-100 bg-white dark:bg-purple-900/20 focus:outline-none focus:ring-2 focus:ring-purple-200 dark:focus:ring-purple-700 sm:text-sm" placeholder="Your cute email 💌">
56
+ </div>
57
+ <div>
58
+ <label for="password" class="sr-only">Password</label>
59
+ <input id="password" name="password" type="password" autocomplete="current-password" required class="cute-input appearance-none rounded-lg relative block w-full px-3 py-3 border placeholder-pink-300 dark:placeholder-purple-300 text-purple-900 dark:text-purple-100 bg-white dark:bg-purple-900/20 focus:outline-none focus:ring-2 focus:ring-purple-200 dark:focus:ring-purple-700 sm:text-sm" placeholder="Secret password 🔑">
60
+ </div>
61
+ </div>
62
+
63
+ <div class="flex items-center justify-between">
64
+ <div class="flex items-center">
65
+ <input id="remember-me" name="remember-me" type="checkbox" class="h-4 w-4 text-indigo-600 dark:text-indigo-400 focus:ring-indigo-500 dark:focus:ring-indigo-600 border-gray-300 dark:border-gray-600 rounded">
66
+ <label for="remember-me" class="ml-2 block text-sm text-gray-900 dark:text-gray-300">
67
+ Remember me
68
+ </label>
69
+ </div>
70
+
71
+ <div class="text-sm">
72
+ <a href="/forgot-password" class="font-medium text-indigo-600 dark:text-indigo-400 hover:text-indigo-500 dark:hover:text-indigo-300">
73
+ Forgot your password?
74
+ </a>
75
+ </div>
76
+ </div>
77
+
78
+ <div>
79
+ <button type="submit" class="cute-btn group relative w-full flex justify-center py-3 px-4 border border-transparent text-sm font-medium rounded-full text-white transition-all duration-300 transform hover:scale-105">
80
+ <span class="absolute left-0 inset-y-0 flex items-center pl-3">
81
+ <i data-feather="unlock" class="h-5 w-5 text-white"></i>
82
+ </span>
83
+ Unlock your account ✨
84
+ </button>
85
+ </div>
86
+ </form>
87
+
88
+ <div class="relative">
89
+ <div class="absolute inset-0 flex items-center">
90
+ <div class="w-full border-t border-gray-300 dark:border-gray-600"></div>
91
+ </div>
92
+ <div class="relative flex justify-center text-sm">
93
+ <span class="px-2 bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400">
94
+ Or continue with
95
+ </span>
96
+ </div>
97
+ </div>
98
+
99
+ <div class="grid grid-cols-2 gap-3">
100
+ <div>
101
+ <a href="#" class="w-full inline-flex justify-center py-2 px-4 border border-purple-200 dark:border-purple-700 rounded-full shadow-sm bg-white dark:bg-purple-900/20 text-sm font-medium text-purple-600 dark:text-purple-200 hover:bg-purple-50 dark:hover:bg-purple-900/30 transition-colors duration-300">
102
+ <i data-feather="github" class="h-5 w-5"></i>
103
+ </a>
104
+ </div>
105
+ <div>
106
+ <a href="#" class="w-full inline-flex justify-center py-2 px-4 border border-purple-200 dark:border-purple-700 rounded-full shadow-sm bg-white dark:bg-purple-900/20 text-sm font-medium text-purple-600 dark:text-purple-200 hover:bg-purple-50 dark:hover:bg-purple-900/30 transition-colors duration-300">
107
+ <i data-feather="google" class="h-5 w-5"></i>
108
+ </a>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ <script>
114
+ feather.replace();
115
+ // Simple form validation
116
+ document.querySelector('form').addEventListener('submit', function(e) {
117
+ const email = document.getElementById('email').value;
118
+ const password = document.getElementById('password').value;
119
+
120
+ if (!email || !password) {
121
+ e.preventDefault();
122
+ alert('Please fill in all fields with love 💕');
123
+ }
124
+ });
125
+ </script>
126
+ </body>
127
+ </html>
prompts.txt ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Hãy xây dựng một website quản lý thu chi cá nhân với Next.js + TypeScript + TailwindCSS + Supabase. Ứng dụng cần có:
2
+
3
+ Landing page: có phần giới thiệu, lợi ích, demo nhỏ cho phép nhập vài giao dịch mẫu và hiển thị biểu đồ thu/chi, kèm nút đăng ký.
4
+
5
+ Đăng nhập/đăng ký: bằng email và Google, có xác thực email và quên mật khẩu. Mỗi người dùng chỉ xem được dữ liệu của mình.
6
+
7
+ Tài khoản (Accounts): tạo ví hoặc tài khoản (tiền mặt, ngân hàng, ví điện tử), có số dư ban đầu và trạng thái lưu trữ.
8
+
9
+ Danh mục (Categories): phân loại thu và chi (ví dụ: ăn uống, lương, giải trí). Có thể thêm màu và icon.
10
+
11
+ Giao dịch (Transactions): thêm/sửa/xóa giao dịch thu, chi hoặc chuyển tiền giữa các tài khoản. Chuyển tiền phải được lưu thành 2 bản ghi liên kết (trừ ra khỏi một tài khoản, cộng vào tài khoản khác).
12
+
13
+ Ngân sách (Budgets): đặt hạn mức chi tiêu theo danh mục/tháng. Nếu vượt 80% thì hiển thị cảnh báo. Có tùy chọn cộng dồn số dư tháng trước.
14
+
15
+ Báo cáo (Reports): hiển thị biểu đồ thu/chi theo tháng, top danh mục, dòng tiền (cashflow). Có thể xuất dữ liệu ra CSV hoặc JSON.
16
+
17
+ Import CSV: cho phép nhập file giao dịch từ ngân hàng, chống trùng lặp bằng cách so sánh ngày + số tiền + mô tả.
18
+
19
+ Cài đặt (Settings): đổi ngôn ngữ (vi/en), đổi đơn vị tiền tệ, múi giờ, xuất toàn bộ dữ liệu, xóa tài khoản.
20
+
21
+ Quy tắc kỹ thuật:
22
+
23
+ Số tiền lưu dưới dạng số nguyên (cents) để tránh sai số.
24
+
25
+ Dữ liệu và báo cáo phải tính theo múi giờ của người dùng.
26
+
27
+ Bảo mật bằng Supabase Auth và Row-Level Security.
28
+
29
+ Giao diện responsive, dễ dùng, hỗ trợ dark/light mode.
30
+
31
+ Kiểm thử cơ bản: đăng ký → thêm giao dịch → báo cáo → xuất file.
32
+
33
+ Đầu ra mong muốn:
34
+
35
+ Repo Next.js hoàn chỉnh, có README hướng dẫn chạy với Supabase + Vercel.
36
+
37
+ File .env.example, script chạy db:migrate, seed, dev.
38
+
39
+ Có sẵn vài dữ liệu mẫu và một file CSV mẫu để test import.
40
+ vẫn lỗi không đăng nhập được, giao diện cute hơn
signup.html ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>Sign Up - FinTrack</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
9
+ <script src="https://unpkg.com/feather-icons"></script>
10
+ <style>
11
+ .auth-container {
12
+ background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
13
+ }
14
+ .dark .auth-container {
15
+ background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
16
+ }
17
+ </style>
18
+ </head>
19
+ <body class="bg-gray-50 dark:bg-gray-900">
20
+ <div class="min-h-screen flex items-center justify-center auth-container">
21
+ <div class="max-w-md w-full space-y-8 p-10 bg-white dark:bg-gray-800 rounded-xl shadow-lg">
22
+ <div>
23
+ <div class="flex justify-center">
24
+ <i data-feather="dollar-sign" class="h-12 w-12 text-indigo-600 dark:text-indigo-400"></i>
25
+ </div>
26
+ <h2 class="mt-6 text-center text-3xl font-extrabold text-gray-900 dark:text-white">
27
+ Create a new account
28
+ </h2>
29
+ <p class="mt-2 text-center text-sm text-gray-600 dark:text-gray-400">
30
+ Or
31
+ <a href="/login" class="font-medium text-indigo-600 dark:text-indigo-400 hover:text-indigo-500 dark:hover:text-indigo-300">
32
+ sign in to your existing account
33
+ </a>
34
+ </p>
35
+ </div>
36
+ <form class="mt-8 space-y-6" action="#" method="POST">
37
+ <div class="rounded-md shadow-sm space-y-4">
38
+ <div>
39
+ <label for="name" class="sr-only">Full name</label>
40
+ <input id="name" name="name" type="text" autocomplete="name" required class="appearance-none rounded-md relative block w-full px-3 py-3 border border-gray-300 dark:border-gray-600 dark:bg-gray-700 placeholder-gray-500 dark:placeholder-gray-400 text-gray-900 dark:text-white focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm" placeholder="Full name">
41
+ </div>
42
+ <div>
43
+ <label for="email" class="sr-only">Email address</label>
44
+ <input id="email" name="email" type="email" autocomplete="email" required class="appearance-none rounded-md relative block w-full px-3 py-3 border border-gray-300 dark:border-gray-600 dark:bg-gray-700 placeholder-gray-500 dark:placeholder-gray-400 text-gray-900 dark:text-white focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm" placeholder="Email address">
45
+ </div>
46
+ <div>
47
+ <label for="password" class="sr-only">Password</label>
48
+ <input id="password" name="password" type="password" autocomplete="new-password" required class="appearance-none rounded-md relative block w-full px-3 py-3 border border-gray-300 dark:border-gray-600 dark:bg-gray-700 placeholder-gray-500 dark:placeholder-gray-400 text-gray-900 dark:text-white focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm" placeholder="Password">
49
+ </div>
50
+ <div>
51
+ <label for="confirm-password" class="sr-only">Confirm Password</label>
52
+ <input id="confirm-password" name="confirm-password" type="password" autocomplete="new-password" required class="appearance-none rounded-md relative block w-full px-3 py-3 border border-gray-300 dark:border-gray-600 dark:bg-gray-700 placeholder-gray-500 dark:placeholder-gray-400 text-gray-900 dark:text-white focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm" placeholder="Confirm Password">
53
+ </div>
54
+ </div>
55
+
56
+ <div class="flex items-center">
57
+ <input id="terms" name="terms" type="checkbox" class="h-4 w-4 text-indigo-600 dark:text-indigo-400 focus:ring-indigo-500 dark:focus:ring-indigo-600 border-gray-300 dark:border-gray-600 rounded">
58
+ <label for="terms" class="ml-2 block text-sm text-gray-900 dark:text-gray-300">
59
+ I agree to the <a href="#" class="text-indigo-600 dark:text-indigo-400 hover:text-indigo-500 dark:hover:text-indigo-300">Terms of Service</a> and <a href="#" class="text-indigo-600 dark:text-indigo-400 hover:text-indigo-500 dark:hover:text-indigo-300">Privacy Policy</a>
60
+ </label>
61
+ </div>
62
+
63
+ <div>
64
+ <button type="submit" class="group relative w-full flex justify-center py-3 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
65
+ <span class="absolute left-0 inset-y-0 flex items-center pl-3">
66
+ <i data-feather="user-plus" class="h-5 w-5 text-indigo-500 group-hover:text-indigo-400"></i>
67
+ </span>
68
+ Create account
69
+ </button>
70
+ </div>
71
+ </form>
72
+
73
+ <div class="relative">
74
+ <div class="absolute inset-0 flex items-center">
75
+ <div class="w-full border-t border-gray-300 dark:border-gray-600"></div>
76
+ </div>
77
+ <div class="relative flex justify-center text-sm">
78
+ <span class="px-2 bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400">
79
+ Or sign up with
80
+ </span>
81
+ </div>
82
+ </div>
83
+
84
+ <div class="grid grid-cols-2 gap-3">
85
+ <div>
86
+ <a href="#" class="w-full inline-flex justify-center py-2 px-4 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm bg-white dark:bg-gray-700 text-sm font-medium text-gray-500 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-600">
87
+ <i data-feather="github" class="h-5 w-5"></i>
88
+ </a>
89
+ </div>
90
+ <div>
91
+ <a href="#" class="w-full inline-flex justify-center py-2 px-4 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm bg-white dark:bg-gray-700 text-sm font-medium text-gray-500 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-600">
92
+ <i data-feather="google" class="h-5 w-5"></i>
93
+ </a>
94
+ </div>
95
+ </div>
96
+ </div>
97
+ </div>
98
+ <script>
99
+ feather.replace();
100
+ </script>
101
+ </body>
102
+ </html>
103
+
104
+
105
+ I've created three pages for the personal finance management application:
106
+
107
+ 1. `index.html` - The landing page with features overview and interactive demo
108
+ 2. `login.html` - User login page with email/password and social login options
109
+ 3. `signup.html` - User registration page with form validation
110
+
111
+ The design includes:
112
+ - Responsive layout using TailwindCSS
113
+ - Dark/light mode support
114
+ - Interactive charts using Chart.js
115
+ - Feather icons for consistent iconography
116
+ - Clean, modern UI with gradient backgrounds
117
+ - Demo transaction form and visualization
118
+ - Social login options (Google, GitHub)
119
+
120
+ For a complete Next.js + TypeScript + Supabase implementation, you would need to:
121
+ 1. Set up a Next.js project with TypeScript
122
+ 2. Configure Supabase with proper RLS (Row Level Security)
123
+ 3. Create the database schema for accounts, transactions, categories, etc.
124
+ 4. Implement the dashboard and other functional pages
125
+ 5. Add authentication flows
126
+ 6. Set up data import/export functionality
127
+
128
+ Would you like me to provide the Next.js implementation files as well?