nibula 1.2.4 → 1.2.5

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 (81) hide show
  1. package/.eleventy.js +81 -81
  2. package/.eleventyignore +3 -3
  3. package/.github/workflows/publish.yml +37 -0
  4. package/CHANGELOG.md +166 -148
  5. package/LICENSE +169 -169
  6. package/NOTICE +4 -4
  7. package/README.md +120 -123
  8. package/bin/create.js +507 -507
  9. package/bin/nibula.js +317 -305
  10. package/docs/Assistant CLI.md +65 -65
  11. package/docs/Backend.md +295 -295
  12. package/docs/Components.md +84 -84
  13. package/docs/Creating pages.md +64 -64
  14. package/docs/Deploy.md +189 -189
  15. package/docs/Head and SEO.md +138 -138
  16. package/docs/Javascript.md +50 -50
  17. package/docs/Styling with SCSS.md +141 -141
  18. package/nginx.conf +75 -75
  19. package/package.json +1 -1
  20. package/src/backend/.htaccess +6 -6
  21. package/src/backend/_core/composer.json +5 -5
  22. package/src/backend/_core/composer.lock +492 -492
  23. package/src/backend/_core/index.js +267 -267
  24. package/src/backend/_core/index.php +147 -147
  25. package/src/backend/_core/init.js +52 -52
  26. package/src/backend/_core/init.php +33 -33
  27. package/src/backend/_core/modules/RateLimiter.js +58 -58
  28. package/src/backend/_core/modules/RateLimiter.php +30 -30
  29. package/src/backend/_core/modules/Response.js +59 -59
  30. package/src/backend/_core/modules/Response.php +48 -48
  31. package/src/backend/api/protected/example-protected.js +23 -23
  32. package/src/backend/api/protected/example-protected.php +16 -16
  33. package/src/backend/api/public/example-public.js +24 -24
  34. package/src/backend/api/public/example-public.php +16 -16
  35. package/src/backend/backend-node.service.example +30 -30
  36. package/src/backend/database/Database.js +46 -46
  37. package/src/backend/database/Database.php +23 -23
  38. package/src/backend/example.config.js +37 -37
  39. package/src/backend/example.config.php +27 -27
  40. package/src/backend/package.json +18 -18
  41. package/src/backend/web.config +16 -16
  42. package/src/frontend/.htaccess +51 -51
  43. package/src/frontend/404.njk +17 -17
  44. package/src/frontend/assets/brand/favicon.svg +54 -54
  45. package/src/frontend/assets/brand/logo.svg +54 -54
  46. package/src/frontend/components/global/footer.njk +25 -25
  47. package/src/frontend/components/global/header.njk +6 -6
  48. package/src/frontend/components/welcome.njk +114 -114
  49. package/src/frontend/data/site.json +48 -48
  50. package/src/frontend/index.njk +8 -8
  51. package/src/frontend/js/modules/exampleModule.js +2 -2
  52. package/src/frontend/js/pages/404.js +6 -6
  53. package/src/frontend/js/pages/homepage.js +6 -6
  54. package/src/frontend/layouts/base.njk +132 -132
  55. package/src/frontend/layouts/page-components.njk +13 -13
  56. package/src/frontend/llms.njk +17 -17
  57. package/src/frontend/robots.njk +7 -7
  58. package/src/frontend/scss/modules/_animations.scss +24 -24
  59. package/src/frontend/scss/modules/_footer.scss +27 -27
  60. package/src/frontend/scss/modules/_global.scss +47 -47
  61. package/src/frontend/scss/modules/_header.scss +27 -27
  62. package/src/frontend/scss/modules/_mobile.scss +29 -29
  63. package/src/frontend/scss/modules/_root.scss +34 -34
  64. package/src/frontend/scss/modules/_typography.scss +14 -14
  65. package/src/frontend/scss/modules/frameworks/_bootstrap.scss +109 -109
  66. package/src/frontend/scss/modules/frameworks/_bulma.scss +108 -108
  67. package/src/frontend/scss/modules/frameworks/_foundation.scss +138 -139
  68. package/src/frontend/scss/modules/frameworks/_uikit.scss +109 -109
  69. package/src/frontend/scss/pages/404.scss +27 -27
  70. package/src/frontend/scss/pages/homepage.scss +22 -22
  71. package/src/frontend/sitemap.njk +17 -17
  72. package/src/frontend/ts/modules/exampleModule.ts +2 -2
  73. package/src/frontend/ts/pages/404.ts +6 -6
  74. package/src/frontend/ts/pages/homepage.ts +6 -6
  75. package/src/frontend/web.config +55 -55
  76. package/tools/config/messages.json +3 -1
  77. package/tools/res/templates/template.js +6 -6
  78. package/tools/res/templates/template.njk +8 -8
  79. package/tools/res/templates/template.scss +22 -22
  80. package/tools/res/templates/template.ts +6 -6
  81. package/tsconfig.json +24 -24
package/LICENSE CHANGED
@@ -1,170 +1,170 @@
1
- Apache License
2
- Version 2.0, January 2004
3
- http://www.apache.org/licenses/
4
-
5
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
-
7
- 1. Definitions.
8
-
9
- "License" shall mean the terms and conditions for use, reproduction,
10
- and distribution as defined by Sections 1 through 9 of this document.
11
-
12
- "Licensor" shall mean the copyright owner or entity authorized by
13
- the copyright owner that is granting the License.
14
-
15
- "Legal Entity" shall mean the union of the acting entity and all
16
- other entities that control, are controlled by, or are under common
17
- control with that entity. For the purposes of this definition,
18
- "control" means (i) the power, direct or indirect, to cause the
19
- direction or management of such entity, whether by contract or
20
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
- outstanding shares, or (iii) beneficial ownership of such entity.
22
-
23
- "You" (or "Your") shall mean an individual or Legal Entity
24
- exercising permissions granted by this License.
25
-
26
- "Source" form shall mean the preferred form for making modifications,
27
- including but not limited to software source code, documentation
28
- source, and configuration files.
29
-
30
- "Object" form shall mean any form resulting from mechanical
31
- transformation or translation of a Source form, including but
32
- not limited to compiled object code, generated documentation,
33
- and conversions to other media types.
34
-
35
- "Work" shall mean the work of authorship, whether in Source or
36
- Object form, made available under the License, as indicated by a
37
- copyright notice that is included in or attached to the work
38
- (an example is provided in the Appendix below).
39
-
40
- "Derivative Works" shall mean any work, whether in Source or Object
41
- form, that is based on (or derived from) the Work and for which the
42
- editorial revisions, annotations, elaborations, or other
43
- modifications represent, as a whole, an original work of authorship.
44
- For the purposes of this License, Derivative Works shall not include
45
- works that remain separable from, or merely link (or bind by name)
46
- to the interfaces of, the Work and Derivative Works thereof.
47
-
48
- "Contribution" shall mean, as submitted to the Licensor for inclusion
49
- in the Work by the copyright owner or by an individual or Legal Entity
50
- authorized to submit on behalf of the copyright owner. For the
51
- purposes of this definition, "submitted" means any form of electronic,
52
- verbal, or written communication sent to the Licensor or its
53
- representatives, including but not limited to communication on
54
- electronic mailing lists, source code control systems, and issue
55
- tracking systems that are managed by, or on behalf of, the Licensor
56
- for the purpose of discussing and improving the Work, but excluding
57
- communication that is conspicuously marked or otherwise designated
58
- in writing by the copyright owner as "Not a Contribution."
59
-
60
- "Contributor" shall mean Licensor and any Legal Entity on behalf of
61
- whom a Contribution has been received by the Licensor and incorporated
62
- within the Work.
63
-
64
- 2. Grant of Copyright License. Subject to the terms and conditions of
65
- this License, each Contributor hereby grants to You a perpetual,
66
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
67
- copyright license to reproduce, prepare Derivative Works of,
68
- publicly display, publicly perform, sublicense, and distribute the
69
- Work and such Derivative Works in Source or Object form.
70
-
71
- 3. Grant of Patent License. Subject to the terms and conditions of
72
- this License, each Contributor hereby grants to You a perpetual,
73
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
74
- (except as stated in this section) patent license to make, have made,
75
- use, offer to sell, sell, import, and otherwise transfer the Work,
76
- where such license applies only to those patent claims licensable
77
- by such Contributor that are necessarily infringed by their
78
- Contribution(s) alone or by combination of their Contribution(s)
79
- with the Work to which such Contribution(s) was submitted. If You
80
- institute patent litigation against any entity (including a
81
- cross-claim or counterclaim in a lawsuit) alleging that the Work
82
- or a Contribution incorporated within the Work constitutes direct
83
- or contributory patent infringement, then any patent licenses
84
- granted to You under this License for that Work shall terminate
85
- as of the date such litigation is filed.
86
-
87
- 4. Redistribution. You may reproduce and distribute copies of the
88
- Work or Derivative Works thereof in any medium, with or without
89
- modifications, and in Source or Object form, provided that You
90
- meet the following conditions:
91
-
92
- (a) You must give any other recipients of the Work or Derivative
93
- Works a copy of this License; and
94
-
95
- (b) You must cause any modified files to carry prominent notices
96
- stating that You changed the files; and
97
-
98
- (c) You must retain, in the Source form of any Derivative Works
99
- that You distribute, all copyright, patent, trademark, and
100
- attribution notices from the Source form of the Work,
101
- excluding those notices that do not pertain to any part of
102
- the Derivative Works; and
103
-
104
- (d) If the Work includes a NOTICE text file, You must include a
105
- readable copy of the attribution notices contained within such
106
- NOTICE file, in at least one of the following places: within
107
- a NOTICE text file distributed as part of the Derivative Works;
108
- within the Source form or documentation, if provided along with
109
- the Derivative Works; or, within a display generated by the
110
- Derivative Works, if and wherever such third-party notices
111
- normally appear. The contents of the NOTICE file are for
112
- informational purposes only and do not modify the License.
113
-
114
- 5. Submission of Contributions. Unless You explicitly state otherwise,
115
- any Contribution intentionally submitted for inclusion in the Work
116
- by You to the Licensor shall be under the terms and conditions of
117
- this License, without any additional terms or conditions.
118
-
119
- 6. Trademarks. This License does not grant permission to use the trade
120
- names, trademarks, service marks, or product names of the Licensor,
121
- except as required for reasonable and customary use in describing the
122
- origin of the Work and reproducing the content of the NOTICE file.
123
-
124
- 7. Disclaimer of Warranty. Unless required by applicable law or agreed
125
- to in writing, Licensor provides the Work (and each Contributor
126
- provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES
127
- OR CONDITIONS OF ANY KIND, either express or implied, including,
128
- without limitation, any warranties or conditions of TITLE,
129
- NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR
130
- PURPOSE. You are solely responsible for determining the
131
- appropriateness of using or reproducing the Work and assume any
132
- risks associated with Your exercise of permissions under this License.
133
-
134
- 8. Limitation of Liability. In no event and under no legal theory,
135
- whether in tort (including negligence), contract, or otherwise,
136
- unless required by applicable law (such as deliberate and grossly
137
- negligent acts) or agreed to in writing, shall any Contributor be
138
- liable to You for damages, including any direct, indirect, special,
139
- incidental, or exemplary damages of any character arising as a
140
- result of this License or out of the use or inability to use the
141
- Work (including but not limited to damages for loss of goodwill,
142
- work stoppage, computer failure or malfunction, or all other
143
- commercial damages or losses), even if such Contributor has been
144
- advised of the possibility of such damages.
145
-
146
- 9. Accepting Warranty or Liability While Redistributing. You may choose
147
- to offer, and charge a fee for, acceptance of support, warranty,
148
- indemnity, or other liability obligations and/or rights consistent
149
- with this License. However, in accepting such obligations, You may
150
- act only on Your own behalf and on Your sole responsibility, not on
151
- behalf of any other Contributor, and only if You agree to indemnify,
152
- defend, and hold each Contributor harmless for any liability incurred
153
- by, or claims asserted against, such Contributor by reason of your
154
- accepting any such warranty or additional liability.
155
-
156
- END OF TERMS AND CONDITIONS
157
-
158
- Copyright 2026 Michele Garofalo
159
-
160
- Licensed under the Apache License, Version 2.0 (the "License");
161
- you may not use this file except in compliance with the License.
162
- You may obtain a copy of the License at
163
-
164
- http://www.apache.org/licenses/LICENSE-2.0
165
-
166
- Unless required by applicable law or agreed to in writing, software
167
- distributed under the License is distributed on an "AS IS" BASIS,
168
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
169
- implied. See the License for the specific language governing
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other
43
+ modifications represent, as a whole, an original work of authorship.
44
+ For the purposes of this License, Derivative Works shall not include
45
+ works that remain separable from, or merely link (or bind by name)
46
+ to the interfaces of, the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean, as submitted to the Licensor for inclusion
49
+ in the Work by the copyright owner or by an individual or Legal Entity
50
+ authorized to submit on behalf of the copyright owner. For the
51
+ purposes of this definition, "submitted" means any form of electronic,
52
+ verbal, or written communication sent to the Licensor or its
53
+ representatives, including but not limited to communication on
54
+ electronic mailing lists, source code control systems, and issue
55
+ tracking systems that are managed by, or on behalf of, the Licensor
56
+ for the purpose of discussing and improving the Work, but excluding
57
+ communication that is conspicuously marked or otherwise designated
58
+ in writing by the copyright owner as "Not a Contribution."
59
+
60
+ "Contributor" shall mean Licensor and any Legal Entity on behalf of
61
+ whom a Contribution has been received by the Licensor and incorporated
62
+ within the Work.
63
+
64
+ 2. Grant of Copyright License. Subject to the terms and conditions of
65
+ this License, each Contributor hereby grants to You a perpetual,
66
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
67
+ copyright license to reproduce, prepare Derivative Works of,
68
+ publicly display, publicly perform, sublicense, and distribute the
69
+ Work and such Derivative Works in Source or Object form.
70
+
71
+ 3. Grant of Patent License. Subject to the terms and conditions of
72
+ this License, each Contributor hereby grants to You a perpetual,
73
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
74
+ (except as stated in this section) patent license to make, have made,
75
+ use, offer to sell, sell, import, and otherwise transfer the Work,
76
+ where such license applies only to those patent claims licensable
77
+ by such Contributor that are necessarily infringed by their
78
+ Contribution(s) alone or by combination of their Contribution(s)
79
+ with the Work to which such Contribution(s) was submitted. If You
80
+ institute patent litigation against any entity (including a
81
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
82
+ or a Contribution incorporated within the Work constitutes direct
83
+ or contributory patent infringement, then any patent licenses
84
+ granted to You under this License for that Work shall terminate
85
+ as of the date such litigation is filed.
86
+
87
+ 4. Redistribution. You may reproduce and distribute copies of the
88
+ Work or Derivative Works thereof in any medium, with or without
89
+ modifications, and in Source or Object form, provided that You
90
+ meet the following conditions:
91
+
92
+ (a) You must give any other recipients of the Work or Derivative
93
+ Works a copy of this License; and
94
+
95
+ (b) You must cause any modified files to carry prominent notices
96
+ stating that You changed the files; and
97
+
98
+ (c) You must retain, in the Source form of any Derivative Works
99
+ that You distribute, all copyright, patent, trademark, and
100
+ attribution notices from the Source form of the Work,
101
+ excluding those notices that do not pertain to any part of
102
+ the Derivative Works; and
103
+
104
+ (d) If the Work includes a NOTICE text file, You must include a
105
+ readable copy of the attribution notices contained within such
106
+ NOTICE file, in at least one of the following places: within
107
+ a NOTICE text file distributed as part of the Derivative Works;
108
+ within the Source form or documentation, if provided along with
109
+ the Derivative Works; or, within a display generated by the
110
+ Derivative Works, if and wherever such third-party notices
111
+ normally appear. The contents of the NOTICE file are for
112
+ informational purposes only and do not modify the License.
113
+
114
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
115
+ any Contribution intentionally submitted for inclusion in the Work
116
+ by You to the Licensor shall be under the terms and conditions of
117
+ this License, without any additional terms or conditions.
118
+
119
+ 6. Trademarks. This License does not grant permission to use the trade
120
+ names, trademarks, service marks, or product names of the Licensor,
121
+ except as required for reasonable and customary use in describing the
122
+ origin of the Work and reproducing the content of the NOTICE file.
123
+
124
+ 7. Disclaimer of Warranty. Unless required by applicable law or agreed
125
+ to in writing, Licensor provides the Work (and each Contributor
126
+ provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES
127
+ OR CONDITIONS OF ANY KIND, either express or implied, including,
128
+ without limitation, any warranties or conditions of TITLE,
129
+ NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR
130
+ PURPOSE. You are solely responsible for determining the
131
+ appropriateness of using or reproducing the Work and assume any
132
+ risks associated with Your exercise of permissions under this License.
133
+
134
+ 8. Limitation of Liability. In no event and under no legal theory,
135
+ whether in tort (including negligence), contract, or otherwise,
136
+ unless required by applicable law (such as deliberate and grossly
137
+ negligent acts) or agreed to in writing, shall any Contributor be
138
+ liable to You for damages, including any direct, indirect, special,
139
+ incidental, or exemplary damages of any character arising as a
140
+ result of this License or out of the use or inability to use the
141
+ Work (including but not limited to damages for loss of goodwill,
142
+ work stoppage, computer failure or malfunction, or all other
143
+ commercial damages or losses), even if such Contributor has been
144
+ advised of the possibility of such damages.
145
+
146
+ 9. Accepting Warranty or Liability While Redistributing. You may choose
147
+ to offer, and charge a fee for, acceptance of support, warranty,
148
+ indemnity, or other liability obligations and/or rights consistent
149
+ with this License. However, in accepting such obligations, You may
150
+ act only on Your own behalf and on Your sole responsibility, not on
151
+ behalf of any other Contributor, and only if You agree to indemnify,
152
+ defend, and hold each Contributor harmless for any liability incurred
153
+ by, or claims asserted against, such Contributor by reason of your
154
+ accepting any such warranty or additional liability.
155
+
156
+ END OF TERMS AND CONDITIONS
157
+
158
+ Copyright 2026 Michele Garofalo
159
+
160
+ Licensed under the Apache License, Version 2.0 (the "License");
161
+ you may not use this file except in compliance with the License.
162
+ You may obtain a copy of the License at
163
+
164
+ http://www.apache.org/licenses/LICENSE-2.0
165
+
166
+ Unless required by applicable law or agreed to in writing, software
167
+ distributed under the License is distributed on an "AS IS" BASIS,
168
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
169
+ implied. See the License for the specific language governing
170
170
  permissions and limitations under the License.
package/NOTICE CHANGED
@@ -1,5 +1,5 @@
1
- Nibula
2
- Copyright 2026 Michele Garofalo
3
-
4
- This product includes software developed by Michele Garofalo.
1
+ Nibula
2
+ Copyright 2026 Michele Garofalo
3
+
4
+ This product includes software developed by Michele Garofalo.
5
5
  https://github.com/Rhaastrake/Nibula
package/README.md CHANGED
@@ -1,123 +1,120 @@
1
- # ✏️ Nibula
2
-
3
- **Nibula** is an open source static site generator built on top of [Eleventy](https://www.11ty.dev/), with one clear mission: make the jump from plain, hand-written websites to a real project setup as gentle as possible — without ever pulling you away from the web you already know.
4
-
5
- If you've only ever written HTML, CSS, and a bit of JavaScript, moving to a "framework" usually feels like starting over: new syntax, new rules, new folder structures, and a pile of documentation before you can even see a page on screen. Nibula is designed to avoid exactly that. You keep working with the **three languages that matter — HTML, CSS, and JavaScript** — and the tool quietly handles the tedious parts around them. The goal is simple: even someone with little experience should always know *where to put their hands*.
6
-
7
- It's a great fit for **showcase and brochure-style websites** (portfolios, landing pages, small business sites), where you want something clean and fast without dragging in a heavy framework.
8
-
9
- ### Why Nibula?
10
-
11
- Building a website from scratch involves a lot of moving parts: templating, build steps, SEO files, server config, project structure. Nibula takes care of all of that for you, so you can focus on what actually matters — **your content and your ideas** — while still learning skills that transfer anywhere on the web.
12
-
13
- - 🔧 **Zero-config ready** install, create, and you're live in minutes
14
- - 🧭 **Stays close to vanilla** — real HTML, CSS, and JS, so nothing you learn goes to waste
15
- - 🔎 **SEO made simple** managed from one central place; `sitemap`, `llms.txt`, and `robots.txt` are generated automatically
16
- - 🖱️ **A helpful CLI** — create a page with one command instead of hand-writing ten separate files
17
- - ⚙️ **Server configs handled for you** — `.htaccess` and `web.config` are generated automatically, and an `nginx.conf` is provided so that anyone comfortable with nginx already has what they need to run the site outside of shared hosting
18
- - 🎨 **Pick your CSS framework** — choose from 4 pre-installed options (or none), and switch later in a few guided steps
19
- - 🔌 **Pick your backend** — Node.js or PHP, chosen at creation; **Composer is only needed for PHP**
20
- - 🧩 **Your own modules** — add your own CSS and JS/TS modules freely and easily
21
- - 🪶 **Lightweight by default** — SCSS frameworks can be filtered so you ship only what you actually use
22
- - 🌍 **Open source** — free to use, free to modify, free to share
23
-
24
- ![Version](https://img.shields.io/badge/version-1.2.4-blue)
25
- ![License](https://img.shields.io/badge/license-Apache--2.0-blue)
26
- ![Eleventy](https://img.shields.io/badge/11ty-v3.1.2-black)
27
-
28
- ## JavaScript or TypeScript — your choice
29
-
30
- When you create a project, you decide how you want to work:
31
-
32
- - **JavaScript** the simplest path, ideal if you're still getting comfortable.
33
- - **TypeScript** — for more experienced users who want stronger typing and tooling.
34
-
35
- Either way, the project structure stays the same, so you can start easy and level up later.
36
-
37
- ## Backend included
38
-
39
- Essential server-side functionality comes built in — no extra setup required. At project creation you **choose your backend: Node.js or PHP** (Python is planned). Both expose the **same REST API** — same routing, `X-Api-Key` auth, CORS and rate limiting — so you can even switch later without rewriting your endpoints. See [docs/Backend.md](docs/Backend.md) for details.
40
-
41
- ## Customizable, but with sensible defaults
42
-
43
- Nibula ships with a clean, opinionated layout so beginners are never lost. But it isn't a cage: as long as you follow a few small conventions and the defined paths, you're free to customize the subpaths of your **components, backend endpoints, and JS/SCSS modules** however you like.
44
-
45
- ## Prerequisites
46
-
47
- ### Required
48
-
49
- * **Node.js**: v18.0.0 or higher **always required** (the Nibula CLI, the build, and the optional Node backend all run on Node)
50
- * **Composer**: **only required if you choose the PHP backend**, to install its PHP dependencies. If you pick the **Node** backend, Composer is never used you can skip installing it entirely.
51
- ### Recomended
52
- * *Suggested:* **Better Nunjucks** VS Code extension by Ed Heltzel
53
- * *Suggester:* **Material Icon Theme** VS Code extension by Philipp Kief
54
-
55
- ## Installation
56
-
57
- Install the Nibula CLI once, globally:
58
-
59
- ```
60
- npm install -g nibula
61
- ```
62
-
63
- This gives you the `nib` command (Alternatives: `nbl`, `nibula`).
64
-
65
- ## Create a project
66
-
67
- From the folder where you keep your websites, run:
68
-
69
- ```
70
- nib new your-project
71
- ```
72
-
73
- The scaffolder is interactive: you choose the **language** (JavaScript/TypeScript), the **CSS framework**, and the **backend** (Node.js or PHP). All dependencies are installed automatically — and if you pick **Node**, the PHP/Composer step is skipped, so you don't need Composer at all.
74
-
75
- Then start the dev server and visit `localhost:8080`:
76
-
77
- ```
78
- cd your-project
79
- nib run
80
- ```
81
-
82
- ## Commands
83
-
84
- Run these from anywhere inside a project (except `nib new`, which you run wherever you want to create the project):
85
-
86
- | Command | Description |
87
- |---|---|
88
- | `nib new <name>` | Create your new project |
89
- | `nib run` | Start the dev server and build the output folder at runtime |
90
- | `nib cli` | Open the page-management assistant |
91
- | `nib build` | Build the output folder runtime |
92
- | `nib clean` | Remove the output directory |
93
- | `nib update` | Update the CLI to the latest version |
94
-
95
- Before scaffolding, nib new checks the npm registry for a newer version and offers to update first. If you accept, Nibula updates itself and then creates the project with the new version automatically — no need to re-run the command. If the registry is unreachable, the check is skipped and creation proceeds normally.
96
-
97
- ## Managing pages
98
-
99
- Instead of creating and wiring up multiple files by hand, let the interactive assistant do it for you. To create, remove, or rename pages and configure the output path, run:
100
-
101
- ```bash
102
- nib cli
103
- ```
104
-
105
- See [docs/Assistant CLI.md](docs/Assistant%20CLI.md) for details.
106
-
107
- ## Deploying
108
-
109
- Nibula builds a static site into your `out` folder, which you upload to a web
110
- server. Which backend you chose affects deployment:
111
-
112
- - **PHP** runs on ordinary shared hosting (Apache/IIS) or a VPS with PHP-FPM — no process to keep alive.
113
- - **Node** runs as a long-running service on a VPS; the web server reverse-proxies `/api` to it.
114
-
115
- The shipped `.htaccess`, `web.config` and `nginx.conf` cover **both** backends.
116
- See [docs/Deploy.md](docs/Deploy.md) for the full guide, including how to start
117
- the Node service on your server.
118
-
119
- ## Roadmap
120
-
121
- * [ ] Add support for multiple themes
122
- * [x] Backend integration choice — pick **PHP or Node.js** at creation (Python planned)
123
- * [ ] Extend documentation with advanced usage examples
1
+ # ✏️ Nibula
2
+
3
+ [![Version](https://img.shields.io/npm/v/nibula?label=version&color=blue)](https://www.npmjs.com/package/nibula)
4
+ [![License](https://img.shields.io/npm/l/nibula?color=blue)](LICENSE)
5
+ ![Eleventy](https://img.shields.io/badge/built%20on-11ty-black?logo=eleventy)
6
+
7
+ **Nibula** is an open source static site generator built on top of [Eleventy](https://www.11ty.dev/), with one clear mission: make the jump from small hand-written practice sites to a real project setup as gentle as possible.
8
+
9
+ If you've only ever written HTML, CSS, and a bit of JavaScript, moving to a "framework" usually feels like starting over: new syntax, new rules, new folder structures, and a pile of documentation before you can even see a page on screen. Nibula is designed to avoid exactly that. You keep working with the **three languages that matter — HTML, CSS, and JavaScript** — and the tool quietly handles the tedious parts around them. The goal is simple: even someone with little experience should always know *where to put their hands*.
10
+
11
+ ### Why choose Nibula?
12
+
13
+ It's a great fit for **showcase and brochure-style websites** (portfolios, landing pages, small business sites), when you want something clean and fast without dragging in a framework that takes weeks to learn and handle.
14
+
15
+ Building a website from scratch means putting together a lot of moving parts: SEO, dependency setup, deployment and server configuration, project structure. Nibula takes care of all of that for you, so you can focus on your content — while still picking up conventions and working habits that are common to the most widely used frameworks, Angular among them.
16
+
17
+ ### 📌 Other things worth knowing
18
+
19
+ - 🔎 **SEO made simple** — managed from one central place; `sitemap`, `llms.txt`, and `robots.txt` are generated automatically
20
+ - 🖱️ **A helpful CLI** — create a page with one command instead of hand-writing ten separate files
21
+ - ⚙️ **Server configs handled for you** — `.htaccess` and `web.config` are generated automatically, and an `nginx.conf` is provided so that anyone comfortable with nginx already has what they need to run the site outside of shared hosting
22
+ - 🎨 **Pick your CSS framework** — choose from 4 pre-installed options (or none), and switch later in a few guided steps
23
+ - 🔌 **Pick your backend** — Node.js or PHP, chosen at creation (choose carefully, based on where you plan to publish)
24
+ - 🧩 **Your own modules** — add your own SCSS and JS/TS modules freely and easily
25
+ - 🪶 **Lightweight by default** — SCSS frameworks can be filtered so you ship only what you actually use
26
+
27
+ ### 🤔 When not to choose it?
28
+
29
+ - **Heavily stateful interfaces** — dashboards, admin panels, editors, anything that keeps changing under the user's hands. A single-page application with React, Vue, or Angular is the right tool there.
30
+ - **Pages generated at request time** — catalogues that depend on the logged-in user, personalised pricing, content that changes by the minute. Nibula builds pages beforehand, not during the visit.
31
+
32
+ ## ⚙️ Backend included
33
+
34
+ Essential server-side functionality comes built in — no extra setup required. At project creation you **choose your backend: Node.js or PHP**. Both expose the **same REST API** — same routing, `X-Api-Key` auth, CORS and rate limiting — so you can even switch later without rewriting your endpoints. See [docs/Backend.md](docs/Backend.md) for details.
35
+
36
+ ## 🧭 Customizable, but with sensible defaults
37
+
38
+ Nibula ships with a clean, opinionated layout so beginners are never lost. But it isn't a cage: as long as you follow a few small conventions and the defined paths, you're free to customize the subpaths of your **components, backend endpoints, and JS/SCSS modules** however you like.
39
+
40
+ ## 📋 Prerequisites
41
+
42
+ ### Required
43
+
44
+ * **Node.js**: v18.0.0 or higher
45
+ * **Composer** *(only if you choose the PHP backend)*: latest version
46
+
47
+ ### Recommended
48
+
49
+ * **Better Nunjucks**VS Code extension by **Ed Heltzel**
50
+ * **Material Icon Theme** — VS Code extension by **Philipp Kief**
51
+
52
+ ## 📦 Installation
53
+
54
+ Install Nibula once, globally:
55
+
56
+ ```
57
+ npm install -g nibula
58
+ ```
59
+
60
+ This gives you the `nib` command (alternatives: `nbl`, `nibula`).
61
+
62
+ ## 🚀 Create a project
63
+
64
+ From the folder where you keep your websites, run:
65
+
66
+ ```
67
+ nib new your-project
68
+ ```
69
+
70
+ The scaffolder is interactive: you choose the **language** (JavaScript/TypeScript), the **CSS framework**, and the **backend** (Node.js or PHP). All dependencies are installed automatically — and if you pick **Node**, the PHP/Composer step is skipped, so you don't need Composer at all.
71
+
72
+ Once the dependencies are installed, move into the project folder and start the dev server (`localhost:8080`):
73
+
74
+ ```
75
+ cd your-project
76
+ nib run
77
+ ```
78
+
79
+ ## 💻 Commands
80
+
81
+ Run these from anywhere inside a project — except `nib new`, which must be run **outside** a project, in the folder where you want the new one created.
82
+
83
+ | Command | Description |
84
+ |---|---|
85
+ | `nib new <name>` | Create your new project |
86
+ | `nib run` | Start the dev server and build the output folder at runtime |
87
+ | `nib cli` | Open the page-management assistant |
88
+ | `nib build` | Build the output folder |
89
+ | `nib clean` | Remove the output directory |
90
+ | `nib update` | Update Nibula to the latest version (applies from your next project on) |
91
+
92
+ ## 📄 Managing pages
93
+
94
+ Instead of creating and wiring up multiple files by hand, let the interactive assistant do it for you. To create, remove, or rename pages and configure the output path, run:
95
+
96
+ ```bash
97
+ nib cli
98
+ ```
99
+
100
+ See [docs/Assistant CLI.md](docs/Assistant%20CLI.md) for details.
101
+
102
+ ## 🌍 Deploying
103
+
104
+ Nibula builds a static site into your `out` folder, which you upload to a web
105
+ server. Which backend you chose affects deployment:
106
+
107
+ - **Node** runs as a long-running service on a VPS; the web server reverse-proxies `/api` to it.
108
+ - **PHP** runs on ordinary shared hosting (Apache/IIS) or a VPS with PHP-FPM — no process to keep alive.
109
+
110
+ The shipped `.htaccess`, `web.config` and `nginx.conf` cover **both** backends.
111
+ See [docs/Deploy.md](docs/Deploy.md) for the full guide, including how to start
112
+ the Node service on your server.
113
+
114
+ ## 🙌 Wrapping up
115
+
116
+ Thanks for giving Nibula a try.
117
+
118
+ It's a one-person project, so every bit of feedback counts more than you'd think: if something breaks, if the documentation isn't clear, or if a feature is missing, open an [issue](https://github.com/Rhaastrake/Nibula/issues) — even just to tell me what you built with it.
119
+
120
+ If Nibula was useful to you, leaving a ⭐ on the repository is the easiest way to help other people find it.