nibula 1.6.0 → 1.6.2

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 (99) hide show
  1. package/.eleventy.js +82 -81
  2. package/CHANGELOG.md +395 -377
  3. package/LICENSE +169 -169
  4. package/NOTICE +4 -4
  5. package/README.md +110 -110
  6. package/bin/create.js +540 -505
  7. package/bin/delegate.js +58 -57
  8. package/bin/nibula.js +302 -302
  9. package/docs/Assistant CLI.md +65 -65
  10. package/docs/Backend.md +201 -201
  11. package/docs/Components.md +140 -140
  12. package/docs/Creating pages.md +69 -69
  13. package/docs/Deploy.md +210 -210
  14. package/docs/Head and SEO.md +139 -139
  15. package/docs/Javascript.md +126 -126
  16. package/docs/Styling with SCSS.md +141 -139
  17. package/nginx.conf +113 -113
  18. package/package.json +69 -69
  19. package/src/backend/.htaccess +6 -6
  20. package/src/backend/_core/composer.json +5 -5
  21. package/src/backend/_core/composer.lock +492 -492
  22. package/src/backend/_core/index.js +267 -267
  23. package/src/backend/_core/index.php +160 -160
  24. package/src/backend/_core/init.js +52 -52
  25. package/src/backend/_core/init.php +33 -33
  26. package/src/backend/_core/modules/RateLimiter.js +58 -58
  27. package/src/backend/_core/modules/RateLimiter.php +30 -30
  28. package/src/backend/_core/modules/Response.js +59 -59
  29. package/src/backend/_core/modules/Response.php +48 -48
  30. package/src/backend/api/protected/example-protected.js +23 -23
  31. package/src/backend/api/protected/example-protected.php +16 -16
  32. package/src/backend/api/public/example-public.js +24 -24
  33. package/src/backend/api/public/example-public.php +16 -16
  34. package/src/backend/database/Database.js +46 -46
  35. package/src/backend/database/Database.php +23 -23
  36. package/src/backend/example.config.js +37 -37
  37. package/src/backend/example.config.php +37 -37
  38. package/src/backend/package.json +17 -17
  39. package/src/backend/web.config +43 -43
  40. package/src/frontend/.htaccess +51 -51
  41. package/src/frontend/404.njk +17 -17
  42. package/src/frontend/assets/brand/favicon.svg +54 -54
  43. package/src/frontend/assets/brand/logo.svg +54 -54
  44. package/src/frontend/components/global/footer.njk +25 -25
  45. package/src/frontend/components/global/header.njk +6 -6
  46. package/src/frontend/components/welcome.njk +115 -115
  47. package/src/frontend/index.njk +8 -8
  48. package/src/frontend/js/global.js +10 -10
  49. package/src/frontend/js/modules/exampleModule.js +2 -2
  50. package/src/frontend/js/pages/404.js +8 -8
  51. package/src/frontend/js/pages/homepage.js +8 -8
  52. package/src/frontend/layouts/base.njk +135 -136
  53. package/src/frontend/layouts/page-components.njk +13 -13
  54. package/src/frontend/llms.njk +17 -17
  55. package/src/frontend/robots.njk +7 -7
  56. package/src/frontend/scss/_global.scss +46 -46
  57. package/src/frontend/scss/_root.scss +13 -13
  58. package/src/frontend/scss/modules/_animations.scss +24 -24
  59. package/src/frontend/scss/modules/_footer.scss +28 -28
  60. package/src/frontend/scss/modules/_header.scss +26 -26
  61. package/src/frontend/scss/modules/_mobile.scss +29 -29
  62. package/src/frontend/scss/modules/_typography.scss +18 -18
  63. package/src/frontend/scss/modules/frameworks/_bootstrap.scss +109 -109
  64. package/src/frontend/scss/modules/frameworks/_bulma.scss +108 -108
  65. package/src/frontend/scss/modules/frameworks/_foundation.scss +137 -137
  66. package/src/frontend/scss/modules/frameworks/_uikit.scss +109 -109
  67. package/src/frontend/scss/pages/404.scss +27 -27
  68. package/src/frontend/scss/pages/homepage.scss +22 -22
  69. package/src/frontend/sitemap.njk +17 -17
  70. package/src/frontend/ts/global.ts +11 -11
  71. package/src/frontend/ts/modules/exampleModule.ts +2 -2
  72. package/src/frontend/ts/pages/404.ts +8 -8
  73. package/src/frontend/ts/pages/homepage.ts +8 -8
  74. package/src/frontend/web.config +51 -51
  75. package/tools/assistant.js +122 -122
  76. package/tools/buildJs.js +39 -39
  77. package/tools/cleanOutput.js +23 -23
  78. package/tools/cli/prompt.js +40 -40
  79. package/tools/cli/ui.js +87 -87
  80. package/tools/config/messages.json +80 -80
  81. package/tools/config/settings.json +130 -130
  82. package/tools/lib/colors.js +17 -17
  83. package/tools/lib/files.js +75 -75
  84. package/tools/lib/logger.js +22 -22
  85. package/tools/lib/outputPath.js +141 -141
  86. package/tools/lib/pageActions.js +146 -146
  87. package/tools/lib/pageArtifacts.js +46 -46
  88. package/tools/lib/pageComponents.js +88 -88
  89. package/tools/lib/pagesData.js +87 -87
  90. package/tools/lib/paths.js +63 -63
  91. package/tools/lib/project.js +54 -54
  92. package/tools/lib/text.js +47 -47
  93. package/tools/lib/validation.js +40 -40
  94. package/tools/res/templates/template.js +7 -7
  95. package/tools/res/templates/template.njk +8 -8
  96. package/tools/res/templates/template.scss +22 -22
  97. package/tools/res/templates/template.ts +8 -8
  98. package/tsconfig.json +24 -24
  99. package/src/frontend/scss/pages/prova.scss +0 -23
@@ -1,140 +1,142 @@
1
- # Styling with SCSS
2
-
3
- ## Page CSS
4
-
5
- Each page has its own SCSS entry point in `src/frontend/scss/pages/`
6
-
7
- It must contain `_root.scss` + any other module that you need and its own specific css rules
8
-
9
- `_root.scss` uses `@use` to enable namespaced access (`root.$var`); other modules use `@import` as they don't expose variables.
10
-
11
- ### examplePage.scss <small>(`src/frontend/scss/pages/`)</small>
12
- ```scss
13
- //==========================
14
- // CSS MODULES IMPORTS
15
- //==========================
16
-
17
- @use "../root" as root;
18
-
19
- @import "../global";
20
-
21
- //==========================
22
- // PAGE CUSTOM CSS RULES
23
- //==========================
24
-
25
- body {
26
- background-color: root.$primary;
27
- }
28
- ```
29
-
30
- ## Global Variables
31
-
32
- Instead of using `:root` in your custom modules or pages, the best thing to do is to centralize all your variables in a single file (that will be tree-shaken automatically by Sass)
33
-
34
- ### _root.scss <small>(`src/frontend/scss/modules/`)</small>
35
- ```scss
36
- $header-height: 10vh;
37
-
38
- // Usage example (in any other file):
39
- header {
40
- height: root.$header-height;
41
- }
42
- ```
43
-
44
- ## Scss modules
45
-
46
- You can create your custom css modules by creating a new `.scss` file in `src/frontend/scss/modules/` (the name of the file must start with `_`)
47
-
48
- You can create subfolders if you want to refactor the structure, but be sure to update the relative paths in the pages that import them
49
-
50
- ### _yourModule.scss <small>(`src/frontend/scss/modules/subfolder/`)</small>
51
- ```scss
52
- @use '../../root' as root;
53
-
54
- body {
55
- background-color: root.$primary;
56
- }
57
- ```
58
-
59
- ### examplePage.scss
60
- ```scss
61
- @import "../modules/subfolder/yourModule";
62
-
63
- // This page will now inherit the body tag rules
64
- // If the same property is declared in both, the last imported one wins
65
- body {
66
- color: root.$dark;
67
- }
68
- ```
69
-
70
- ### Pre-existing modules
71
-
72
- | File | Purpose |
73
- |---|---|
74
- | `_typography.scss` | Font rules |
75
- | `_header.scss` | Header styles |
76
- | `_footer.scss` | Footer styles |
77
- | `_mobile.scss` | Media query rules |
78
- | `_animations.scss` | Keyframe animations (`fade-in`, `spin`) |
79
-
80
- ## CSS Framework
81
-
82
- Some of the most popular css frameworks that supports scss with modules are already installed in `node_modules`
83
-
84
- You can choose one or none of them (more than 1 works, but you may get in various conflicts)
85
-
86
- To enable/disable them you have to modify 3 files around the project by just commenting them
87
-
88
- ### 1. _global.scss <small>(`src/frontend/scss/`)</small>
89
- ```scss
90
- @import "modules/frameworks/bootstrap";
91
- // @import "modules/frameworks/bulma";
92
- // @import "modules/frameworks/foundation";
93
- // @import "modules/frameworks/uikit";
94
- ```
95
-
96
- ### 2. base.njk <small>(`src/frontend/layouts/`)</small>
97
-
98
- ```html
99
- {# Bootstrap JS #}
100
- <script src="/js/bootstrap.bundle.min.js" defer></script>
101
-
102
- {# Foundation JS #}
103
- {# <script src="/js/foundation.min.js" defer></script> #}
104
-
105
- {# UIkit JS #}
106
- {# <script src="/js/uikit.min.js" defer></script> #}
107
- {# <script src="/js/uikit-icons.min.js" defer></script> #}
108
-
109
- {# Bulma — no JS needed #}
110
- ```
111
-
112
- ### 3. eleventy.config.js
113
-
114
- ```javascript
115
- eleventyConfig.addPassthroughCopy({
116
- // Bootstrap
117
- "node_modules/bootstrap/dist/js/bootstrap.bundle.min.js": "js/bootstrap.bundle.min.js",
118
- "node_modules/bootstrap-icons/font/fonts": "css/fonts",
119
-
120
- // Foundation
121
- // "node_modules/foundation-sites/dist/js/foundation.min.js": "js/foundation.min.js",
122
-
123
- // UIkit
124
- // "node_modules/uikit/dist/js/uikit.min.js": "js/uikit.min.js",
125
- // "node_modules/uikit/dist/js/uikit-icons.min.js": "js/uikit-icons.min.js",
126
-
127
- // Bulma — CSS only, no JS passthrough needed
128
- });
129
- ```
130
-
131
- > ⚠️ Changes to `eleventy.config.js` are not picked up while the dev server is running — restart it.
132
-
133
- ### Reducing bundle size
134
-
135
- To reduce the bundle size, open the corresponding framework file (`src/frontend/scss/modules/frameworks/`) and comment out any modules you don't need
136
-
137
- ```scss
138
- @import "bootstrap/scss/card"; // Cards
139
- @import "bootstrap/scss/carousel"; // Carousel
1
+ # Styling with SCSS
2
+
3
+ ## Page CSS
4
+
5
+ Each page has its own SCSS entry point in `src/frontend/scss/pages/`
6
+
7
+ It must contain `_root.scss` + any other module that you need and its own specific css rules
8
+
9
+ `_root.scss` uses `@use` to enable namespaced access (`root.$var`); other modules use `@import` as they don't expose variables.
10
+
11
+ ### examplePage.scss <small>(`src/frontend/scss/pages/`)</small>
12
+ ```scss
13
+ //==========================
14
+ // CSS MODULES IMPORTS
15
+ //==========================
16
+
17
+ @use "../root" as root;
18
+
19
+ @import "../global";
20
+
21
+ //==========================
22
+ // PAGE CUSTOM CSS RULES
23
+ //==========================
24
+
25
+ body {
26
+ background-color: root.$primary;
27
+ }
28
+ ```
29
+
30
+ ## Global Variables
31
+
32
+ Instead of using `:root` in your custom modules or pages, the best thing to do is to centralize all your variables in a single file (that will be tree-shaken automatically by Sass)
33
+
34
+ ### _root.scss <small>(`src/frontend/scss/`)</small>
35
+ ```scss
36
+ $header-height: 10vh;
37
+
38
+ // Usage example (in any other file):
39
+ header {
40
+ height: root.$header-height;
41
+ }
42
+ ```
43
+
44
+ ## Scss modules
45
+
46
+ You can create your custom css modules by creating a new `.scss` file in `src/frontend/scss/modules/` (the name of the file must start with `_`)
47
+
48
+ You can create subfolders if you want to refactor the structure, but be sure to update the relative paths in the pages that import them
49
+
50
+ ### _yourModule.scss <small>(`src/frontend/scss/modules/subfolder/`)</small>
51
+ ```scss
52
+ @use '../../root' as root;
53
+
54
+ @import '../../global';
55
+
56
+ body {
57
+ background-color: root.$primary;
58
+ }
59
+ ```
60
+
61
+ ### examplePage.scss
62
+ ```scss
63
+ @import "../modules/subfolder/yourModule";
64
+
65
+ // This page will now inherit the body tag rules
66
+ // If the same property is declared in both, the last imported one wins
67
+ body {
68
+ color: root.$dark;
69
+ }
70
+ ```
71
+
72
+ ### Pre-existing modules
73
+
74
+ | File | Purpose |
75
+ |---|---|
76
+ | `_typography.scss` | Font rules |
77
+ | `_header.scss` | Header styles |
78
+ | `_footer.scss` | Footer styles |
79
+ | `_mobile.scss` | Media query rules |
80
+ | `_animations.scss` | Keyframe animations (`fade-in`, `spin`) |
81
+
82
+ ## CSS Framework
83
+
84
+ Some of the most popular css frameworks that supports scss with modules are already installed in `node_modules`
85
+
86
+ You can choose one or none of them (more than 1 works, but you may get in various conflicts)
87
+
88
+ To enable/disable them you have to modify 3 files around the project by just commenting them
89
+
90
+ ### 1. _global.scss <small>(`src/frontend/scss/`)</small>
91
+ ```scss
92
+ @import "modules/frameworks/bootstrap";
93
+ // @import "modules/frameworks/bulma";
94
+ // @import "modules/frameworks/foundation";
95
+ // @import "modules/frameworks/uikit";
96
+ ```
97
+
98
+ ### 2. base.njk <small>(`src/frontend/layouts/`)</small>
99
+
100
+ ```html
101
+ {# Bootstrap JS #}
102
+ <script src="{{ '/js/bootstrap.bundle.min.js' | url }}" defer></script>
103
+
104
+ {# Foundation JS #}
105
+ {# <script src="{{ '/js/foundation.min.js' | url }}" defer></script> #}
106
+
107
+ {# UIkit JS #}
108
+ {# <script src="{{ '/js/uikit.min.js' | url }}" defer></script> #}
109
+ {# <script src="{{ '/js/uikit-icons.min.js' | url }}" defer></script> #}
110
+
111
+ {# Bulma — no JS needed #}
112
+ ```
113
+
114
+ ### 3. eleventy.js
115
+
116
+ ```javascript
117
+ eleventyConfig.addPassthroughCopy({
118
+ // Bootstrap
119
+ "node_modules/bootstrap/dist/js/bootstrap.bundle.min.js": "js/bootstrap.bundle.min.js",
120
+ "node_modules/bootstrap-icons/font/fonts": "css/fonts",
121
+
122
+ // Foundation
123
+ // "node_modules/foundation-sites/dist/js/foundation.min.js": "js/foundation.min.js",
124
+
125
+ // UIkit
126
+ // "node_modules/uikit/dist/js/uikit.min.js": "js/uikit.min.js",
127
+ // "node_modules/uikit/dist/js/uikit-icons.min.js": "js/uikit-icons.min.js",
128
+
129
+ // Bulma — CSS only, no JS passthrough needed
130
+ });
131
+ ```
132
+
133
+ > ⚠️ Changes to `eleventy.js` are not picked up while the dev server is running — restart it.
134
+
135
+ ### Reducing bundle size
136
+
137
+ To reduce the bundle size, open the corresponding framework file (`src/frontend/scss/modules/frameworks/`) and comment out any modules you don't need
138
+
139
+ ```scss
140
+ @import "bootstrap/scss/card"; // Cards
141
+ @import "bootstrap/scss/carousel"; // Carousel
140
142
  ```
package/nginx.conf CHANGED
@@ -1,114 +1,114 @@
1
- # =============================================================================
2
- # Nibula — nginx site configuration
3
- # -----------------------------------------------------------------------------
4
- # Replace the three placeholders below, then follow the setup steps in
5
- # docs/Deploy.md → "Your own server (Nginx on a VPS)".
6
- #
7
- # YOUR_DOMAIN your domain — server_name, twice (port 80 and 443)
8
- # SITE_FOLDER the folder under /var/www/ holding the site
9
- # YOUR_CERTIFICATE the directory name under /etc/letsencrypt/live/
10
- # =============================================================================
11
-
12
- # HTTP (80) configuration
13
- server {
14
-
15
- server_name YOUR_DOMAIN;
16
-
17
- listen 80;
18
- listen [::]:80;
19
-
20
- # Webroot ACME renewal; drop if using the nginx authenticator.
21
- location ^~ /.well-known/acme-challenge/ {
22
- root /var/www/certbot;
23
- }
24
-
25
- location / {
26
- return 301 https://$host$request_uri;
27
- }
28
- }
29
-
30
- # HTTPS (443) configuration
31
- server {
32
- ### Essentials
33
- listen 443 ssl;
34
- listen [::]:443 ssl;
35
-
36
- # nginx >= 1.25;
37
- http2 on;
38
-
39
- server_name YOUR_DOMAIN;
40
- root /var/www/SITE_FOLDER;
41
- index index.html;
42
-
43
- ### Certificate
44
- ssl_certificate /etc/letsencrypt/live/YOUR_CERTIFICATE/fullchain.pem;
45
- ssl_certificate_key /etc/letsencrypt/live/YOUR_CERTIFICATE/privkey.pem;
46
- include /etc/letsencrypt/options-ssl-nginx.conf;
47
- ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
48
-
49
- ### Security headers
50
- add_header X-Content-Type-Options "nosniff" always;
51
- add_header X-Frame-Options "SAMEORIGIN" always;
52
- add_header Referrer-Policy "strict-origin-when-cross-origin" always;
53
-
54
- # HSTS persists in browsers for max-age even if removed here. Raise to
55
- # 31536000 once stable; "; includeSubDomains" needs HTTPS on all subdomains.
56
- add_header Strict-Transport-Security "max-age=300" always;
57
-
58
- server_tokens off;
59
- autoindex off;
60
-
61
- ### Blocked paths
62
- error_page 403 404 /404.html;
63
-
64
- location ^~ /backend/ {
65
- return 404;
66
- }
67
-
68
- location ~* (^|/)web\.config$ {
69
- return 404;
70
- }
71
-
72
- location ~ /\. {
73
- return 404;
74
- }
75
-
76
- location ~ \.php$ {
77
- return 404;
78
- }
79
-
80
- ### API backend — Node primary, PHP fallback
81
- location ^~ /api/ {
82
- proxy_pass http://127.0.0.1:3000;
83
- proxy_http_version 1.1;
84
- proxy_set_header Host $host;
85
- proxy_set_header X-Real-IP $remote_addr;
86
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
87
- proxy_set_header X-Forwarded-Proto $scheme;
88
-
89
- # proxy_read_timeout defaults to 60s; raise only for slow endpoints.
90
- proxy_connect_timeout 5s;
91
-
92
- proxy_intercept_errors on;
93
- error_page 502 504 = @php_backend;
94
-
95
- # WebSocket is not enabled; needs a $connection_upgrade map at http level.
96
- }
97
-
98
- location @php_backend {
99
- include fastcgi_params;
100
-
101
- fastcgi_param SCRIPT_FILENAME $document_root/backend/_core/index.php;
102
- fastcgi_pass unix:/run/php/php-fpm.sock;
103
- }
104
-
105
- ### Static files
106
- location / {
107
- try_files $uri $uri/ $uri.html =404;
108
- }
109
-
110
- ### Error page
111
- location = /404.html {
112
- internal;
113
- }
1
+ # =============================================================================
2
+ # Nibula — nginx site configuration
3
+ # -----------------------------------------------------------------------------
4
+ # Replace the three placeholders below, then follow the setup steps in
5
+ # docs/Deploy.md → "Your own server (Nginx on a VPS)".
6
+ #
7
+ # YOUR_DOMAIN your domain — server_name, twice (port 80 and 443)
8
+ # SITE_FOLDER the folder under /var/www/ holding the site
9
+ # YOUR_CERTIFICATE the directory name under /etc/letsencrypt/live/
10
+ # =============================================================================
11
+
12
+ # HTTP (80) configuration
13
+ server {
14
+
15
+ server_name YOUR_DOMAIN;
16
+
17
+ listen 80;
18
+ listen [::]:80;
19
+
20
+ # Webroot ACME renewal; drop if using the nginx authenticator.
21
+ location ^~ /.well-known/acme-challenge/ {
22
+ root /var/www/certbot;
23
+ }
24
+
25
+ location / {
26
+ return 301 https://$host$request_uri;
27
+ }
28
+ }
29
+
30
+ # HTTPS (443) configuration
31
+ server {
32
+ ### Essentials
33
+ listen 443 ssl;
34
+ listen [::]:443 ssl;
35
+
36
+ # nginx >= 1.25;
37
+ http2 on;
38
+
39
+ server_name YOUR_DOMAIN;
40
+ root /var/www/SITE_FOLDER;
41
+ index index.html;
42
+
43
+ ### Certificate
44
+ ssl_certificate /etc/letsencrypt/live/YOUR_CERTIFICATE/fullchain.pem;
45
+ ssl_certificate_key /etc/letsencrypt/live/YOUR_CERTIFICATE/privkey.pem;
46
+ include /etc/letsencrypt/options-ssl-nginx.conf;
47
+ ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
48
+
49
+ ### Security headers
50
+ add_header X-Content-Type-Options "nosniff" always;
51
+ add_header X-Frame-Options "SAMEORIGIN" always;
52
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
53
+
54
+ # HSTS persists in browsers for max-age even if removed here. Raise to
55
+ # 31536000 once stable; "; includeSubDomains" needs HTTPS on all subdomains.
56
+ add_header Strict-Transport-Security "max-age=300" always;
57
+
58
+ server_tokens off;
59
+ autoindex off;
60
+
61
+ ### Blocked paths
62
+ error_page 403 404 /404.html;
63
+
64
+ location ^~ /backend/ {
65
+ return 404;
66
+ }
67
+
68
+ location ~* (^|/)web\.config$ {
69
+ return 404;
70
+ }
71
+
72
+ location ~ /\. {
73
+ return 404;
74
+ }
75
+
76
+ location ~ \.php$ {
77
+ return 404;
78
+ }
79
+
80
+ ### API backend — Node primary, PHP fallback
81
+ location ^~ /api/ {
82
+ proxy_pass http://127.0.0.1:3000;
83
+ proxy_http_version 1.1;
84
+ proxy_set_header Host $host;
85
+ proxy_set_header X-Real-IP $remote_addr;
86
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
87
+ proxy_set_header X-Forwarded-Proto $scheme;
88
+
89
+ # proxy_read_timeout defaults to 60s; raise only for slow endpoints.
90
+ proxy_connect_timeout 5s;
91
+
92
+ proxy_intercept_errors on;
93
+ error_page 502 504 = @php_backend;
94
+
95
+ # WebSocket is not enabled; needs a $connection_upgrade map at http level.
96
+ }
97
+
98
+ location @php_backend {
99
+ include fastcgi_params;
100
+
101
+ fastcgi_param SCRIPT_FILENAME $document_root/backend/_core/index.php;
102
+ fastcgi_pass unix:/run/php/php-fpm.sock;
103
+ }
104
+
105
+ ### Static files
106
+ location / {
107
+ try_files $uri $uri/ $uri.html =404;
108
+ }
109
+
110
+ ### Error page
111
+ location = /404.html {
112
+ internal;
113
+ }
114
114
  }
package/package.json CHANGED
@@ -1,69 +1,69 @@
1
- {
2
- "name": "nibula",
3
- "version": "1.6.0",
4
- "description": "A beginner-friendly static site generator built on Eleventy that stays close to vanilla HTML, CSS and JS — with a page-management CLI, an optional PHP backend, and SEO files generated for you.",
5
- "keywords": [
6
- "11ty",
7
- "beginner-friendly",
8
- "boilerplate",
9
- "bootstrap",
10
- "bulma",
11
- "cli",
12
- "deploy-ready",
13
- "eleventy-template",
14
- "nginx",
15
- "njk",
16
- "nodejs",
17
- "php",
18
- "rest-api",
19
- "sass",
20
- "scaffolder",
21
- "seo-optimization",
22
- "ssg",
23
- "static-site-generator",
24
- "typescript",
25
- "uikit"
26
- ],
27
- "author": "Michele Garofalo",
28
- "license": "Apache-2.0",
29
- "homepage": "https://github.com/Rhaastrake/Nibula#readme",
30
- "repository": {
31
- "type": "git",
32
- "url": "git+https://github.com/Rhaastrake/Nibula.git"
33
- },
34
- "bugs": {
35
- "url": "https://github.com/Rhaastrake/Nibula/issues"
36
- },
37
- "funding": "https://paypal.me/rhaastrake",
38
- "outputDir": "out",
39
- "bin": {
40
- "nib": "bin/nibula.js",
41
- "nbl": "bin/nibula.js",
42
- "nibula": "bin/nibula.js"
43
- },
44
- "scripts": {
45
- "build:css": "sass src/frontend/scss:out/css --no-source-map --style=compressed --quiet --load-path=node_modules",
46
- "build:js": "esbuild \"src/frontend/ts/pages/*.ts\" --bundle --outdir=out/js/pages --minify",
47
- "build:11ty": "eleventy",
48
- "build": "npm run clean && npm run build:css && npm run build:js && npm run build:11ty",
49
- "serve:css": "sass --watch src/frontend/scss:out/css --no-source-map --quiet --load-path=node_modules",
50
- "serve:js": "esbuild \"src/frontend/ts/pages/*.ts\" --bundle --outdir=out/js/pages --watch",
51
- "serve:11ty": "eleventy --serve --quiet",
52
- "clean": "node tools/cleanOutput.js",
53
- "serve": "npm run clean && concurrently \"npm run serve:11ty\" \"npm run serve:css\" \"npm run serve:js\"",
54
- "assistant": "node tools/assistant.js"
55
- },
56
- "devDependencies": {
57
- "@11ty/eleventy": "^3.1.2",
58
- "@11ty/eleventy-img": "^6.0.4",
59
- "bootstrap": "^5.3.8",
60
- "bootstrap-icons": "^1.13.1",
61
- "bulma": "^1.0.4",
62
- "concurrently": "^9.2.1",
63
- "esbuild": "^0.27.3",
64
- "foundation-sites": "^6.9.0",
65
- "glob": "^13.0.6",
66
- "sass": "^1.77.0",
67
- "uikit": "^3.25.13"
68
- }
69
- }
1
+ {
2
+ "name": "nibula",
3
+ "version": "1.6.2",
4
+ "description": "A beginner-friendly static site generator built on Eleventy that stays close to vanilla HTML, CSS and JS — with a page-management CLI, an optional PHP backend, and SEO files generated for you.",
5
+ "keywords": [
6
+ "11ty",
7
+ "beginner-friendly",
8
+ "boilerplate",
9
+ "bootstrap",
10
+ "bulma",
11
+ "cli",
12
+ "deploy-ready",
13
+ "eleventy-template",
14
+ "nginx",
15
+ "njk",
16
+ "nodejs",
17
+ "php",
18
+ "rest-api",
19
+ "sass",
20
+ "scaffolder",
21
+ "seo-optimization",
22
+ "ssg",
23
+ "static-site-generator",
24
+ "typescript",
25
+ "uikit"
26
+ ],
27
+ "author": "Michele Garofalo",
28
+ "license": "Apache-2.0",
29
+ "homepage": "https://github.com/Rhaastrake/Nibula#readme",
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "git+https://github.com/Rhaastrake/Nibula.git"
33
+ },
34
+ "bugs": {
35
+ "url": "https://github.com/Rhaastrake/Nibula/issues"
36
+ },
37
+ "funding": "https://paypal.me/rhaastrake",
38
+ "outputDir": "out",
39
+ "bin": {
40
+ "nib": "bin/nibula.js",
41
+ "nbl": "bin/nibula.js",
42
+ "nibula": "bin/nibula.js"
43
+ },
44
+ "scripts": {
45
+ "build:css": "sass src/frontend/scss:out/css --no-source-map --style=compressed --quiet --load-path=node_modules",
46
+ "build:js": "esbuild \"src/frontend/ts/pages/*.ts\" --bundle --outdir=out/js/pages --minify",
47
+ "build:11ty": "eleventy",
48
+ "build": "npm run clean && npm run build:css && npm run build:js && npm run build:11ty",
49
+ "serve:css": "sass --watch src/frontend/scss:out/css --no-source-map --quiet --load-path=node_modules",
50
+ "serve:js": "esbuild \"src/frontend/ts/pages/*.ts\" --bundle --outdir=out/js/pages --watch",
51
+ "serve:11ty": "eleventy --serve --quiet",
52
+ "clean": "node tools/cleanOutput.js",
53
+ "serve": "npm run clean && concurrently \"npm run serve:11ty\" \"npm run serve:css\" \"npm run serve:js\"",
54
+ "assistant": "node tools/assistant.js"
55
+ },
56
+ "devDependencies": {
57
+ "@11ty/eleventy": "^3.1.2",
58
+ "@11ty/eleventy-img": "^6.0.4",
59
+ "bootstrap": "^5.3.8",
60
+ "bootstrap-icons": "^1.13.1",
61
+ "bulma": "^1.0.4",
62
+ "concurrently": "^9.2.1",
63
+ "esbuild": "^0.27.3",
64
+ "foundation-sites": "^6.9.0",
65
+ "glob": "^13.0.6",
66
+ "sass": "^1.77.0",
67
+ "uikit": "^3.25.13"
68
+ }
69
+ }
@@ -1,7 +1,7 @@
1
- <IfModule mod_rewrite.c>
2
- RewriteEngine On
3
- RewriteBase /api/
4
-
5
- RewriteRule ^_core/index\.php$ - [L]
6
- RewriteRule ^(.*)$ _core/index.php [QSA,L]
1
+ <IfModule mod_rewrite.c>
2
+ RewriteEngine On
3
+ RewriteBase /api/
4
+
5
+ RewriteRule ^_core/index\.php$ - [L]
6
+ RewriteRule ^(.*)$ _core/index.php [QSA,L]
7
7
  </IfModule>