Skip to content

Commit 03093fc

Browse files
MelSardesFirebender
andcommitted
feat(docs): add Docusaurus documentation website and project infrastructure
Add comprehensive documentation website built with Docusaurus 3.9.2, featuring a complete guide to the Structus library with bilingual support (English/French). **Website Features:** - Modern homepage with purple theme inspired by detekt.dev - Complete documentation structure: Getting Started, Architecture, Advanced Topics, Best Practices - CQRS and Transactional Outbox implementation guides - French translation with full i18n support - GitHub Pages deployment workflow - Responsive design with dark mode support **Project Infrastructure:** - GitHub issue templates (bug report, feature request) - Pull request template with comprehensive checklist - Contributing guidelines with dependency policy - Documentation website summary and setup guides **Configuration Updates:** - Bump version to 0.1.1 - Update GitHub URLs to use correct case (MelSardes) - Add gradle.local.properties to gitignore for sensitive credentials - Improve publishing credentials handling - Add link to documentation website in README The website is ready for deployment to GitHub Pages and provides a professional documentation experience for library users. ? Generated with [Firebender](https://firebender.com) Co-Authored-By: Firebender <help@firebender.com>
1 parent d07d29d commit 03093fc

File tree

134 files changed

+39344
-11
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

134 files changed

+39344
-11
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: "Bug report"
2+
description: "Report a bug in Structus"
3+
title: "fix: <short description>"
4+
labels:
5+
- bug
6+
body:
7+
- type: markdown
8+
attributes:
9+
value: |
10+
Thanks for reporting a bug!
11+
12+
- type: textarea
13+
id: summary
14+
attributes:
15+
label: Summary
16+
description: What happened?
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: reproduction
22+
attributes:
23+
label: Steps to reproduce
24+
description: Provide steps and a minimal code sample if possible.
25+
placeholder: |
26+
1. ...
27+
2. ...
28+
3. ...
29+
validations:
30+
required: true
31+
32+
- type: textarea
33+
id: expected
34+
attributes:
35+
label: Expected behavior
36+
validations:
37+
required: true
38+
39+
- type: textarea
40+
id: actual
41+
attributes:
42+
label: Actual behavior
43+
validations:
44+
required: true
45+
46+
- type: textarea
47+
id: environment
48+
attributes:
49+
label: Environment
50+
description: "Include versions and OS."
51+
placeholder: |
52+
- Structus version:
53+
- Kotlin version:
54+
- JDK:
55+
- Gradle:
56+
- OS:
57+
validations:
58+
required: true
59+
60+
- type: textarea
61+
id: logs
62+
attributes:
63+
label: Logs / stacktrace
64+
render: shell
65+
description: Paste relevant logs. Remove secrets.
66+
validations:
67+
required: false
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: "Feature request"
2+
description: "Suggest an idea or enhancement for Structus"
3+
title: "feat: <short description>"
4+
labels:
5+
- enhancement
6+
body:
7+
- type: markdown
8+
attributes:
9+
value: |
10+
Thanks for taking the time to propose an enhancement!
11+
12+
- type: textarea
13+
id: problem
14+
attributes:
15+
label: Problem / Motivation
16+
description: What problem are you trying to solve?
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: proposal
22+
attributes:
23+
label: Proposed solution
24+
description: What would you like to see added/changed?
25+
validations:
26+
required: true
27+
28+
- type: textarea
29+
id: alternatives
30+
attributes:
31+
label: Alternatives considered
32+
description: Any alternative approaches you considered.
33+
validations:
34+
required: false
35+
36+
- type: textarea
37+
id: impact
38+
attributes:
39+
label: Impact / Compatibility
40+
description: Consider API impact, breaking changes, dependency policy, etc.
41+
placeholder: |
42+
- Public API changes:
43+
- Potential breaking change:
44+
- New dependencies:
45+
validations:
46+
required: false
47+
48+
- type: textarea
49+
id: context
50+
attributes:
51+
label: Additional context
52+
description: Links, examples, or extra details.
53+
validations:
54+
required: false

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Summary
2+
3+
## What
4+
5+
<!-- Briefly explain what this PR changes and why. -->
6+
7+
## Why
8+
9+
<!-- What problem does this solve? Link issues if applicable: Fixes #123 -->
10+
11+
## How
12+
13+
<!-- High-level approach / design notes. -->
14+
15+
## Checklist
16+
17+
- [ ] I ran `./gradlew check`
18+
- [ ] I added/updated tests (or documented why not)
19+
- [ ] I updated docs / KDoc where relevant
20+
- [ ] I did not introduce new runtime dependencies (except Kotlin stdlib + kotlinx-coroutines-core)
21+
- [ ] I did not commit secrets (tokens, credentials, etc.)
22+
23+
## Screenshots / Logs
24+
25+
<!-- Optional -->
26+
27+
## Additional Notes
28+
29+
<!-- Optional -->

.github/workflows/deploy-docs.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Deploy Documentation
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- 'website/**'
9+
- '.github/workflows/deploy-docs.yml'
10+
workflow_dispatch:
11+
12+
permissions:
13+
contents: read
14+
pages: write
15+
id-token: write
16+
17+
concurrency:
18+
group: "pages"
19+
cancel-in-progress: false
20+
21+
jobs:
22+
build:
23+
runs-on: ubuntu-latest
24+
defaults:
25+
run:
26+
working-directory: website
27+
28+
steps:
29+
- name: Checkout
30+
uses: actions/checkout@v4
31+
32+
- name: Setup Node.js
33+
uses: actions/setup-node@v4
34+
with:
35+
node-version: '20'
36+
cache: 'npm'
37+
cache-dependency-path: website/package-lock.json
38+
39+
- name: Install dependencies
40+
run: npm ci
41+
42+
- name: Build website
43+
run: npm run build
44+
45+
- name: Upload artifact
46+
uses: actions/upload-pages-artifact@v3
47+
with:
48+
path: website/build
49+
50+
deploy:
51+
environment:
52+
name: github-pages
53+
url: ${{ steps.deployment.outputs.page_url }}
54+
runs-on: ubuntu-latest
55+
needs: build
56+
steps:
57+
- name: Deploy to GitHub Pages
58+
id: deployment
59+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ tmp/
4040
*.swp
4141
*~.nib
4242
local.properties
43+
gradle.local.properties
4344
.loadpath
4445
.externalToolBuilders/
4546
.cproject

CONTRIBUTING.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# Contributing
2+
3+
Thanks for taking the time to contribute to Structus!
4+
5+
## Ways to Contribute
6+
7+
- Bug reports and discussions
8+
- Documentation improvements
9+
- New features and refactors
10+
- Tests
11+
12+
## Development Setup
13+
14+
### Prerequisites
15+
16+
- JDK 21 (the build uses a Java toolchain)
17+
- Git
18+
- (Optional) Node.js
19+
- Root tooling (semantic-release): Node >= 20
20+
- Documentation website (Docusaurus): Node >= 18
21+
22+
### Build
23+
24+
From the repository root:
25+
26+
- Build:
27+
- `./gradlew build`
28+
- Run tests:
29+
- `./gradlew test`
30+
- Run full checks (includes coverage verification):
31+
- `./gradlew check`
32+
- Publish to your local Maven repository:
33+
- `./gradlew publishToMavenLocal`
34+
35+
## Documentation Website
36+
37+
The documentation website lives in `website/`.
38+
39+
- Install dependencies:
40+
- `cd website && npm ci`
41+
- Start dev server:
42+
- `npm run start`
43+
- Build:
44+
- `npm run build`
45+
46+
## Project Constraints & Conventions
47+
48+
### Dependency Policy (Important)
49+
50+
Structus is intentionally minimal and framework-agnostic.
51+
52+
- Production code should remain dependency-free **except** for Kotlin stdlib and `kotlinx-coroutines-core`.
53+
- Avoid introducing additional runtime dependencies unless there is a strong justification and it is discussed/approved first.
54+
55+
### Public API / KDoc
56+
57+
The library is compiled with Kotlin explicit API mode.
58+
59+
- Add explicit visibility/return types for public declarations.
60+
- Provide KDoc for public API.
61+
62+
### Code Style
63+
64+
- Keep changes small and focused.
65+
- Prefer clear, explicit code over clever abstractions.
66+
- Preserve package naming conventions (`com.melsardes.libraries.structuskotlin`).
67+
68+
## Credentials / Secrets
69+
70+
Never commit credentials.
71+
72+
If you need to publish artifacts locally or to GitHub Packages, use one of:
73+
74+
- Environment variables
75+
- Your global Gradle properties (`~/.gradle/gradle.properties`)
76+
- A local, gitignored file such as `local.properties` / `gradle.local.properties`
77+
78+
If you accidentally expose a token, revoke it immediately and generate a new one.
79+
80+
## Pull Requests
81+
82+
### Before Opening a PR
83+
84+
- Ensure `./gradlew check` passes
85+
- Add/update tests when changing behavior
86+
- Update documentation when changing public API
87+
88+
### Commit Messages
89+
90+
This repository uses Conventional Commits (semantic-release).
91+
92+
Examples:
93+
94+
- `feat: add domain event dispatcher`
95+
- `fix: handle null aggregate id`
96+
- `docs: improve quick start`
97+
- `refactor: simplify command bus`
98+
99+
## Reporting Issues
100+
101+
- Use GitHub Issues
102+
- Include steps to reproduce, expected behavior, and actual behavior
103+
- Provide version, JDK version, and OS details when relevant

0 commit comments

Comments
 (0)