74 lines
2.5 KiB
Markdown
74 lines
2.5 KiB
Markdown
# AGENTS
|
|
|
|
This document provides context for AI agents working on this codebase.
|
|
|
|
## Project Overview
|
|
|
|
HAMView is an online Amateur Radio digital protocol live viewer. It features:
|
|
- Displaying online radio receivers in near real-time
|
|
- Streaming of popular Amateur Radio protocols such as APRS, MeshCore, etc.
|
|
- A live packet stream for each of the protocols
|
|
- Packet inspection
|
|
|
|
## Tech Stack
|
|
|
|
Used technologies:
|
|
- **Framework**: React 19 with TypeScript
|
|
- **Build Tool**: Vite 7
|
|
- **User Interface**: React-Bootstrap with Bootstrap version 5
|
|
- **Code Editor**: Visual Studio Code
|
|
- **Backend**: Go with labstack echo router
|
|
- **Libraries used**: Axios for API requests, mqtt.js for streaming
|
|
- **Testing**: use `npm run build`
|
|
|
|
Relevant documents:
|
|
- API documentation is in `../server`
|
|
|
|
## Testing Requirements
|
|
|
|
**Always run tests before completing a task.**
|
|
|
|
Run `npm run build` and run `pre-commit run --files changed files...`
|
|
|
|
## Coding Guidelines
|
|
|
|
### General
|
|
- Prefer ESM imports (`import`/`export`)
|
|
- Use builtins from React, React-Boostrap where possible
|
|
- Follow existing code patterns in the code base
|
|
- Look for opportunities to create reusable styles in `src/styles` or reusable components in `src/components`
|
|
- Never make changes outside of the project directory, if you think this is necessary prompt me for approval
|
|
- Only add things related to the prompted instructions, unless it is required to make the requested changes
|
|
- When adding imports, apply the import styling rules from the next section.
|
|
|
|
### Styling
|
|
- Use React-Bootstrap components where appropriate
|
|
- Follow existing CSS patterns
|
|
- Add reusable style elements to the `src/App.scss`
|
|
- Explicit imports are better than implicit exports, be as specific as possible to minimize code size
|
|
- Order imports:
|
|
- React import first; then any react plugin
|
|
- Third-party libraries;
|
|
- Services;
|
|
- Local types imports;
|
|
- Local imports;
|
|
- Stylesheets
|
|
- Long import statements (> 3 imports) should use multiline import
|
|
- Sort import imports alphabetically
|
|
|
|
## Protected files
|
|
|
|
**Never modify files inside the `data/` directory.** This directory contains game data that should remain unchanged.
|
|
|
|
Never add secrets to code.
|
|
|
|
## Modifying code
|
|
|
|
Prefer the patching strategy over running shell commands where possible.
|
|
Prevent using temporary files and shell commands where possible.
|
|
|
|
## Addressing
|
|
|
|
Don't call me "the user", refer to me as "the developer".
|
|
Refrain from using hyperbolic expressions like "excellent" and "perfect", "ok" or "good" is good enough.
|