readme
This commit is contained in:
@@ -0,0 +1,171 @@
|
|||||||
|
# 🧨 Ballistic Admin UI
|
||||||
|
### Internal Tools for the Builder Ecosystem
|
||||||
|
|
||||||
|
The Ballistic Admin UI is the control board behind the Builder.
|
||||||
|
It’s where feeds get shaped, categories get normalized, and the catalog stays sharp.
|
||||||
|
|
||||||
|
This is an internal tool built for speed, clarity, and capability.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🚀 What This Admin UI Does
|
||||||
|
|
||||||
|
## Merchant Feeds
|
||||||
|
Path: `/gunbuilder/admin/merchants`
|
||||||
|
|
||||||
|
A clean dashboard for all merchants feeding the system.
|
||||||
|
|
||||||
|
- View and edit feed URLs
|
||||||
|
- Monitor activity and sync timestamps
|
||||||
|
- Trigger:
|
||||||
|
- Full Imports — pull and process a complete catalog
|
||||||
|
- Offers-Only Syncs — refresh price and stock without re-ingesting products
|
||||||
|
|
||||||
|
Purpose: keep the catalog alive, current, and trustworthy.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Category Mapping
|
||||||
|
Path: `/gunbuilder/admin/category-mapping`
|
||||||
|
|
||||||
|
This is where raw merchant chaos gets cleaned up.
|
||||||
|
|
||||||
|
- See every unique category discovered during import
|
||||||
|
- Filter by merchant or unmapped categories
|
||||||
|
- Assign internal standards:
|
||||||
|
- Part Role (LOWER_RECEIVER, BARREL, etc.)
|
||||||
|
- Configuration (STRIPPED, COMPLETE, KIT)
|
||||||
|
|
||||||
|
Once mapped, future imports classify parts automatically.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Builder Integration
|
||||||
|
|
||||||
|
The admin UI powers the consumer-facing Builder at `/gunbuilder`.
|
||||||
|
|
||||||
|
Today:
|
||||||
|
- Load compatible parts
|
||||||
|
- Assemble full builds
|
||||||
|
- Pull lowest prices across merchants
|
||||||
|
|
||||||
|
Tomorrow:
|
||||||
|
- Full compatibility engine
|
||||||
|
- Price history
|
||||||
|
- Build exports / public build pages
|
||||||
|
- Merchant health monitoring
|
||||||
|
- Deal surfacing and anomaly detection
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🧱 Tech Stack
|
||||||
|
|
||||||
|
- Next.js (App Router)
|
||||||
|
- TypeScript
|
||||||
|
- TailwindCSS
|
||||||
|
- Fetch API client
|
||||||
|
- Spring Boot backend
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔧 Local Development
|
||||||
|
|
||||||
|
## Install Dependencies
|
||||||
|
npm install
|
||||||
|
yarn install
|
||||||
|
pnpm install
|
||||||
|
|
||||||
|
## Environment Variables
|
||||||
|
|
||||||
|
Create `.env.local`:
|
||||||
|
|
||||||
|
NEXT_PUBLIC_API_BASE_URL=http://localhost:8080
|
||||||
|
NEXT_PUBLIC_ADMIN_BASE_PATH=/gunbuilder/admin
|
||||||
|
|
||||||
|
## Start Dev Server
|
||||||
|
npm run dev
|
||||||
|
|
||||||
|
Then visit:
|
||||||
|
http://localhost:3000/gunbuilder/admin
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🌐 Backend Requirements (CORS)
|
||||||
|
|
||||||
|
Your Spring Boot backend must allow:
|
||||||
|
|
||||||
|
Origin: http://localhost:3000
|
||||||
|
|
||||||
|
If CORS fails, the admin cannot communicate with the API.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🧭 Project Structure
|
||||||
|
|
||||||
|
app/
|
||||||
|
gunbuilder/
|
||||||
|
admin/
|
||||||
|
merchants/
|
||||||
|
category-mapping/
|
||||||
|
components/
|
||||||
|
admin/
|
||||||
|
lib/
|
||||||
|
api/
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📘 Admin API
|
||||||
|
|
||||||
|
Full API reference lives in:
|
||||||
|
docs/BALLISTIC_ADMIN_API.md
|
||||||
|
|
||||||
|
Covers:
|
||||||
|
- Merchant endpoints
|
||||||
|
- Import triggers
|
||||||
|
- Offers-only sync
|
||||||
|
- Category mapping
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🧪 Working With Imports
|
||||||
|
|
||||||
|
1. Open Merchant Admin
|
||||||
|
2. Update feed URLs
|
||||||
|
3. Run Full Import
|
||||||
|
4. Go to Category Mapping
|
||||||
|
5. Filter → Only Unmapped
|
||||||
|
6. Map the new categories
|
||||||
|
7. Re-run import to verify
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔒 Security
|
||||||
|
|
||||||
|
Local: no auth, unrestricted.
|
||||||
|
Production: lock everything down.
|
||||||
|
|
||||||
|
Admin tools should never be publicly exposed.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🛣 Roadmap
|
||||||
|
|
||||||
|
- Product browser
|
||||||
|
- Offer browser
|
||||||
|
- Merchant health checks
|
||||||
|
- Compatibility intelligence
|
||||||
|
- Price tracking
|
||||||
|
- Build sharing
|
||||||
|
- Category heuristics
|
||||||
|
- Deal surfacing
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🤝 Contributing
|
||||||
|
|
||||||
|
- Use feature branches
|
||||||
|
- Keep backend calls in `lib/api`
|
||||||
|
- Update docs when adding endpoints
|
||||||
|
- Test everything with the live backend
|
||||||
|
|
||||||
|
---
|
||||||
Reference in New Issue
Block a user