create-atsdc-stack 1.1.0 → 1.2.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 (48) hide show
  1. package/.claude/settings.local.json +3 -1
  2. package/CLAUDE.md +236 -215
  3. package/CONTRIBUTING.md +342 -342
  4. package/INSTALLATION.md +359 -359
  5. package/LICENSE +201 -201
  6. package/README.md +405 -405
  7. package/app/.env.example +17 -17
  8. package/app/.github/labeler.yml +61 -0
  9. package/app/.github/workflows/browser-tests.yml +101 -0
  10. package/app/.github/workflows/check.yml +24 -0
  11. package/app/.github/workflows/greetings.yml +16 -0
  12. package/app/.github/workflows/label.yml +22 -0
  13. package/app/.github/workflows/stale.yml +27 -0
  14. package/app/.github/workflows/summary.yml +34 -0
  15. package/app/.stylelintrc.json +8 -0
  16. package/app/README.md +251 -251
  17. package/app/astro.config.mjs +83 -83
  18. package/app/drizzle.config.ts +16 -16
  19. package/app/package.json +66 -52
  20. package/app/playwright.config.ts +27 -0
  21. package/app/public/manifest.webmanifest +36 -36
  22. package/app/pwa-assets.config.ts +8 -0
  23. package/app/src/components/Card.astro +36 -36
  24. package/app/src/db/initialize.ts +107 -107
  25. package/app/src/db/schema.ts +72 -72
  26. package/app/src/db/validations.ts +158 -158
  27. package/app/src/layouts/Layout.astro +63 -63
  28. package/app/src/lib/config.ts +36 -36
  29. package/app/src/lib/content-converter.ts +141 -141
  30. package/app/src/lib/dom-utils.ts +230 -230
  31. package/app/src/lib/exa-search.ts +269 -269
  32. package/app/src/pages/api/chat.ts +91 -91
  33. package/app/src/pages/api/posts.ts +350 -350
  34. package/app/src/pages/index.astro +87 -87
  35. package/app/src/styles/components/button.scss +152 -152
  36. package/app/src/styles/components/card.scss +180 -180
  37. package/app/src/styles/components/form.scss +240 -240
  38. package/app/src/styles/global.scss +141 -141
  39. package/app/src/styles/pages/index.scss +80 -80
  40. package/app/src/styles/reset.scss +83 -83
  41. package/app/src/styles/variables/globals.scss +96 -96
  42. package/app/src/styles/variables/mixins.scss +238 -238
  43. package/app/tests/browser.test.nopause.ts +10 -0
  44. package/app/tests/browser.test.ts +13 -0
  45. package/bin/cli.js +1151 -1151
  46. package/package.json +8 -6
  47. package/app/.astro/settings.json +0 -5
  48. package/app/.astro/types.d.ts +0 -1
@@ -1,141 +1,141 @@
1
- // OpenProps - CSS design tokens
2
- @use 'open-props/style' as *;
3
- @use 'open-props/normalize' as *;
4
-
5
- @use './reset' as *;
6
- @use './variables/globals' as *;
7
- @use './variables/mixins' as *;
8
-
9
- // Global styles
10
- :root {
11
- // CSS custom properties for runtime theming
12
- --color-primary: #{$primary-color};
13
- --color-primary-hover: #{$primary-hover};
14
- --color-secondary: #{$secondary-color};
15
- --color-accent: #{$accent-color};
16
- --color-text-primary: #{$text-primary};
17
- --color-text-secondary: #{$text-secondary};
18
- --color-bg-primary: #{$bg-primary};
19
- --color-bg-secondary: #{$bg-secondary};
20
- }
21
-
22
- html {
23
- font-family: $font-family-base;
24
- font-size: 16px;
25
- color: $text-primary;
26
- background-color: $bg-primary;
27
- @include smooth-scroll;
28
- }
29
-
30
- body {
31
- overflow-x: hidden;
32
- }
33
-
34
- // Typography
35
- h1 {
36
- @include heading-1;
37
- margin-bottom: $spacing-large;
38
- }
39
-
40
- h2 {
41
- @include heading-2;
42
- margin-bottom: $spacing-medium;
43
- }
44
-
45
- h3 {
46
- @include heading-3;
47
- margin-bottom: $spacing-medium;
48
- }
49
-
50
- p {
51
- margin-bottom: $spacing-medium;
52
- line-height: $line-height-relaxed;
53
- color: $text-secondary;
54
- }
55
-
56
- // Links
57
- a {
58
- color: $primary-color;
59
- transition: color $transition-fast;
60
-
61
- &:hover {
62
- color: $primary-hover;
63
- }
64
-
65
- @include focus-visible;
66
- }
67
-
68
- // Utility classes
69
- .container {
70
- @include container;
71
- }
72
-
73
- .flex-center {
74
- @include flex-center;
75
- }
76
-
77
- .flex-between {
78
- @include flex-between;
79
- }
80
-
81
- .flex-column {
82
- @include flex-column;
83
- }
84
-
85
- .card {
86
- @include card;
87
- }
88
-
89
- .sr-only {
90
- @include visually-hidden;
91
- }
92
-
93
- // Spacing utilities
94
- .mt-small { margin-top: $spacing-small; }
95
- .mt-medium { margin-top: $spacing-medium; }
96
- .mt-large { margin-top: $spacing-large; }
97
- .mt-extra-large { margin-top: $spacing-extra-large; }
98
-
99
- .mb-small { margin-bottom: $spacing-small; }
100
- .mb-medium { margin-bottom: $spacing-medium; }
101
- .mb-large { margin-bottom: $spacing-large; }
102
- .mb-extra-large { margin-bottom: $spacing-extra-large; }
103
-
104
- .pt-small { padding-top: $spacing-small; }
105
- .pt-medium { padding-top: $spacing-medium; }
106
- .pt-large { padding-top: $spacing-large; }
107
- .pt-extra-large { padding-top: $spacing-extra-large; }
108
-
109
- .pb-small { padding-bottom: $spacing-small; }
110
- .pb-medium { padding-bottom: $spacing-medium; }
111
- .pb-large { padding-bottom: $spacing-large; }
112
- .pb-extra-large { padding-bottom: $spacing-extra-large; }
113
-
114
- // Text utilities
115
- .text-center {
116
- text-align: center;
117
- }
118
-
119
- .text-primary {
120
- color: $text-primary;
121
- }
122
-
123
- .text-secondary {
124
- color: $text-secondary;
125
- }
126
-
127
- .text-light {
128
- color: $text-light;
129
- }
130
-
131
- .truncate {
132
- @include truncate;
133
- }
134
-
135
- .line-clamp-2 {
136
- @include line-clamp(2);
137
- }
138
-
139
- .line-clamp-3 {
140
- @include line-clamp(3);
141
- }
1
+ // OpenProps - CSS design tokens
2
+ @use 'open-props/style' as *;
3
+ @use 'open-props/normalize' as *;
4
+
5
+ @use './reset' as *;
6
+ @use './variables/globals' as *;
7
+ @use './variables/mixins' as *;
8
+
9
+ // Global styles
10
+ :root {
11
+ // CSS custom properties for runtime theming
12
+ --color-primary: #{$primary-color};
13
+ --color-primary-hover: #{$primary-hover};
14
+ --color-secondary: #{$secondary-color};
15
+ --color-accent: #{$accent-color};
16
+ --color-text-primary: #{$text-primary};
17
+ --color-text-secondary: #{$text-secondary};
18
+ --color-bg-primary: #{$bg-primary};
19
+ --color-bg-secondary: #{$bg-secondary};
20
+ }
21
+
22
+ html {
23
+ font-family: $font-family-base;
24
+ font-size: 16px;
25
+ color: $text-primary;
26
+ background-color: $bg-primary;
27
+ @include smooth-scroll;
28
+ }
29
+
30
+ body {
31
+ overflow-x: hidden;
32
+ }
33
+
34
+ // Typography
35
+ h1 {
36
+ @include heading-1;
37
+ margin-bottom: $spacing-large;
38
+ }
39
+
40
+ h2 {
41
+ @include heading-2;
42
+ margin-bottom: $spacing-medium;
43
+ }
44
+
45
+ h3 {
46
+ @include heading-3;
47
+ margin-bottom: $spacing-medium;
48
+ }
49
+
50
+ p {
51
+ margin-bottom: $spacing-medium;
52
+ line-height: $line-height-relaxed;
53
+ color: $text-secondary;
54
+ }
55
+
56
+ // Links
57
+ a {
58
+ color: $primary-color;
59
+ transition: color $transition-fast;
60
+
61
+ &:hover {
62
+ color: $primary-hover;
63
+ }
64
+
65
+ @include focus-visible;
66
+ }
67
+
68
+ // Utility classes
69
+ .container {
70
+ @include container;
71
+ }
72
+
73
+ .flex-center {
74
+ @include flex-center;
75
+ }
76
+
77
+ .flex-between {
78
+ @include flex-between;
79
+ }
80
+
81
+ .flex-column {
82
+ @include flex-column;
83
+ }
84
+
85
+ .card {
86
+ @include card;
87
+ }
88
+
89
+ .sr-only {
90
+ @include visually-hidden;
91
+ }
92
+
93
+ // Spacing utilities
94
+ .mt-small { margin-top: $spacing-small; }
95
+ .mt-medium { margin-top: $spacing-medium; }
96
+ .mt-large { margin-top: $spacing-large; }
97
+ .mt-extra-large { margin-top: $spacing-extra-large; }
98
+
99
+ .mb-small { margin-bottom: $spacing-small; }
100
+ .mb-medium { margin-bottom: $spacing-medium; }
101
+ .mb-large { margin-bottom: $spacing-large; }
102
+ .mb-extra-large { margin-bottom: $spacing-extra-large; }
103
+
104
+ .pt-small { padding-top: $spacing-small; }
105
+ .pt-medium { padding-top: $spacing-medium; }
106
+ .pt-large { padding-top: $spacing-large; }
107
+ .pt-extra-large { padding-top: $spacing-extra-large; }
108
+
109
+ .pb-small { padding-bottom: $spacing-small; }
110
+ .pb-medium { padding-bottom: $spacing-medium; }
111
+ .pb-large { padding-bottom: $spacing-large; }
112
+ .pb-extra-large { padding-bottom: $spacing-extra-large; }
113
+
114
+ // Text utilities
115
+ .text-center {
116
+ text-align: center;
117
+ }
118
+
119
+ .text-primary {
120
+ color: $text-primary;
121
+ }
122
+
123
+ .text-secondary {
124
+ color: $text-secondary;
125
+ }
126
+
127
+ .text-light {
128
+ color: $text-light;
129
+ }
130
+
131
+ .truncate {
132
+ @include truncate;
133
+ }
134
+
135
+ .line-clamp-2 {
136
+ @include line-clamp(2);
137
+ }
138
+
139
+ .line-clamp-3 {
140
+ @include line-clamp(3);
141
+ }
@@ -1,80 +1,80 @@
1
- @use '../variables/globals' as *;
2
- @use '../variables/mixins' as *;
3
-
4
- // Home page styles
5
- .home {
6
- padding: $spacing-3x-large 0;
7
-
8
- &__header {
9
- text-align: center;
10
- margin-bottom: $spacing-3x-large;
11
- }
12
-
13
- &__title {
14
- @include heading-1;
15
- margin-inline: auto;
16
- margin-bottom: $spacing-medium;
17
- background: linear-gradient(135deg, $primary-color 0%, $secondary-color 100%);
18
- -webkit-background-clip: text;
19
- -webkit-text-fill-color: transparent;
20
- background-clip: text;
21
- }
22
-
23
- &__subtitle {
24
- font-size: $font-size-large;
25
- color: $text-secondary;
26
- max-width: 600px;
27
- margin: 0 auto;
28
-
29
- @include desktop {
30
- font-size: $font-size-extra-large;
31
- }
32
- }
33
-
34
- &__features {
35
- display: grid;
36
- grid-template-columns: 1fr;
37
- gap: $spacing-large;
38
- margin-bottom: $spacing-3x-large;
39
-
40
- @include tablet {
41
- grid-template-columns: repeat(2, 1fr);
42
- }
43
-
44
- @include wide {
45
- grid-template-columns: repeat(3, 1fr);
46
- }
47
- }
48
-
49
- &__feature {
50
- h3 {
51
- font-size: $font-size-extra-large;
52
- font-weight: $font-weight-semibold;
53
- margin-bottom: $spacing-small;
54
- color: $text-primary;
55
- }
56
-
57
- p {
58
- font-size: $font-size-base;
59
- color: $text-secondary;
60
- margin-bottom: 0;
61
- }
62
- }
63
-
64
- &__cta {
65
- text-align: center;
66
- padding: $spacing-3x-large 0;
67
- border-top: 1px solid $border-color;
68
-
69
- h2 {
70
- @include heading-2;
71
- margin-bottom: $spacing-extra-large;
72
- }
73
- }
74
-
75
- &__cta-buttons {
76
- @include flex-center;
77
- gap: $spacing-large;
78
- flex-wrap: wrap;
79
- }
80
- }
1
+ @use '../variables/globals' as *;
2
+ @use '../variables/mixins' as *;
3
+
4
+ // Home page styles
5
+ .home {
6
+ padding: $spacing-3x-large 0;
7
+
8
+ &__header {
9
+ text-align: center;
10
+ margin-bottom: $spacing-3x-large;
11
+ }
12
+
13
+ &__title {
14
+ @include heading-1;
15
+ margin-inline: auto;
16
+ margin-bottom: $spacing-medium;
17
+ background: linear-gradient(135deg, $primary-color 0%, $secondary-color 100%);
18
+ -webkit-background-clip: text;
19
+ -webkit-text-fill-color: transparent;
20
+ background-clip: text;
21
+ }
22
+
23
+ &__subtitle {
24
+ font-size: $font-size-large;
25
+ color: $text-secondary;
26
+ max-width: 600px;
27
+ margin: 0 auto;
28
+
29
+ @include desktop {
30
+ font-size: $font-size-extra-large;
31
+ }
32
+ }
33
+
34
+ &__features {
35
+ display: grid;
36
+ grid-template-columns: 1fr;
37
+ gap: $spacing-large;
38
+ margin-bottom: $spacing-3x-large;
39
+
40
+ @include tablet {
41
+ grid-template-columns: repeat(2, 1fr);
42
+ }
43
+
44
+ @include wide {
45
+ grid-template-columns: repeat(3, 1fr);
46
+ }
47
+ }
48
+
49
+ &__feature {
50
+ h3 {
51
+ font-size: $font-size-extra-large;
52
+ font-weight: $font-weight-semibold;
53
+ margin-bottom: $spacing-small;
54
+ color: $text-primary;
55
+ }
56
+
57
+ p {
58
+ font-size: $font-size-base;
59
+ color: $text-secondary;
60
+ margin-bottom: 0;
61
+ }
62
+ }
63
+
64
+ &__cta {
65
+ text-align: center;
66
+ padding: $spacing-3x-large 0;
67
+ border-top: 1px solid $border-color;
68
+
69
+ h2 {
70
+ @include heading-2;
71
+ margin-bottom: $spacing-extra-large;
72
+ }
73
+ }
74
+
75
+ &__cta-buttons {
76
+ @include flex-center;
77
+ gap: $spacing-large;
78
+ flex-wrap: wrap;
79
+ }
80
+ }
@@ -1,83 +1,83 @@
1
- /* Modern CSS Reset */
2
-
3
- *,
4
- *::before,
5
- *::after {
6
- box-sizing: border-box;
7
- margin: 0;
8
- padding: 0;
9
- }
10
-
11
- html {
12
- -webkit-text-size-adjust: 100%;
13
- -moz-text-size-adjust: 100%;
14
- text-size-adjust: 100%;
15
- -webkit-font-smoothing: antialiased;
16
- -moz-osx-font-smoothing: grayscale;
17
- }
18
-
19
- body {
20
- min-height: 100vh;
21
- text-rendering: optimizeSpeed;
22
- line-height: 1.5;
23
- }
24
-
25
- h1,
26
- h2,
27
- h3,
28
- h4,
29
- h5,
30
- h6 {
31
- font-size: inherit;
32
- font-weight: inherit;
33
- }
34
-
35
- ul,
36
- ol {
37
- list-style: none;
38
- }
39
-
40
- img,
41
- picture,
42
- video,
43
- canvas,
44
- svg {
45
- display: block;
46
- max-width: 100%;
47
- height: auto;
48
- }
49
-
50
- input,
51
- button,
52
- textarea,
53
- select {
54
- font: inherit;
55
- color: inherit;
56
- }
57
-
58
- button {
59
- background: none;
60
- border: none;
61
- cursor: pointer;
62
- }
63
-
64
- a {
65
- color: inherit;
66
- text-decoration: none;
67
- }
68
-
69
- table {
70
- border-collapse: collapse;
71
- border-spacing: 0;
72
- }
73
-
74
- @media (prefers-reduced-motion: reduce) {
75
- *,
76
- *::before,
77
- *::after {
78
- animation-duration: 0.01ms !important;
79
- animation-iteration-count: 1 !important;
80
- transition-duration: 0.01ms !important;
81
- scroll-behavior: auto !important;
82
- }
83
- }
1
+ /* Modern CSS Reset */
2
+
3
+ *,
4
+ *::before,
5
+ *::after {
6
+ box-sizing: border-box;
7
+ margin: 0;
8
+ padding: 0;
9
+ }
10
+
11
+ html {
12
+ -webkit-text-size-adjust: 100%;
13
+ -moz-text-size-adjust: 100%;
14
+ text-size-adjust: 100%;
15
+ -webkit-font-smoothing: antialiased;
16
+ -moz-osx-font-smoothing: grayscale;
17
+ }
18
+
19
+ body {
20
+ min-height: 100vh;
21
+ text-rendering: optimizeSpeed;
22
+ line-height: 1.5;
23
+ }
24
+
25
+ h1,
26
+ h2,
27
+ h3,
28
+ h4,
29
+ h5,
30
+ h6 {
31
+ font-size: inherit;
32
+ font-weight: inherit;
33
+ }
34
+
35
+ ul,
36
+ ol {
37
+ list-style: none;
38
+ }
39
+
40
+ img,
41
+ picture,
42
+ video,
43
+ canvas,
44
+ svg {
45
+ display: block;
46
+ max-width: 100%;
47
+ height: auto;
48
+ }
49
+
50
+ input,
51
+ button,
52
+ textarea,
53
+ select {
54
+ font: inherit;
55
+ color: inherit;
56
+ }
57
+
58
+ button {
59
+ background: none;
60
+ border: none;
61
+ cursor: pointer;
62
+ }
63
+
64
+ a {
65
+ color: inherit;
66
+ text-decoration: none;
67
+ }
68
+
69
+ table {
70
+ border-collapse: collapse;
71
+ border-spacing: 0;
72
+ }
73
+
74
+ @media (prefers-reduced-motion: reduce) {
75
+ *,
76
+ *::before,
77
+ *::after {
78
+ animation-duration: 0.01ms !important;
79
+ animation-iteration-count: 1 !important;
80
+ transition-duration: 0.01ms !important;
81
+ scroll-behavior: auto !important;
82
+ }
83
+ }