aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-02-09 10:58:14 +0000
committerClaude <noreply@anthropic.com>2026-02-09 10:58:14 +0000
commit480ad4288709fb203e92f6542c678315941bdf60 (patch)
tree70f28c90d13345ddfecf46273f2dc8bbeca3964b
parentbb938893e7bbfba7b6913ba1daa1a5996dfdf2f8 (diff)
downloadfeedaka-480ad4288709fb203e92f6542c678315941bdf60.tar.gz
feedaka-480ad4288709fb203e92f6542c678315941bdf60.tar.zst
feedaka-480ad4288709fb203e92f6542c678315941bdf60.zip
Add CLAUDE.md with project conventions and commands
https://claude.ai/code/session_011oeZCDaNFcsxnbRsWRju9t
-rw-r--r--CLAUDE.md82
1 files changed, 82 insertions, 0 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000..4c14a58
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1,82 @@
+# CLAUDE.md
+
+## Project Overview
+
+Feedaka is a personal RSS/Atom feed reader. Monorepo with a Go backend and React/TypeScript frontend, communicating via GraphQL.
+
+## Tech Stack
+
+- **Backend:** Go 1.24+, Echo v4, gqlgen (GraphQL), SQLite with sqlc
+- **Frontend:** React 19, TypeScript, Vite, Tailwind CSS, urql (GraphQL client), wouter (routing)
+- **Task Runner:** [just](https://github.com/casey/just) (justfiles at root and `backend/`)
+- **Linting/Formatting:** Biome (frontend), go fmt (backend)
+- **Code Generation:** gqlgen + sqlc (backend), graphql-codegen (frontend)
+
+## Common Commands
+
+### Build & Dev
+
+```sh
+just build # Build both frontend and backend
+just dev # Start dev servers (frontend + backend)
+just fmt # Format all code
+just check # Type-check all code
+just generate # Regenerate GraphQL and DB code
+```
+
+### Frontend (run from `frontend/`)
+
+```sh
+npm run build # Build with TypeScript + Vite
+npm run dev # Start Vite dev server
+npm run check # Run Biome checks
+npm run fix # Auto-fix with Biome
+npm run generate # Generate GraphQL types
+```
+
+### Backend (run from `backend/`)
+
+```sh
+just build # Compile Go binary
+just fmt # go fmt
+just check # Verify build compiles
+just generate # Run go generate (gqlgen + sqlc)
+```
+
+## Code Generation
+
+Generated files — do not edit by hand:
+
+- `backend/graphql/generated.go` — gqlgen output
+- `backend/graphql/model/generated.go` — gqlgen models
+- `backend/db/users.sql.go`, `backend/db/articles.sql.go`, `backend/db/feeds.sql.go` — sqlc output
+- `frontend/src/graphql/generated/` — graphql-codegen output
+
+Regenerate with `just generate` from the repo root.
+
+## Project Structure
+
+```
+graphql/schema.graphql # Shared GraphQL schema (source of truth)
+backend/
+ cmd/ # CLI commands (serve, migrate, create-user)
+ db/ # Database layer, migrations, sqlc queries
+ graphql/resolver/ # GraphQL resolvers (edit these for backend logic)
+ feed/ # Feed fetching logic
+ auth/ # Authentication
+ config/ # Configuration
+ gqlgen.yml # gqlgen config
+ sqlc.yaml # sqlc config
+frontend/
+ src/
+ components/ # React components
+ pages/ # Page components
+ contexts/ # React contexts (auth)
+ graphql/ # GraphQL queries/mutations
+ services/ # GraphQL client setup
+ biome.json # Biome config
+```
+
+## CI
+
+CI (`just check`, `just build`, `just fmt`) runs on pushes and PRs to main. Formatting changes must be committed before pushing — CI fails if `just fmt` produces uncommitted changes.