Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
307 changes: 307 additions & 0 deletions .editorconfig

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
* text=auto

**/wwwroot/Scripts/* linguist-vendored

# Keep LF line endings in webroot assets files. Otherwise, building them under Windows would change the line endings to CLRF and cause changes without actually editing the source files.
**/wwwroot/**/*.js text eol=lf
**/wwwroot/**/*.css text eol=lf
51 changes: 51 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Contributing to CrestApps.Core

Thanks for contributing to `CrestApps.Core`. This repository contains the shared CrestApps framework libraries, sample hosts, and the documentation site.

## Getting started

```bash
git clone https://github.com/CrestApps/CrestApps.Core.git
cd CrestApps.Core
git checkout main
```

Install:

- .NET 10 SDK
- Node.js 20+ for the docs site and asset tooling

Common commands:

```bash
dotnet build .\CrestApps.Core.slnx -c Release /p:NuGetAudit=false
dotnet test .\tests\CrestApps.Core.Tests\CrestApps.Core.Tests.csproj -c Release /p:NuGetAudit=false
cd src\CrestApps.Core.Docs
npm install
npm run build
```

## What to work on

- Browse [open issues](https://github.com/CrestApps/CrestApps.Core/issues)
- For larger features or behavioral changes, open an issue before you start

## Pull request expectations

- Keep changes focused
- Add or update tests when behavior changes
- Update the Docusaurus docs in `src\CrestApps.Core.Docs` when user-facing behavior or project guidance changes
- Include a changelog update when the change is release-note worthy
- Link the PR to the related issue when applicable
- Mark the PR as draft if it is not ready for review

## Review workflow

- Address review feedback in follow-up commits
- Do not manually resolve review conversations
- Re-request review after feedback is addressed

## Related documentation

- Core framework docs: <https://core.crestapps.com>
- Orchard Core implementation docs: <https://orchardcore.crestapps.com>
27 changes: 27 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
name: Bug report
about: Create a bug report to help us improve
title: ''
labels: 'bug :bug:'
assignees: ''

---

### Describe the bug

### CrestApps.Core version

Add the package version or commit hash you are using.

### To Reproduce
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. See error

### Expected behavior
A clear and concise description of what you expected to happen.

### Logs and screenshots
If applicable, add log files, browser console logs, and screenshots (or screen recording videos) to help explain your problem.
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Discussions
url: https://github.com/CrestApps/CrestApps.Core/discussions
about: Use GitHub Discussions for questions, ideas, and broader design conversations.
18 changes: 18 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: ''

---
<!-- Please also see the docs on how we manage issues: https://docs.orchardcore.net/en/latest/docs/guides/contributing/managing-issues/. -->

### Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is.

### Describe the solution you'd like
A clear and concise description of what you want to happen.

### Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
34 changes: 34 additions & 0 deletions .github/ISSUE_TEMPLATE/release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
name: Publish a release
about: Publish a new CrestApps.Core release
title: 'Release v'
labels: release
assignees: ''

---
Use this checklist for a framework release such as `v1.0.0`.

### Prepare the release

- [ ] Confirm the milestone and release issue are up to date.
- [ ] Make sure `Directory.Build.props` has the intended `VersionPrefix` and `VersionSuffix` values.
- [ ] Update the docs changelog under `src/CrestApps.Core.Docs/docs/changelog/`.
- [ ] Review README, package metadata, and release-facing docs for version-specific text.

### Validate the release

- [ ] Run the full build in Release mode.
- [ ] Run the test suite.
- [ ] Build the docs site.
- [ ] Smoke test the MVC sample host if the release changes runtime behavior.

### Publish the release

- [ ] Tag the release as `v<version>`.
- [ ] Let `release_ci.yml` publish the NuGet packages from the tag.
- [ ] Create the GitHub release and link to the docs release notes.

### After publishing

- [ ] Add or update the next changelog entry under `docs/changelog/`.
- [ ] Move the next development cycle back to preview if needed.
40 changes: 40 additions & 0 deletions .github/codeql/codeql-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: "CodeQL Config for CrestApps.Core"

# This configuration file is referenced by .github/workflows/codeql.yml.
# It is NOT automatically used by GitHub's default CodeQL setup.

# Paths to ignore during analysis.
paths-ignore:
- node_modules
- "**/wwwroot/**"
- "**/bin/**"
- "**/obj/**"
- "docs/**"
- "BenchmarkDotNet.Artifacts/**"
- "TestResults/**"
# Third-party / generated files that should not be analysed.
- "**/Assets/js/flatpickr-culture.js"

query-filters:
# Exclude CSRF (missing antiforgery token) alerts.
# OrchardCore framework automatically validates antiforgery tokens for all
# POST requests via its ModularApplicationModelProvider. Every module in this
# repository references OrchardCore.Module.Targets, which enables this global
# validation. Adding [ValidateAntiForgeryToken] to individual actions is
# therefore redundant.
- exclude:
id: cs/web/missing-token-validation
- exclude:
id: cs/web/missing-csrf-token-validation

# Exclude XSS alerts for ASP.NET Core tag helper attributes.
# All flagged views are admin-only (behind [Admin] attribute requiring
# authentication) and use ASP.NET Core tag helper attributes like
# asp-route-id="@ViewContext.HttpContext.Request.RouteValues["id"]". Tag
# helpers process these values server-side and generate properly URL-encoded
# action URLs — the asp-route-* attribute itself is never rendered to HTML.
# Razor also auto-encodes @ expressions. CodeQL cannot model tag helper
# encoding as a sanitizer, producing false positives for this standard
# OrchardCore admin pattern.
- exclude:
id: cs/web/xss
83 changes: 83 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# CrestApps.Core Development Instructions

Use these instructions when working in this repository.

## Project overview

`CrestApps.Core` is the standalone framework repository for CrestApps shared libraries. It contains reusable .NET packages for AI, orchestration, chat, templating, document processing, SignalR, storage, and sample hosts.

- **Target framework:** .NET 10
- **Docs site:** `src\CrestApps.Core.Docs`
- **Sample hosts:** `src\Startup\CrestApps.Core.Mvc.Web`, `src\Startup\CrestApps.Core.Aspire.AppHost`
- **Tests:** `tests\CrestApps.Core.Tests`

Orchard Core-specific implementation details belong to the separate site at <https://orchardcore.crestapps.com>.

## Build and test

Use the repository root unless a command says otherwise.

```bash
dotnet build .\CrestApps.Core.slnx -c Release /p:NuGetAudit=false
dotnet test .\tests\CrestApps.Core.Tests\CrestApps.Core.Tests.csproj -c Release /p:NuGetAudit=false
```

For root asset tooling:

```bash
npm install
npm run rebuild
```

For the docs site:

```bash
cd src\CrestApps.Core.Docs
npm install
npm run build
```

## Repository layout

Important folders:

- `src\Abstractions` - public contracts
- `src\Primitives` - concrete framework features and providers
- `src\Stores` - persistence implementations
- `src\Utilities` - shared helpers
- `src\Startup` - runnable sample hosts
- `src\CrestApps.Core.Docs` - Docusaurus docs
- `tests\CrestApps.Core.Tests` - unit tests

## Documentation expectations

When a change affects public behavior, configuration, setup, or project guidance:

1. Update the relevant page under `src\CrestApps.Core.Docs\docs`
2. Update the changelog under `src\CrestApps.Core.Docs\docs\changelog`
3. Build the docs site

Keep the docs focused on `CrestApps.Core`. If you need to mention the Orchard Core implementation, treat it as a related downstream product and link to <https://orchardcore.crestapps.com>.

## Coding guidance

- Follow `.editorconfig`
- Prefer constructor injection
- Use `var` consistently with repository style
- Only use expression-bodied members when the entire member fits on a single short line; use a full block body for anything longer or split across lines
- Avoid `DateTime.UtcNow`; prefer injected time abstractions when the surrounding code already uses them
- Keep public docs and comments honest to the current code

## Runtime notes

Use the MVC sample host when you need to inspect end-to-end framework behavior:

```bash
dotnet run --project .\src\Startup\CrestApps.Core.Mvc.Web\CrestApps.Core.Mvc.Web.csproj
```

Use the Aspire host when you need the composed local environment:

```bash
dotnet run --project .\src\Startup\CrestApps.Core.Aspire.AppHost\CrestApps.Core.Aspire.AppHost.csproj
```
28 changes: 28 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
version: 2
updates:
- package-ecosystem: "nuget"
directory: "/"
schedule:
interval: "daily"
# Disable version update PRs; only Dependabot security updates create PRs.
open-pull-requests-limit: 0
ignore:
- dependency-name: "OrchardCore.*"
- dependency-name: "SafeMode"
- dependency-name: "TheAdmin"
- dependency-name: "TheAgencyTheme"
- dependency-name: "TheBlogTheme"
- dependency-name: "TheComingSoonTheme"
- dependency-name: "TheTheme"

- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 0

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 0
1 change: 1 addition & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<!--- Please make sure that you're familiar with our contribution guidelines before submitting a pull request: https://docs.orchardcore.net/en/latest/guides/contributing/. -->
Loading
Loading