@@ -61,3 +61,281 @@ Helpful contributions include:
6161- adding new troubleshooting pages that match the existing style
6262
6363Your contribution can help other Webuzo users solve server issues faster.
64+
65+ ### Project Structure
66+
67+ Use the existing project files when contributing:
68+
69+ - ` docs/*.md ` - documentation pages
70+ - ` docs/index.md ` - documentation homepage
71+ - ` mkdocs.yml ` - MkDocs configuration, sidebar navigation, theme settings, and plugins
72+ - ` docs/sitemap.xml ` - published sitemap for ` https://webuzo.cornq.net/sitemap.xml `
73+ - ` docs/llms.txt ` - published AI discovery file for ` https://webuzo.cornq.net/llms.txt `
74+ - ` llms.txt ` - repository-level AI discovery file
75+ - ` docs/robots.txt ` - robots file with sitemap reference
76+ - ` docs/img/ ` - screenshots, favicon, and image assets
77+ - ` docs/css/style.css ` - custom site styling
78+ - ` docs/CNAME ` - custom GitHub Pages domain
79+ - ` .github/workflows/deploy.yml ` - GitHub Pages deployment workflow
80+
81+ ### Fork and Clone
82+
83+ 1 . Fork the repository on GitHub if you do not have write access.
84+ 2 . Clone your fork or the main repository:
85+
86+ ``` bash
87+ git clone https://github.com/cornQ/webuzo-server-setup.git
88+ cd webuzo-server-setup
89+ ```
90+
91+ 3 . If you cloned a fork, keep the upstream repository available:
92+
93+ ``` bash
94+ git remote add upstream https://github.com/cornQ/webuzo-server-setup.git
95+ git fetch upstream
96+ ```
97+
98+ ### Create a Branch
99+
100+ Create a new branch before editing files:
101+
102+ ``` bash
103+ git checkout -b docs/short-description
104+ ```
105+
106+ Recommended branch naming:
107+
108+ - ` docs/add-topic-name `
109+ - ` docs/update-topic-name `
110+ - ` docs/fix-topic-name `
111+ - ` seo/update-metadata-topic-name `
112+ - ` assets/add-screenshot-topic-name `
113+
114+ Examples:
115+
116+ - ` docs/add-webuzo-ssl-guide `
117+ - ` docs/update-mailbaby-config `
118+ - ` docs/fix-ftp-passive-ports `
119+ - ` seo/update-openlitespeed-metadata `
120+
121+ ### Create a New Documentation Page
122+
123+ 1 . Create a new markdown file in ` docs/ ` .
124+ 2 . Use lowercase words separated by hyphens.
125+ 3 . Add SEO front matter at the top.
126+ 4 . Add the page to ` mkdocs.yml ` under the correct ` nav ` section.
127+ 5 . Add the page URL to ` docs/sitemap.xml ` .
128+ 6 . Update ` docs/llms.txt ` and ` llms.txt ` if the new page introduces a new major topic.
129+ 7 . Update ` docs/index.md ` only if the new page should be featured on the homepage.
130+
131+ Sample filename:
132+
133+ ``` txt
134+ docs/webuzo-example-topic.md
135+ ```
136+
137+ Complete sample documentation file:
138+
139+ ```` md
140+ ---
141+ title: Example Webuzo Documentation Page
142+ description: Short description of the Webuzo task, issue, or setup covered by this page.
143+ focus_keyword: Example Webuzo Topic
144+ keywords: Webuzo, Webuzo Documentation, Webuzo Tutorial, Server Administration
145+ canonical: https://webuzo.cornq.net/webuzo-example-topic/
146+ author: CORNQ Technical Team
147+ lastUpdated: 2026-06-20
148+ ---
149+
150+ # Example Webuzo Documentation Page
151+
152+ Briefly describe the issue, task, or setup this page covers.
153+
154+ ## Steps
155+
156+ 1 . First step.
157+ 2 . Second step.
158+ 3 . Third step.
159+
160+ ``` bash
161+ example-command
162+ ```
163+
164+ !!! note
165+ Add safety notes only when they are useful and accurate.
166+ ````
167+
168+ ### Edit an Existing Documentation Page
169+
170+ 1 . Open the relevant file in ` docs/ ` .
171+ 2 . Keep commands, paths, screenshots, warnings, notes, and examples accurate.
172+ 3 . Do not change technical guidance unless you have tested or verified the change.
173+ 4 . If the page title, URL, or intent changes, update the front matter metadata.
174+ 5 . If screenshots change, place replacement images in ` docs/img/ ` and update image references.
175+
176+ ### Rename a Documentation Page
177+
178+ 1 . Rename the markdown file in ` docs/ ` .
179+ 2 . Update the matching page entry in ` mkdocs.yml ` .
180+ 3 . Update the old URL in ` docs/sitemap.xml ` .
181+ 4 . Update any links in ` README.md ` , ` docs/index.md ` , or other docs pages that point to the old file.
182+ 5 . Update the page ` canonical ` value in the markdown front matter.
183+ 6 . Update ` docs/llms.txt ` and ` llms.txt ` if the renamed page changes a major topic label.
184+
185+ ### Delete a Documentation Page
186+
187+ Only delete a page when the information is obsolete, duplicated, unsafe, or intentionally retired.
188+
189+ 1 . Delete the markdown file from ` docs/ ` .
190+ 2 . Remove the page from ` mkdocs.yml ` .
191+ 3 . Remove the URL from ` docs/sitemap.xml ` .
192+ 4 . Remove links to the page from ` README.md ` , ` docs/index.md ` , and any other docs pages.
193+ 5 . Update ` docs/llms.txt ` and ` llms.txt ` if the deleted page represented a major topic.
194+
195+ ### Update Navigation and Sidebar
196+
197+ The sidebar is controlled by the ` nav ` section in ` mkdocs.yml ` .
198+
199+ When adding, renaming, moving, or deleting a page:
200+
201+ 1 . Find the correct section in ` mkdocs.yml ` .
202+ 2 . Add or update the page label and markdown filename.
203+ 3 . Keep labels short and clear.
204+ 4 . Do not create a new section unless the topic does not fit an existing section.
205+
206+ Current navigation sections:
207+
208+ - ` Home `
209+ - ` System Setup `
210+ - ` Database & Cache `
211+ - ` User & Resources `
212+ - ` Mail & FTP `
213+ - ` Migrations `
214+ - ` Others `
215+
216+ ### Update sitemap.xml
217+
218+ The sitemap file is ` docs/sitemap.xml ` .
219+
220+ When adding a page, add a new URL entry:
221+
222+ ``` xml
223+ <url >
224+ <loc >https://webuzo.cornq.net/webuzo-example-topic/</loc >
225+ <lastmod >2026-06-20</lastmod >
226+ <priority >0.8</priority >
227+ </url >
228+ ```
229+
230+ When renaming or deleting a page, update or remove the matching ` <url> ` block.
231+
232+ ### Update llms.txt
233+
234+ This project has two AI discovery files:
235+
236+ - ` docs/llms.txt ` for the published website
237+ - ` llms.txt ` for the repository
238+
239+ Update both files only when a contribution adds, removes, or renames a major documentation topic. Do not add every small page title to ` llms.txt ` .
240+
241+ ### Update Documentation Index Files
242+
243+ The documentation homepage is:
244+
245+ ``` txt
246+ docs/index.md
247+ ```
248+
249+ Update it only when:
250+
251+ - a new page should be featured under homepage cards
252+ - a resource link changes
253+ - the homepage description no longer reflects the docs
254+
255+ The image folder also has:
256+
257+ ``` txt
258+ docs/img/README.md
259+ ```
260+
261+ Do not edit it unless you are documenting image assets.
262+
263+ ### Test Locally
264+
265+ Install MkDocs Material if needed:
266+
267+ ``` bash
268+ pip install mkdocs-material
269+ ```
270+
271+ Build the site:
272+
273+ ``` bash
274+ mkdocs build --strict
275+ ```
276+
277+ Run a local server:
278+
279+ ``` bash
280+ mkdocs serve
281+ ```
282+
283+ Open:
284+
285+ ``` txt
286+ http://127.0.0.1:8000
287+ ```
288+
289+ Before submitting, check:
290+
291+ - the page appears in the sidebar
292+ - internal links work
293+ - code blocks render correctly
294+ - screenshots load correctly
295+ - sitemap changes are valid XML
296+ - no unrelated files changed
297+
298+ ### Commit Message Examples
299+
300+ Use short, specific commit messages:
301+
302+ ``` txt
303+ Add Webuzo SSL documentation
304+ Update MailBaby configuration guide
305+ Fix FTP passive port instructions
306+ Add screenshot for Backuply delete option
307+ Update sitemap for new Webuzo guide
308+ Fix metadata for OpenLiteSpeed page
309+ ```
310+
311+ ### Create a Pull Request
312+
313+ 1 . Push your branch:
314+
315+ ``` bash
316+ git push origin docs/short-description
317+ ```
318+
319+ 2 . Open a pull request on GitHub.
320+ 3 . In the pull request, explain:
321+ - what page changed
322+ - why the change is needed
323+ - whether commands or screenshots were tested
324+ - which files were added, renamed, or deleted
325+ 4 . Wait for review and address feedback.
326+
327+ ### Contributor Checklist
328+
329+ Before opening a pull request, confirm:
330+
331+ - [ ] I edited only the files required for this change.
332+ - [ ] I used the existing ` docs/ ` structure.
333+ - [ ] I added or updated front matter metadata when needed.
334+ - [ ] I updated ` mkdocs.yml ` if navigation changed.
335+ - [ ] I updated ` docs/sitemap.xml ` if URLs changed.
336+ - [ ] I updated ` docs/llms.txt ` and ` llms.txt ` if major topics changed.
337+ - [ ] I updated ` docs/index.md ` only if the homepage needed the change.
338+ - [ ] I placed images in ` docs/img/ ` if screenshots were added.
339+ - [ ] I verified commands and technical guidance where possible.
340+ - [ ] I ran ` mkdocs build --strict ` or explained why I could not.
341+ - [ ] I checked that no unrelated files were modified.
0 commit comments