41 lines
2.7 KiB
Markdown
41 lines
2.7 KiB
Markdown
# Repository Guidelines
|
||
|
||
## Project Structure & Module Organization
|
||
- `frontend-vue/` – Vue 3 + Vite app. Key folders: `src/components`, `src/views`, `src/stores`, `src/services`, `src/composables`, `src/router`, and static assets in `public/`.
|
||
- `backend/` – TypeScript API + WebSocket server. Key folders: `src/controllers`, `src/routes`, `src/services`, `src/utils`, `src/logging`, `src/jobs`. Database files in `schema.sql` and `migrations/`.
|
||
- `etc/systemd/` – example unit files for deployment. `dockerfile` – container build (optional).
|
||
|
||
## Build, Test, and Development Commands
|
||
- Frontend
|
||
- `cd frontend-vue && npm install`
|
||
- `npm run dev` – start Vite dev server.
|
||
- `npm run build` – type-check + production build.
|
||
- `npm run preview` – preview production build.
|
||
- `npm run lint` / `npm run format` – ESLint / Prettier.
|
||
- Backend
|
||
- `cd backend && npm install`
|
||
- `npm run dev` – start server with `tsx --watch`.
|
||
- `npm run start` – start server once (prod-like).
|
||
- Note: backend was initialized with Bun; Node/npm + tsx is the primary flow.
|
||
|
||
## Coding Style & Naming Conventions
|
||
- General: TypeScript, 2-space indent, small focused modules. File names: lowercase-kebab for modules (e.g., `message-service.ts`), `PascalCase.vue` for Vue SFCs.
|
||
- Frontend: Prettier + ESLint enforced; prefer single quotes; composition API; component names in `PascalCase`.
|
||
- Backend: Keep semicolons and consistent import quoting (matches current files). Use `PascalCase` for types/classes, `camelCase` for variables/functions.
|
||
|
||
## Testing Guidelines
|
||
- No formal test runner is configured yet. If adding tests:
|
||
- Place unit tests alongside code as `*.spec.ts` or in a `__tests__/` directory.
|
||
- Keep tests fast and deterministic; document manual verification steps in PRs until a runner is introduced.
|
||
|
||
## Commit & Pull Request Guidelines
|
||
- Commits: imperative mood, concise subject (<=72 chars), include scope prefix when helpful, e.g. `frontend: fix message input blur` or `backend: add channel search`.
|
||
- PRs must include: clear description, linked issue (if any), screenshots/GIFs for UI changes, manual test steps, and notes on migrations if touching `backend/migrations/`.
|
||
- Ensure `npm run lint` (frontend) passes and the app runs locally for both services before requesting review.
|
||
|
||
## Security & Configuration Tips
|
||
- Backend reads environment from `.env` (see `backend/src/config.ts`): important keys include `DB_PATH`, `API_TOKEN`, `UPLOAD_DIR`, `PORT`, `USE_SSL`, `OPENAI_API_KEY`, `OLLAMA_URL`, and related model settings.
|
||
- Do not commit secrets. Provide `.env` examples in PRs when adding new variables.
|
||
- For local SSL, set `USE_SSL=1` and supply `SSL_KEY/SSL_CERT`, or let the server generate a self-signed pair for development.
|
||
|