mirror of
https://github.com/sysadminsmedia/homebox.git
synced 2025-12-21 13:23:14 +01:00
Better Copilot tooling
This commit is contained in:
@@ -29,6 +29,6 @@
|
|||||||
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
||||||
"remoteUser": "node",
|
"remoteUser": "node",
|
||||||
"features": {
|
"features": {
|
||||||
"ghcr.io/devcontainers/features/go:1": "1.21"
|
"ghcr.io/devcontainers/features/go:1": "1.24"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
40
.github/AGENTS.md
vendored
Normal file
40
.github/AGENTS.md
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
This is a Go based repository with a VueJS client for the frontend built with Vite and Nuxt, with ShadCN.
|
||||||
|
|
||||||
|
To make life easier, the use of a Taskfile is included for the majority of development commands.
|
||||||
|
|
||||||
|
Please follow these guidelines when contributing:
|
||||||
|
|
||||||
|
## Required Before Each Commit
|
||||||
|
- Generate Swagger Files: `task swag --force`
|
||||||
|
- Generate JS API Client: `task typescript-types --force`
|
||||||
|
- Lint Golang: `task go:lint`
|
||||||
|
- Lint frontend: `task ui:fix`
|
||||||
|
|
||||||
|
## Repository Structure
|
||||||
|
### Backend
|
||||||
|
- `backend/`: Contains the backend folders
|
||||||
|
- `backend/app`: Contains main app code including API endpoints
|
||||||
|
- `backend/internal/core`: Contains basic services such as currencies
|
||||||
|
- `backend/data`: Contains all information related to data, including `ent` schemas, repos, migrations, etc.
|
||||||
|
- `backend/data/migrations`: Contains migration data, the `sqlite3` sub-folder contains sqlite migrations, `postgres` sub-folder the postgres migrations, BOTH are REQUIRED.
|
||||||
|
- `backend/data/ent/schema`: Contains the actual `ent` data models.
|
||||||
|
- `backend/data/repo`: Contains the data repositories
|
||||||
|
- `backend/pkgs`: Contains general helper functions and services
|
||||||
|
|
||||||
|
### Frontend
|
||||||
|
- `frontend/`: Contains initial frontend files
|
||||||
|
- `frontend/components`: Contains the ShadCN components
|
||||||
|
- `frontend/locales`: Contains the i18n JSON for languages
|
||||||
|
- `frontend/pages`: Contains VueJS pages
|
||||||
|
- `frontend/test`: Contains Playwright setup
|
||||||
|
- `frontend/test/e2e`: Contains actual Playwright test files
|
||||||
|
|
||||||
|
### Docs
|
||||||
|
- `docs/`: Contains VitePress based documentation
|
||||||
|
|
||||||
|
## Key Guidelines
|
||||||
|
1. Follow best practices for the various programming languages
|
||||||
|
2. Maintain existing code structure and organization when possible
|
||||||
|
3. Use dependency injection when reasonable
|
||||||
|
4. Write tests for new functionality and after fixing bugs to validate they're fixed
|
||||||
|
5. Document changes to the `docs/` folder when appropriate
|
||||||
52
.github/workflows/copilot-setup-steps.yml
vendored
Normal file
52
.github/workflows/copilot-setup-steps.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
name: "Copilot Setup Steps"
|
||||||
|
|
||||||
|
# Automatically run the setup steps when they are changed to allow for easy validation, and
|
||||||
|
# allow manual testing through the repository's "Actions" tab
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- .github/workflows/copilot-setup-steps.yml
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- .github/workflows/copilot-setup-steps.yml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# The job MUST be called `copilot-setup-steps` or it will not be picked up by Copilot.
|
||||||
|
copilot-setup-steps:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
# Set the permissions to the lowest permissions possible needed for your steps.
|
||||||
|
# Copilot will be given its own token for its operations.
|
||||||
|
permissions:
|
||||||
|
# If you want to clone the repository as part of your setup steps, for example to install dependencies, you'll need the `contents: read` permission. If you don't clone the repository in your setup steps, Copilot will do this for you automatically after the steps complete.
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
# You can define any steps you want, and they will run before the agent starts.
|
||||||
|
# If you do not check out your code, Copilot will do this for you.
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: "22"
|
||||||
|
|
||||||
|
- uses: pnpm/action-setup@v3.0.0
|
||||||
|
with:
|
||||||
|
version: 9.12.2
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: "1.24"
|
||||||
|
cache-dependency-path: backend/go.mod
|
||||||
|
|
||||||
|
- name: Install Task
|
||||||
|
uses: arduino/setup-task@v1
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Perform setup
|
||||||
|
run: task setup
|
||||||
Reference in New Issue
Block a user