gosourcemapper-guide
SKILL.md
AI Assistant Guide: Go (Gin) & React Project
This document serves as a guideline for GitHub Copilot, Antigravity, and other AI coding assistants to ensure consistency, maintainability, and adherence to best practices within this codebase.
1. Tech Stack Overview
- Backend: Go (Golang) with Gin Web Framework.
- Frontend: React (Vite).
- Documentation: Markdown/Starlight (if applicable).
2. Backend (Go + Gin) Best Practices
Project Structure (Standard Go Layout)
We follow the standard project layout:
├── cmd/
│ └── server/
│ └── main.go # Entry point. Initializes the app.
├── internal/ # Private application code (not importable by other projects).
│ ├── config/ # Configuration loading (e.g., env vars).
│ ├── handlers/ # HTTP handlers (controllers).
│ ├── models/ # Domain models and data structures.
│ ├── repository/ # Database access layer.
│ ├── middleware/ # Gin middleware (logging, auth, CORS).
│ ├── router/ # Route definitions.
│ └── service/ # Business logic.
├── pkg/ # Library code ok to use by external applications (if any).
├── docs/ # Swagger/OpenAPI docs.
└── go.mod
coding Guidelines
- Dependency Injection: Avoid global state. Inject services into handlers, and repositories into services.
- Example: Define a
Handlerstruct that holds references toServiceinterfaces.
- Example: Define a
- Error Handling:
- Use custom error types to distinguish between client errors (4xx) and server errors (5xx).
- Return errors up the stack; handle them centrally in the HTTP handler or a middleware.
- Check all errors.
- Gin Specifics:
- Use
gin.Contextonly in the Handler layer. Do not pass it down to services. - specific route groups (e.g.,
v1 := router.Group("/v1")). - Use Struct Tags for binding and validation (e.g.,
binding:"required").
- Use
- Configuration: Use a strong configuration pattern (e.g., loading from environment variables into a struct).
- Concurrency: Use Goroutines and Channels responsibly. Always handle context cancellation (
ctx.Done()).
Naming Conventions
- Interfaces: simple descriptors (e.g.,
Service,Repository) orersuffix (e.g.,Reader,Writer). - files: snake_case.go
- Variables: camelCase.
- Exported: PascalCase.
3. Frontend (React + Vite) Best Practices
- Component Structure: Functional components with Hooks.
- State Management: Use
useState/useReducerfor local state; Context API or external libraries (Zustand/Redux) for global state if complex. - Styling: Modular CSS or Tailwind (if configured). Avoid inline styles.
- Performance: Use
useMemoanduseCallbackjudiciously to prevent unnecessary re-renders.
4. Documentation
- Keep
docs/anddocumentation/updated. - Inline comments should explain why, not what.
- Exported functions must have Godoc comments.
Weekly Installs
3
Repository
chinmay-sawant/…ourcemapGitHub Stars
2
First Seen
Feb 20, 2026
Security Audits
Installed on
opencode3
gemini-cli3
github-copilot3
codex3
amp3
kimi-cli3