chore(claude): add frontend part to CLAUDE.md + .claudeignore for security
This commit is contained in:
@@ -0,0 +1,28 @@
|
|||||||
|
# .claudeignore
|
||||||
|
node_modules/
|
||||||
|
target/
|
||||||
|
coverage/
|
||||||
|
storage/
|
||||||
|
|
||||||
|
# Secrets
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.production
|
||||||
|
.jwt_secret
|
||||||
|
*.pem
|
||||||
|
*.key
|
||||||
|
secrets.json
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
|
logs/
|
||||||
|
|
||||||
|
|
||||||
|
# scm
|
||||||
|
.git/
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
@@ -2,7 +2,15 @@
|
|||||||
|
|
||||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
## Build & Dev Commands
|
# Architecture
|
||||||
|
|
||||||
|
This project is split into two parts:
|
||||||
|
- `/src` — OxiCloud Backend server in **Rust**
|
||||||
|
- `/static` — Oxicloud Frontend in **vanilla CSS & vanilla JavaScript**
|
||||||
|
|
||||||
|
# Backend part
|
||||||
|
|
||||||
|
## Backend Build & Dev Commands
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cargo build # Dev build
|
cargo build # Dev build
|
||||||
@@ -20,12 +28,11 @@ cargo run --bin generate-openapi # Regenerate resources/gen/openapi.json
|
|||||||
|
|
||||||
A `justfile` is available for common tasks (`just --list` to see all). Key recipes: `just check` (fmt + clippy), `just test`, `just openapi`.
|
A `justfile` is available for common tasks (`just --list` to see all). Key recipes: `just check` (fmt + clippy), `just test`, `just openapi`.
|
||||||
|
|
||||||
|
|
||||||
Requires **Rust 1.93+** (edition 2024) and **PostgreSQL 13+** (with `pg_trgm` and `ltree` extensions).
|
Requires **Rust 1.93+** (edition 2024) and **PostgreSQL 13+** (with `pg_trgm` and `ltree` extensions).
|
||||||
|
|
||||||
Database setup: `docker compose up -d postgres` — schema is applied automatically via sqlx migrations on app startup. Migration files live in `migrations/`. For local dev, set `DATABASE_URL` in `.env` (see `example.env`).
|
Database setup: `docker compose up -d postgres` — schema is applied automatically via sqlx migrations on app startup. Migration files live in `migrations/`. For local dev, set `DATABASE_URL` in `.env` (see `example.env`).
|
||||||
|
|
||||||
## Pre-commit checks
|
## Backend Pre-commit checks
|
||||||
|
|
||||||
Always run these before committing, in this order:
|
Always run these before committing, in this order:
|
||||||
|
|
||||||
@@ -36,7 +43,7 @@ cargo clippy -- -D warnings # Lint (must pass with zero warnings)
|
|||||||
|
|
||||||
CI enforces both — commits that fail either check will not merge.
|
CI enforces both — commits that fail either check will not merge.
|
||||||
|
|
||||||
## Architecture
|
## Backend Architecture
|
||||||
|
|
||||||
Hexagonal / Clean Architecture with four layers. Dependencies point inward only.
|
Hexagonal / Clean Architecture with four layers. Dependencies point inward only.
|
||||||
|
|
||||||
@@ -104,3 +111,46 @@ The server exposes multiple protocol interfaces simultaneously:
|
|||||||
### Test organization
|
### Test organization
|
||||||
|
|
||||||
Tests are primarily `#[cfg(test)]` modules within source files (~36 files have inline tests). Dedicated test files exist at `*_test.rs` alongside their source. The `test_utils` feature flag enables `mockall` mock generation for trait-heavy testing. No separate `tests/` directory.
|
Tests are primarily `#[cfg(test)]` modules within source files (~36 files have inline tests). Dedicated test files exist at `*_test.rs` alongside their source. The `test_utils` feature flag enables `mockall` mock generation for trait-heavy testing. No separate `tests/` directory.
|
||||||
|
|
||||||
|
# Frontend part
|
||||||
|
|
||||||
|
## Code conventions
|
||||||
|
|
||||||
|
### Javascript
|
||||||
|
|
||||||
|
- ES Modules (import/export), no CommonJS
|
||||||
|
- No frameworks — vanilla JS only
|
||||||
|
- Naming: `camelCase` for variables/functions, `PascalCase` for classes
|
||||||
|
- No `var` — use `const`/`let` only
|
||||||
|
- **JSDoc required** on all public functions — `jsconfig.json` enables `checkJs` globally (equivalent to `@ts-check` on every file)
|
||||||
|
- Type parameters, return types, and complex types via `@typedef`:
|
||||||
|
|
||||||
|
```js
|
||||||
|
/**
|
||||||
|
* @typedef {Object} User
|
||||||
|
* @property {number} id
|
||||||
|
* @property {string} name
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {User} user
|
||||||
|
* @param {string} [role="viewer"]
|
||||||
|
* @returns {Promise}
|
||||||
|
*/
|
||||||
|
async function updateUser(user, role = 'viewer') { … }
|
||||||
|
```
|
||||||
|
|
||||||
|
### CSS
|
||||||
|
- BEM methodology for class names (`.block__element--modifier`)
|
||||||
|
- CSS custom properties in `:root` for colors and spacing
|
||||||
|
- **All colors must use `var(--*)` — no raw hex, rgb, or named colors anywhere except in `:root` declarations**
|
||||||
|
- Mobile-first: media queries expand, they don't restrict
|
||||||
|
- One CSS file per logical component in `/static/css/`
|
||||||
|
|
||||||
|
# What Claude must NOT do
|
||||||
|
- Edit `Cargo.lock` directly
|
||||||
|
- Use npm dependencies not listed in this file
|
||||||
|
- Introduce a JS framework (React, Vue, etc.) without explicit approval
|
||||||
|
- Leave debug `console.log` statements in code
|
||||||
|
- Use raw color values in CSS — always use CSS custom properties
|
||||||
|
- Commit without passing all linters
|
||||||
|
|||||||
Reference in New Issue
Block a user