
Streamline admin panel to only handle pending event approvals: - Remove create_admin_event functions from Rust core - Remove createAdminEventJson from API bindings - Update events admin page to focus on pending approvals only - Maintain edit/delete for approved events via main collection Enforces cleaner workflow: Submit → Approve → Auto-move to events collection
123 lines
3.7 KiB
Markdown
123 lines
3.7 KiB
Markdown
# CLAUDE INSTRUCTIONS - RTSDA CODEBASE
|
|
|
|
## **CRITICAL ARCHITECTURE UNDERSTANDING**
|
|
|
|
### **ASTRO IS A THIN UI LAYER ONLY**
|
|
- Astro handles routing, SSR, and basic UI rendering
|
|
- **NO BUSINESS LOGIC IN FRONTEND**
|
|
- **NO DIRECT API CALLS FROM FRONTEND**
|
|
- **ALL LOGIC GOES THROUGH `church-core` RUST CRATE**
|
|
|
|
### **THE RUST CRATE IS THE CORE FOR A FUCKING REASON**
|
|
- `church-core/` contains ALL business logic
|
|
- `church-core/` handles ALL API communication
|
|
- `church-core/` provides unified data models
|
|
- `church-core/` has caching, error handling, auth
|
|
- **USE THE RUST CRATE, DON'T BYPASS IT**
|
|
|
|
## ✅ **FIXED VIOLATIONS**
|
|
|
|
### **Admin Panel (COMPLETED ✅)**
|
|
- ~~`public/admin/scripts/main.js` - 1800+ lines of vanilla JS~~ **REMOVED**
|
|
- ✅ **NOW:** Proper Astro routes using Rust functions via FFI bindings
|
|
- ✅ **FIXED:** Frontend now follows core architecture
|
|
|
|
## **REMAINING VIOLATIONS TO FIX**
|
|
|
|
### **Event Submission Direct API Call**
|
|
- `src/pages/events/submit.astro:748` - Still uses direct fetch() call
|
|
- **SHOULD BE:** Use `submitEventJson()` from bindings.js
|
|
- **VIOLATION:** Bypassing the unified client architecture
|
|
|
|
### **Data Model Mismatches**
|
|
- Frontend expects detailed Schedule fields (`song_leader`, `childrens_story`)
|
|
- Backend Rust models missing these fields
|
|
- **CAUSE:** Frontend developed independently of core models
|
|
|
|
|
|
## **CORRECT ARCHITECTURE FLOW**
|
|
|
|
```
|
|
Frontend (Astro) → bindings.js → Rust FFI → church-core → API
|
|
```
|
|
|
|
**NOT:**
|
|
```
|
|
Frontend → fetch() → API directly
|
|
```
|
|
|
|
## **HOW TO FIX VIOLATIONS**
|
|
|
|
### **For Event Submission:**
|
|
1. ✅ Admin functions already exist in `church-core/src/client/admin.rs`
|
|
2. ✅ Already exposed via FFI in `church-core/src/api.rs`
|
|
3. ✅ Already imported in `astro-church-website/src/lib/bindings.js`
|
|
4. **TODO:** Replace `fetch()` call with `submitEventJson()` function
|
|
|
|
### **For Data Models:**
|
|
1. Update Schedule models in `church-core/src/models/admin.rs`
|
|
2. Add missing fields (`song_leader`, `childrens_story`, etc.)
|
|
3. Regenerate FFI bindings
|
|
4. Update frontend to use new model structure
|
|
|
|
## **COMMANDS TO REMEMBER**
|
|
|
|
### **Build Commands:**
|
|
```bash
|
|
# Build Rust bindings FIRST
|
|
npm run build:native
|
|
|
|
# Then build Astro
|
|
npm run build
|
|
|
|
# Dev server
|
|
npm run dev
|
|
```
|
|
|
|
### **Testing Commands:**
|
|
```bash
|
|
# Test Rust core
|
|
cd church-core && cargo test
|
|
|
|
# Test API connectivity
|
|
cd church-core && cargo run --bin church-core-test
|
|
```
|
|
|
|
## **BEFORE MAKING CHANGES**
|
|
|
|
1. **Check if Rust function exists** in `church-core/`
|
|
2. **If missing, ADD IT TO RUST FIRST**
|
|
3. **Then expose via FFI bindings**
|
|
4. **Finally update frontend to use it**
|
|
|
|
## **DO NOT:**
|
|
- Add business logic to JavaScript
|
|
- Make direct API calls from frontend
|
|
- Create data models in frontend
|
|
- Bypass the Rust crate architecture
|
|
|
|
## **THE RUST CRATE EXISTS FOR:**
|
|
- Cross-platform consistency (iOS, Android, Web)
|
|
- Type safety and error handling
|
|
- Unified caching and auth
|
|
- Single source of truth for API communication
|
|
|
|
**RESPECT THE ARCHITECTURE. USE THE RUST CRATE.**
|
|
|
|
## **CLEANUP PROGRESS TRACKING**
|
|
|
|
### ✅ **COMPLETED (Aug 29, 2025)**
|
|
- **Admin Panel Conversion**: Removed 1843-line vanilla JS file
|
|
- **Proper Astro Routes**: Created TypeScript admin routes using Rust functions
|
|
- **Thumbnail Field Removal**: Cleaned up event submission form
|
|
- **FFI Functions**: Added 12 new admin functions in church-core
|
|
- **Architecture Compliance**: Admin panel now follows correct flow
|
|
|
|
**Commit:** `f91f696` - Convert admin panel to Astro routes and remove thumbnail field
|
|
|
|
### 🚨 **HIGH PRIORITY NEXT**
|
|
1. Fix event submission direct API call (`src/pages/events/submit.astro:748`)
|
|
2. Check Schedule model data field mismatches
|
|
3. Add missing admin functions (stats, config, users)
|
|
|
|
**See:** `/NEXT-STEPS.md` for detailed implementation plan |