tunecamp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/.env.local +2 -0
  2. package/.vercel/README.txt +11 -0
  3. package/.vercel/project.json +1 -0
  4. package/LICENSE +22 -0
  5. package/README.md +554 -0
  6. package/dist/cli.d.ts +6 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +172 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/generator/embedGenerator.d.ts +38 -0
  11. package/dist/generator/embedGenerator.d.ts.map +1 -0
  12. package/dist/generator/embedGenerator.js +92 -0
  13. package/dist/generator/embedGenerator.js.map +1 -0
  14. package/dist/generator/feedGenerator.d.ts +50 -0
  15. package/dist/generator/feedGenerator.d.ts.map +1 -0
  16. package/dist/generator/feedGenerator.js +167 -0
  17. package/dist/generator/feedGenerator.js.map +1 -0
  18. package/dist/generator/podcastFeedGenerator.d.ts +54 -0
  19. package/dist/generator/podcastFeedGenerator.d.ts.map +1 -0
  20. package/dist/generator/podcastFeedGenerator.js +173 -0
  21. package/dist/generator/podcastFeedGenerator.js.map +1 -0
  22. package/dist/generator/proceduralCoverGenerator.d.ts +51 -0
  23. package/dist/generator/proceduralCoverGenerator.d.ts.map +1 -0
  24. package/dist/generator/proceduralCoverGenerator.js +228 -0
  25. package/dist/generator/proceduralCoverGenerator.js.map +1 -0
  26. package/dist/generator/siteGenerator.d.ts +55 -0
  27. package/dist/generator/siteGenerator.d.ts.map +1 -0
  28. package/dist/generator/siteGenerator.js +539 -0
  29. package/dist/generator/siteGenerator.js.map +1 -0
  30. package/dist/generator/templateEngine.d.ts +13 -0
  31. package/dist/generator/templateEngine.d.ts.map +1 -0
  32. package/dist/generator/templateEngine.js +146 -0
  33. package/dist/generator/templateEngine.js.map +1 -0
  34. package/dist/index.d.ts +12 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +32 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/parser/catalogParser.d.ts +13 -0
  39. package/dist/parser/catalogParser.d.ts.map +1 -0
  40. package/dist/parser/catalogParser.js +120 -0
  41. package/dist/parser/catalogParser.js.map +1 -0
  42. package/dist/tools/generate-codes.d.ts +14 -0
  43. package/dist/tools/generate-codes.d.ts.map +1 -0
  44. package/dist/tools/generate-codes.js +274 -0
  45. package/dist/tools/generate-codes.js.map +1 -0
  46. package/dist/tools/generate-sea-pair.d.ts +14 -0
  47. package/dist/tools/generate-sea-pair.d.ts.map +1 -0
  48. package/dist/tools/generate-sea-pair.js +111 -0
  49. package/dist/tools/generate-sea-pair.js.map +1 -0
  50. package/dist/types/index.d.ts +117 -0
  51. package/dist/types/index.d.ts.map +1 -0
  52. package/dist/types/index.js +5 -0
  53. package/dist/types/index.js.map +1 -0
  54. package/dist/utils/audioUtils.d.ts +9 -0
  55. package/dist/utils/audioUtils.d.ts.map +1 -0
  56. package/dist/utils/audioUtils.js +67 -0
  57. package/dist/utils/audioUtils.js.map +1 -0
  58. package/dist/utils/configUtils.d.ts +11 -0
  59. package/dist/utils/configUtils.d.ts.map +1 -0
  60. package/dist/utils/configUtils.js +50 -0
  61. package/dist/utils/configUtils.js.map +1 -0
  62. package/dist/utils/fileUtils.d.ts +14 -0
  63. package/dist/utils/fileUtils.d.ts.map +1 -0
  64. package/dist/utils/fileUtils.js +73 -0
  65. package/dist/utils/fileUtils.js.map +1 -0
  66. package/examples/artist-free/README.md +36 -0
  67. package/examples/artist-paycurtain/README.md +49 -0
  68. package/examples/label/README.md +33 -0
  69. package/gundb-keypair.json +8 -0
  70. package/logo.svg +30 -0
  71. package/package-lock.json +1176 -0
  72. package/package.json +42 -0
  73. package/public/assets/community-registry.js +291 -0
  74. package/public/assets/download-stats.js +263 -0
  75. package/public/assets/player.js +219 -0
  76. package/public/assets/style.css +1170 -0
  77. package/public/assets/theme-widget.js +353 -0
  78. package/public/assets/unlock-codes.js +225 -0
  79. package/public/atom.xml +22 -0
  80. package/public/catalog.m3u +3 -0
  81. package/public/feed.xml +22 -0
  82. package/public/image.png +0 -0
  83. package/public/index.html +249 -0
  84. package/public/logo.svg +30 -0
  85. package/public/releases/chirichetto/Homologo - Chirichetto.wav +0 -0
  86. package/public/releases/chirichetto/cover.png +0 -0
  87. package/public/releases/chirichetto/embed-code.txt +16 -0
  88. package/public/releases/chirichetto/embed-compact.txt +8 -0
  89. package/public/releases/chirichetto/embed.html +39 -0
  90. package/public/releases/chirichetto/index.html +389 -0
  91. package/public/releases/chirichetto/playlist.m3u +3 -0
  92. package/templates/dark/assets/community-registry.js +291 -0
  93. package/templates/dark/assets/download-stats.js +263 -0
  94. package/templates/dark/assets/player.js +219 -0
  95. package/templates/dark/assets/style.css +740 -0
  96. package/templates/dark/index.hbs +73 -0
  97. package/templates/dark/layout.hbs +84 -0
  98. package/templates/dark/release.hbs +212 -0
  99. package/templates/default/assets/community-registry.js +291 -0
  100. package/templates/default/assets/download-stats.js +263 -0
  101. package/templates/default/assets/player.js +219 -0
  102. package/templates/default/assets/style.css +1170 -0
  103. package/templates/default/assets/theme-widget.js +353 -0
  104. package/templates/default/assets/unlock-codes.js +225 -0
  105. package/templates/default/index.hbs +188 -0
  106. package/templates/default/layout.hbs +117 -0
  107. package/templates/default/release.hbs +553 -0
  108. package/templates/minimal/assets/community-registry.js +291 -0
  109. package/templates/minimal/assets/download-stats.js +263 -0
  110. package/templates/minimal/assets/player.js +219 -0
  111. package/templates/minimal/assets/style.css +796 -0
  112. package/templates/minimal/index.hbs +73 -0
  113. package/templates/minimal/layout.hbs +84 -0
  114. package/templates/minimal/release.hbs +212 -0
  115. package/templates/retro/assets/community-registry.js +291 -0
  116. package/templates/retro/assets/download-stats.js +263 -0
  117. package/templates/retro/assets/player.js +219 -0
  118. package/templates/retro/assets/style.css +872 -0
  119. package/templates/retro/index.hbs +73 -0
  120. package/templates/retro/layout.hbs +84 -0
  121. package/templates/retro/release.hbs +212 -0
  122. package/templates/translucent/assets/community-registry.js +291 -0
  123. package/templates/translucent/assets/download-stats.js +263 -0
  124. package/templates/translucent/assets/player.js +219 -0
  125. package/templates/translucent/assets/style.css +1352 -0
  126. package/templates/translucent/index.hbs +73 -0
  127. package/templates/translucent/layout.hbs +84 -0
  128. package/templates/translucent/release.hbs +212 -0
  129. package/website/community.html +492 -0
  130. package/website/index.html +195 -0
  131. package/website/styles.css +396 -0
  132. package/website/tunecamp.svg +30 -0
@@ -0,0 +1,396 @@
1
+ * {
2
+ margin: 0;
3
+ padding: 0;
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ html {
8
+ font-size: 22px;
9
+ }
10
+
11
+ body {
12
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
13
+ background: #fff;
14
+ color: #000;
15
+ line-height: 2;
16
+ padding: 80px 30px;
17
+ }
18
+
19
+ .container {
20
+ max-width: 1200px;
21
+ margin: 0 auto;
22
+ }
23
+
24
+ h1 {
25
+ font-size: 3.5rem;
26
+ font-weight: 600;
27
+ margin-bottom: 20px;
28
+ letter-spacing: 2px;
29
+ }
30
+
31
+ .subtitle {
32
+ font-size: 1.5rem;
33
+ color: #666;
34
+ margin-bottom: 60px;
35
+ }
36
+
37
+ section {
38
+ margin-bottom: 90px;
39
+ }
40
+
41
+ h2 {
42
+ font-size: 1.6rem;
43
+ font-weight: 700;
44
+ text-transform: uppercase;
45
+ letter-spacing: 2px;
46
+ margin-bottom: 40px;
47
+ color: #999;
48
+ }
49
+
50
+ h3 {
51
+ font-size: 1.4rem;
52
+ font-weight: 600;
53
+ margin-bottom: 30px;
54
+ color: #333;
55
+ }
56
+
57
+ .project {
58
+ margin-bottom: 44px;
59
+ padding-bottom: 44px;
60
+ border-bottom: 2px solid #eee;
61
+ }
62
+
63
+ .project:last-child {
64
+ border-bottom: none;
65
+ }
66
+
67
+ .project-title {
68
+ font-size: 1.6rem;
69
+ font-weight: bold;
70
+ margin-bottom: 13px;
71
+ }
72
+
73
+ .project-desc {
74
+ font-size: 1.2rem;
75
+ color: #444;
76
+ margin-bottom: 20px;
77
+ }
78
+
79
+ .project-tech {
80
+ font-size: 1.1rem;
81
+ color: #888;
82
+ }
83
+
84
+ .project-image {
85
+ width: 250px;
86
+ height: 250px;
87
+ display: block;
88
+ margin-bottom: 20px;
89
+ margin-top: 20px;
90
+ filter: drop-shadow(0 0 10px rgba(0, 0, 0, 0.1));
91
+ padding: 10px;
92
+ }
93
+
94
+ a {
95
+ color: #000;
96
+ text-decoration: none;
97
+ border-bottom: 2px solid #000;
98
+ transition: opacity 0.2s;
99
+ font-size: 1.1rem;
100
+ }
101
+
102
+ a:hover {
103
+ opacity: 0.7;
104
+ }
105
+
106
+ .links {
107
+ display: flex;
108
+ gap: 40px;
109
+ }
110
+
111
+ .links a {
112
+ border-bottom: none;
113
+ font-size: 1.25rem;
114
+ padding: 6px 12px;
115
+ }
116
+
117
+ /* Tunecamp specific styles */
118
+ .logo {
119
+ width: 300px;
120
+ height: 300px;
121
+ margin: 0 auto 30px;
122
+ display: block;
123
+ }
124
+
125
+ .tagline {
126
+ font-size: 1.1rem;
127
+ margin-bottom: 40px;
128
+ color: #666;
129
+ max-width: 600px;
130
+ margin-left: auto;
131
+ margin-right: auto;
132
+ }
133
+
134
+ .download-section {
135
+ background: #f8f9fa;
136
+ padding: 40px;
137
+ border-radius: 8px;
138
+ margin: 40px 0;
139
+ text-align: center;
140
+ }
141
+
142
+ .download-section h2 {
143
+ font-size: 1.5rem;
144
+ margin-bottom: 20px;
145
+ color: #333;
146
+ }
147
+
148
+ .download-buttons {
149
+ display: flex;
150
+ gap: 15px;
151
+ justify-content: center;
152
+ flex-wrap: wrap;
153
+ margin-bottom: 30px;
154
+ }
155
+
156
+ .btn {
157
+ display: inline-block;
158
+ padding: 12px 24px;
159
+ background: #007bff;
160
+ color: white;
161
+ text-decoration: none;
162
+ border-radius: 4px;
163
+ font-weight: 500;
164
+ transition: background-color 0.2s;
165
+ border-bottom: none;
166
+ }
167
+
168
+ .btn:hover {
169
+ background: #0056b3;
170
+ opacity: 1;
171
+ }
172
+
173
+ .btn-secondary {
174
+ background: #6c757d;
175
+ }
176
+
177
+ .btn-secondary:hover {
178
+ background: #545b62;
179
+ }
180
+
181
+ .features {
182
+ margin: 60px 0;
183
+ }
184
+
185
+ .feature-section {
186
+ margin: 40px 0;
187
+ }
188
+
189
+ .feature-section h2 {
190
+ font-size: 1.8rem;
191
+ margin-bottom: 20px;
192
+ color: #333;
193
+ }
194
+
195
+ .feature-section p {
196
+ color: #666;
197
+ margin-bottom: 20px;
198
+ }
199
+
200
+ .feature-list {
201
+ list-style: none;
202
+ padding: 0;
203
+ }
204
+
205
+ .feature-list li {
206
+ padding: 8px 0;
207
+ color: #666;
208
+ }
209
+
210
+ .feature-list li:before {
211
+ content: "•";
212
+ color: #007bff;
213
+ font-weight: bold;
214
+ margin-right: 10px;
215
+ }
216
+
217
+ .example-sites {
218
+ background: #f8f9fa;
219
+ padding: 30px;
220
+ border-radius: 8px;
221
+ margin: 40px 0;
222
+ }
223
+
224
+ .example-sites h3 {
225
+ margin-bottom: 20px;
226
+ color: #333;
227
+ }
228
+
229
+ .site-links {
230
+ display: grid;
231
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
232
+ gap: 15px;
233
+ }
234
+
235
+ .site-link {
236
+ display: block;
237
+ padding: 10px;
238
+ background: white;
239
+ border: 1px solid #dee2e6;
240
+ border-radius: 4px;
241
+ text-decoration: none;
242
+ color: #007bff;
243
+ font-size: 0.9rem;
244
+ transition: all 0.2s;
245
+ border-bottom: none;
246
+ }
247
+
248
+ .site-link:hover {
249
+ background: #e9ecef;
250
+ border-color: #007bff;
251
+ opacity: 1;
252
+ }
253
+
254
+ .principles {
255
+ background: #f8f9fa;
256
+ padding: 30px;
257
+ border-radius: 8px;
258
+ margin: 40px 0;
259
+ }
260
+
261
+ .principles h3 {
262
+ margin-bottom: 20px;
263
+ color: #333;
264
+ }
265
+
266
+ .principles-list {
267
+ display: grid;
268
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
269
+ gap: 10px;
270
+ list-style: none;
271
+ }
272
+
273
+ .principles-list li {
274
+ padding: 8px 12px;
275
+ background: white;
276
+ border-radius: 4px;
277
+ font-size: 0.9rem;
278
+ color: #666;
279
+ text-align: center;
280
+ }
281
+
282
+ .code-block {
283
+ background: #f8f9fa;
284
+ border: 1px solid #dee2e6;
285
+ border-radius: 4px;
286
+ padding: 20px;
287
+ margin: 20px 0;
288
+ overflow-x: auto;
289
+ }
290
+
291
+ .code-block pre {
292
+ margin: 0;
293
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
294
+ font-size: 0.9rem;
295
+ color: #333;
296
+ }
297
+
298
+ .code-block code {
299
+ color: #e83e8c;
300
+ }
301
+
302
+ .code-block .string {
303
+ color: #28a745;
304
+ }
305
+
306
+ .code-block .comment {
307
+ color: #6c757d;
308
+ }
309
+
310
+ footer {
311
+ margin-top: 100px;
312
+ padding-top: 25px;
313
+ border-top: 2px solid #eee;
314
+ font-size: 1.15rem;
315
+ color: #999;
316
+ text-align: right;
317
+ }
318
+
319
+ .footer-links {
320
+ display: flex;
321
+ gap: 30px;
322
+ justify-content: center;
323
+ flex-wrap: wrap;
324
+ margin-bottom: 30px;
325
+ text-align: center;
326
+ }
327
+
328
+ .footer-links a {
329
+ color: #007bff;
330
+ text-decoration: none;
331
+ border-bottom: none;
332
+ }
333
+
334
+ .footer-links a:hover {
335
+ text-decoration: underline;
336
+ opacity: 1;
337
+ }
338
+
339
+ .footer-note {
340
+ font-size: 0.9rem;
341
+ color: #999;
342
+ }
343
+
344
+ @media (max-width: 1000px) {
345
+ html {
346
+ font-size: 19px;
347
+ }
348
+ .container {
349
+ max-width: 97vw;
350
+ }
351
+ h1 {
352
+ font-size: 2.8rem;
353
+ }
354
+ h2 {
355
+ font-size: 1.15rem;
356
+ }
357
+ }
358
+
359
+ @media (max-width: 768px) {
360
+ html {
361
+ font-size: 16px;
362
+ }
363
+ body {
364
+ padding: 25px 8px;
365
+ }
366
+ h1 {
367
+ font-size: 2rem;
368
+ }
369
+ .subtitle {
370
+ font-size: 1rem;
371
+ }
372
+ .links {
373
+ gap: 20px;
374
+ }
375
+ .project-title {
376
+ font-size: 1.15rem;
377
+ }
378
+
379
+ .download-buttons {
380
+ flex-direction: column;
381
+ align-items: center;
382
+ }
383
+
384
+ .site-links {
385
+ grid-template-columns: 1fr;
386
+ }
387
+
388
+ .principles-list {
389
+ grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
390
+ }
391
+
392
+ .footer-links {
393
+ flex-direction: column;
394
+ gap: 15px;
395
+ }
396
+ }
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg height="400px" width="400px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
3
+ viewBox="0 0 400 400" xml:space="preserve">
4
+ <circle style="fill:#2C3E50;" cx="200" cy="200" r="200"/>
5
+ <circle style="fill:#34495E;" cx="200" cy="200" r="180"/>
6
+
7
+ <!-- Simple tent shape -->
8
+ <path style="fill:#E67E22;" d="M200,80L120,200L280,200L200,80z"/>
9
+ <path style="fill:#D35400;" d="M200,80L120,200L200,200L200,80z"/>
10
+
11
+ <!-- Simple equalizer bars -->
12
+ <rect x="60" y="200" width="12" height="30" fill="#27AE60"/>
13
+ <rect x="80" y="190" width="12" height="40" fill="#27AE60"/>
14
+ <rect x="100" y="180" width="12" height="50" fill="#27AE60"/>
15
+ <rect x="120" y="170" width="12" height="60" fill="#27AE60"/>
16
+ <rect x="140" y="160" width="12" height="70" fill="#27AE60"/>
17
+ <rect x="160" y="150" width="12" height="80" fill="#27AE60"/>
18
+ <rect x="180" y="140" width="12" height="90" fill="#27AE60"/>
19
+ <rect x="200" y="130" width="12" height="100" fill="#27AE60"/>
20
+ <rect x="220" y="140" width="12" height="90" fill="#27AE60"/>
21
+ <rect x="240" y="150" width="12" height="80" fill="#27AE60"/>
22
+ <rect x="260" y="160" width="12" height="70" fill="#27AE60"/>
23
+ <rect x="280" y="170" width="12" height="60" fill="#27AE60"/>
24
+ <rect x="300" y="180" width="12" height="50" fill="#27AE60"/>
25
+ <rect x="320" y="190" width="12" height="40" fill="#27AE60"/>
26
+ <rect x="340" y="200" width="12" height="30" fill="#27AE60"/>
27
+
28
+ <!-- Simple treble clef -->
29
+ <path d="M80,120c0,0,8,15,8,30c0,15-8,30-8,30s8-15,8-30C88,135,80,120,80,120z" fill="#ECF0F1"/>
30
+ </svg>