style: implement custom color schemes and gradients for account section, enhancing visual hierarchy
381 lines
11 KiB
Plaintext
381 lines
11 KiB
Plaintext
# IGNY8 Development Rules & Standards
|
|
|
|
**Project:** IGNY8 - AI-Powered Content Platform
|
|
**Version:** v1.0.0
|
|
**Last Updated:** December 12, 2025
|
|
|
|
---
|
|
|
|
## 📋 General Development Principles
|
|
|
|
### 1. **Always Read Documentation First**
|
|
Before making changes, consult these critical docs:
|
|
- `ARCHITECTURE-KNOWLEDGE-BASE.md` - System architecture and design patterns
|
|
- `CHANGELOG.md` - Recent changes and version history
|
|
- `IGNY8-COMPLETE-FEATURES-GUIDE.md` - Complete feature set and capabilities
|
|
- `docs/00-SYSTEM/` - Core system architecture
|
|
- `docs/10-BACKEND/` - Backend models, services, APIs
|
|
- `docs/20-API/` - API endpoint documentation
|
|
- `docs/30-FRONTEND/` - Frontend components and architecture
|
|
- `docs/40-WORKFLOWS/` - Business workflows and processes
|
|
|
|
### 2. **Maintain Consistency**
|
|
- **API Design:** Follow existing RESTful patterns in `backend/igny8_core/*/views.py`
|
|
- **Models:** Use existing base classes (`SoftDeletableModel`, `AccountBaseModel`, `SiteSectorBaseModel`)
|
|
- **Services:** Follow service pattern in `backend/igny8_core/business/*/services/`
|
|
- **AI Functions:** Use AI framework in `backend/igny8_core/ai/` (not legacy `utils/ai_processor.py`)
|
|
- **Frontend Components:** Use existing component library in `frontend/src/components/`
|
|
- **Styling:** Use TailwindCSS classes, follow existing design system in `frontend/DESIGN_SYSTEM.md`
|
|
- **State Management:** Use Zustand stores in `frontend/src/store/`
|
|
|
|
### 3. **Multi-Tenancy Rules**
|
|
- **ALWAYS scope by account:** Every query must filter by account
|
|
- **Site/Sector scoping:** Use `SiteSectorBaseModel` for site-specific data
|
|
- **Permissions:** Check permissions via `IsAuthenticatedAndActive`, `HasTenantAccess`, role-based permissions
|
|
- **No cross-tenant access:** Validate account ownership before operations
|
|
|
|
### 4. **API Endpoint Rules**
|
|
- **Use existing API structure:** All user-facing endpoints under `/api/v1/<module>/`, admin endpoints under `/api/v1/<module>/admin/`
|
|
- **No parallel API systems:** Register all endpoints in module's `urls.py`, test via Swagger at `/api/docs/` before documenting
|
|
- **Document in Swagger:** Ensure drf-spectacular auto-generates docs; verify endpoint appears at `/api/docs/` and `/api/schema/`
|
|
|
|
---
|
|
|
|
## 📝 Change Management & Versioning
|
|
|
|
alwys udpated changelog with incremental updates, as fixed aded or modified for each version update, dotn remove or modify teh exsitng version changes
|
|
### Versioning Scheme: `v<MAJOR>.<MINOR>.<PATCH>`
|
|
|
|
**Example:** v1.2.5
|
|
- `MAJOR when asked` (1.x.x): Breaking changes, major features, architecture changes
|
|
- `MAJOR` (x.2.x): New features, modules, significant enhancements
|
|
- `MINOR/PATCH` (x.x.5): Bug fixes, small improvements, refactors
|
|
|
|
### Changelog Update Rules
|
|
|
|
#### **For EVERY Change:**
|
|
1. **Update version number** in `CHANGELOG.md`
|
|
2. **Increment PATCH** (v1.0.x → v1.0.1) for:
|
|
- Bug fixes
|
|
- Small improvements
|
|
- Code refactors
|
|
- Documentation updates
|
|
- UI/UX tweaks
|
|
|
|
3. **Increment MINOR** (v1.x.0 → v1.1.0) for:
|
|
- New features
|
|
- New API endpoints
|
|
- New components
|
|
- New services
|
|
- Significant enhancements
|
|
|
|
4. **Increment MAJOR** (vx.0.0 → v2.0.0) for:
|
|
- Breaking API changes
|
|
- Database schema breaking changes
|
|
- Architecture overhauls
|
|
- Major refactors affecting multiple modules
|
|
|
|
#### **Changelog Entry Format:**
|
|
```markdown
|
|
## v1.2.5 - December 12, 2025
|
|
|
|
### Fixed
|
|
- User logout issue when switching accounts
|
|
- Payment confirmation modal amount display
|
|
|
|
### Changed
|
|
- Updated session storage from database to Redis
|
|
- Enhanced credit balance widget UI
|
|
|
|
### Added
|
|
- Plan limits enforcement system
|
|
- Monthly reset task for usage tracking
|
|
```
|
|
|
|
### **For Major Refactors:**
|
|
1. **Create detailed TODO list** before starting
|
|
2. **Document current state** in CHANGELOG
|
|
3. **Create implementation checklist** (markdown file in root or docs/)
|
|
4. **Track progress** with checklist updates
|
|
5. **Test thoroughly** before committing
|
|
6. **Update CHANGELOG** with all changes made
|
|
7. **Update version** to next MINOR or MAJOR
|
|
|
|
---
|
|
|
|
## 🏗️ Code Organization Standards
|
|
|
|
### Backend Structure
|
|
```
|
|
backend/igny8_core/
|
|
├── auth/ # Authentication, users, accounts, plans
|
|
├── business/ # Business logic services
|
|
│ ├── automation/ # Automation pipeline
|
|
│ ├── billing/ # Billing, credits, invoices
|
|
│ ├── content/ # Content generation
|
|
│ ├── integration/ # External integrations
|
|
│ ├── linking/ # Internal linking
|
|
│ ├── optimization/ # Content optimization
|
|
│ ├── planning/ # Keywords, clusters, ideas
|
|
│ └── publishing/ # WordPress publishing
|
|
├── ai/ # AI framework (NEW - use this)
|
|
├── utils/ # Utility functions
|
|
├── tasks/ # Celery tasks
|
|
└── modules/ # Legacy modules (being phased out)
|
|
```
|
|
|
|
### Frontend Structure
|
|
```
|
|
frontend/src/
|
|
├── components/ # Reusable components
|
|
├── pages/ # Page components
|
|
├── store/ # Zustand state stores
|
|
├── services/ # API service layer
|
|
├── hooks/ # Custom React hooks
|
|
├── utils/ # Utility functions
|
|
├── types/ # TypeScript types
|
|
└── marketing/ # Marketing site
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 Development Workflow
|
|
|
|
### 1. **Planning Phase**
|
|
- [ ] Read relevant documentation
|
|
- [ ] Understand existing patterns
|
|
- [ ] Create TODO list for complex changes
|
|
- [ ] Identify affected components/modules
|
|
- [ ] Plan database changes (if any)
|
|
|
|
### 2. **Implementation Phase**
|
|
- [ ] Follow existing code patterns
|
|
- [ ] Use proper base classes and mixins
|
|
- [ ] Add proper error handling
|
|
- [ ] Validate input data
|
|
- [ ] Check permissions and scope
|
|
- [ ] Write clean, documented code
|
|
- [ ] Use type hints (Python) and TypeScript types
|
|
|
|
### 3. **Testing Phase**
|
|
- [ ] Test locally with development data
|
|
- [ ] Test multi-tenancy isolation
|
|
- [ ] Test permissions and access control
|
|
- [ ] Test error cases
|
|
- [ ] Verify no breaking changes
|
|
- [ ] Check frontend-backend integration
|
|
|
|
### 4. **Documentation Phase**
|
|
- [ ] Update CHANGELOG.md
|
|
- [ ] Update version number
|
|
- [ ] Update relevant docs (if architecture/API changes)
|
|
- [ ] Add code comments for complex logic
|
|
- [ ] Update API documentation (if endpoints changed)
|
|
|
|
---
|
|
|
|
## 🎯 Specific Development Rules
|
|
|
|
### Backend Development
|
|
|
|
#### **Models:**
|
|
```python
|
|
# ALWAYS inherit from proper base classes
|
|
from igny8_core.auth.models import SiteSectorBaseModel
|
|
|
|
class MyModel(SoftDeletableModel, SiteSectorBaseModel):
|
|
# Your fields here
|
|
pass
|
|
```
|
|
|
|
#### **Services:**
|
|
```python
|
|
# Follow service pattern
|
|
class MyService:
|
|
def __init__(self):
|
|
self.credit_service = CreditService()
|
|
self.limit_service = LimitService()
|
|
|
|
def my_operation(self, account, site, **kwargs):
|
|
# 1. Validate permissions
|
|
# 2. Check limits/credits
|
|
# 3. Perform operation
|
|
# 4. Track usage
|
|
# 5. Return result
|
|
pass
|
|
```
|
|
|
|
#### **API Views:**
|
|
```python
|
|
# Use proper permission classes
|
|
class MyViewSet(viewsets.ModelViewSet):
|
|
permission_classes = [IsAuthenticatedAndActive, HasTenantAccess]
|
|
|
|
def get_queryset(self):
|
|
# ALWAYS scope by account
|
|
return MyModel.objects.filter(
|
|
site__account=self.request.user.account
|
|
)
|
|
```
|
|
|
|
#### **Migrations:**
|
|
- Run `python manage.py makemigrations` after model changes
|
|
- Test migrations: `python manage.py migrate --plan`
|
|
- Never edit existing migrations
|
|
- Use data migrations for complex data changes
|
|
|
|
### Frontend Development
|
|
|
|
#### **Components:**
|
|
```typescript
|
|
// Use existing component library
|
|
import { Card } from '@/components/ui/card';
|
|
import Button from '@/components/ui/button/Button';
|
|
|
|
// Follow naming conventions
|
|
export default function MyComponent() {
|
|
// Component logic
|
|
}
|
|
```
|
|
|
|
#### **State Management:**
|
|
```typescript
|
|
// Use Zustand stores
|
|
import { useAuthStore } from '@/store/authStore';
|
|
|
|
const { user, account } = useAuthStore();
|
|
```
|
|
|
|
#### **API Calls:**
|
|
```typescript
|
|
// Use fetchAPI from services/api.ts
|
|
import { fetchAPI } from '@/services/api';
|
|
|
|
const data = await fetchAPI('/v1/my-endpoint/');
|
|
```
|
|
|
|
#### **Styling:**
|
|
```typescript
|
|
// Use TailwindCSS classes
|
|
<div className="p-6 bg-white dark:bg-gray-800 rounded-lg shadow">
|
|
<h1 className="text-2xl font-bold text-gray-900 dark:text-white">
|
|
My Heading
|
|
</h1>
|
|
</div>
|
|
```
|
|
|
|
---
|
|
|
|
## 🚫 Common Pitfalls to Avoid
|
|
|
|
### **DON'T:**
|
|
- ❌ Skip account scoping in queries
|
|
- ❌ Use legacy AI processor (`utils/ai_processor.py`) - use `ai/` framework
|
|
- ❌ Hardcode values - use settings or constants
|
|
- ❌ Forget error handling
|
|
- ❌ Skip permission checks
|
|
- ❌ Create duplicate components - reuse existing
|
|
- ❌ Use inline styles - use TailwindCSS
|
|
- ❌ Forget to update CHANGELOG
|
|
- ❌ Use workarounds - fix the root cause
|
|
- ❌ Skip migrations after model changes
|
|
|
|
### **DO:**
|
|
- ✅ Read documentation before coding
|
|
- ✅ Follow existing patterns
|
|
- ✅ Use proper base classes
|
|
- ✅ Check permissions and limits
|
|
- ✅ Handle errors gracefully
|
|
- ✅ Return valid errors, not fallbacks
|
|
- ✅ Update CHANGELOG for every change
|
|
- ✅ Test multi-tenancy isolation
|
|
- ✅ Use TypeScript types
|
|
- ✅ Write clean, documented code
|
|
|
|
---
|
|
|
|
## 🔍 Code Review Checklist
|
|
|
|
Before committing code, verify:
|
|
- [ ] Follows existing code patterns
|
|
- [ ] Properly scoped by account/site
|
|
- [ ] Permissions checked
|
|
- [ ] Error handling implemented
|
|
- [ ] No breaking changes
|
|
- [ ] CHANGELOG.md updated
|
|
- [ ] Version number incremented
|
|
- [ ] Documentation updated (if needed)
|
|
- [ ] Tested locally
|
|
- [ ] No console errors or warnings
|
|
- [ ] TypeScript types added/updated
|
|
- [ ] Migrations created (if model changes)
|
|
|
|
---
|
|
|
|
## 📚 Key Architecture Concepts
|
|
|
|
### **Credit System:**
|
|
- All AI operations cost credits
|
|
- Check credits before operation: `CreditService.check_credits()`
|
|
- Deduct after operation: `CreditService.deduct_credits()`
|
|
- Track in `CreditUsageLog` table
|
|
|
|
### **Limit System:**
|
|
- Hard limits: Persistent (sites, users, keywords, clusters)
|
|
- Monthly limits: Reset on billing cycle (ideas, words, images)
|
|
- Track in `PlanLimitUsage` table
|
|
- Check before operation: `LimitService.check_limit()`
|
|
|
|
### **AI Framework:**
|
|
- Use `ai/engine.py` for AI operations
|
|
- Use `ai/functions/` for specific AI tasks
|
|
- Use `ai/models.py` for tracking
|
|
- Don't use legacy `utils/ai_processor.py`
|
|
|
|
### **Multi-Tenancy:**
|
|
- Every request has `request.user.account`
|
|
- All models scope by account directly or via site
|
|
- Use `AccountBaseModel` or `SiteSectorBaseModel`
|
|
- Validate ownership before mutations
|
|
|
|
---
|
|
|
|
## 🎨 Design System
|
|
|
|
### **Colors:**
|
|
- Primary: Blue (#0693e3)
|
|
- Success: Green (#0bbf87)
|
|
- Error: Red (#ef4444)
|
|
- Warning: Yellow (#f59e0b)
|
|
- Info: Blue (#3b82f6)
|
|
|
|
### **Typography:**
|
|
- Headings: font-bold
|
|
- Body: font-normal
|
|
- Small text: text-sm
|
|
- Large text: text-lg, text-xl, text-2xl
|
|
|
|
### **Spacing:**
|
|
- Padding: p-4, p-6 (standard)
|
|
- Margin: mt-4, mb-6 (standard)
|
|
- Gap: gap-4, gap-6 (standard)
|
|
|
|
### **Components:**
|
|
- Card: `<Card>` with padding and shadow
|
|
- Button: `<Button>` with variants (primary, secondary, danger)
|
|
- Input: `<Input>` with proper validation
|
|
- Badge: `<Badge>` with color variants
|
|
|
|
---
|
|
|
|
## 📞 Support & Questions
|
|
|
|
- Architecture questions → Check `ARCHITECTURE-KNOWLEDGE-BASE.md`
|
|
- Feature questions → Check `IGNY8-COMPLETE-FEATURES-GUIDE.md`
|
|
- API questions → Check `docs/20-API/`
|
|
- Recent changes → Check `CHANGELOG.md`
|
|
|
|
---
|
|
|
|
**Remember:** Quality over speed. Take time to understand existing patterns before implementing new features.
|