# RG Fish Farming System Requirements

## Content Rules

- Labels only
- No explanatory paragraphs
- No title descriptions
- Short field labels
- Short status labels
- Short action labels
- Clear empty states
- Clear validation labels

## Architecture

- Django server-rendered views
- Django templates
- Django forms
- Django sessions
- Django SMTP email
- No REST API
- No GraphQL API
- No Django REST Framework
- No JSON authentication
- No external authentication API

## Admin Layout

- Fixed left sidebar
- Fixed top header
- Scrollable main content only
- Full-height dashboard
- Responsive desktop layout
- Collapsible tablet sidebar
- Drawer mobile sidebar
- Persistent active menu
- Compact navigation groups
- Sticky action bar
- Breadcrumb labels
- Page action buttons

## Left Sidebar

- Dashboard
- Users
- Roles
- Customers
- Partners
- Services
- Orders
- Service requests
- Training requests
- Contact enquiries
- News
- Projects
- Gallery
- Partners logos
- FAQs
- Production journey
- Documents
- Notifications
- Activity logs
- Visitor analytics
- Settings
- Support settings
- Email settings
- Security settings

## Sidebar Behaviour

- Fixed position
- No page scroll
- Viewport height
- Compact logo
- Active item highlight
- Expandable menu groups
- Collapsed icon mode
- Mobile overlay
- Keyboard navigation
- Role-based menu visibility

## Top Header

- Fixed position
- No page scroll
- Page title
- Breadcrumb
- Search
- Quick create
- Notifications
- Unread counter
- Profile avatar
- Profile name
- Active role
- Profile dropdown

## Profile Dropdown

- My profile
- Account settings
- Change password
- Security
- Login activity
- Notifications
- Switch role
- Help
- Sign out

## Dashboard Labels

- New users
- New orders
- New requests
- New enquiries
- Pending approvals
- Active services
- Published news
- Active projects
- Page visitors
- Service visitors
- WhatsApp clicks
- Conversion rate
- Failed emails
- Recent activity

## Modern Forms

- Clear labels
- Required indicators
- Input placeholders
- Inline validation
- Error summary
- Success state
- Disabled state
- Loading state
- Password visibility
- Password strength
- Searchable select
- Multi-select
- Date picker
- Time picker
- Telephone field
- Currency field
- Quantity field
- File upload
- Drag-and-drop upload
- Image preview
- Upload progress
- Character counter
- Draft save
- Unsaved-change warning
- Reset action
- Cancel action
- Submit action
- Delete confirmation
- Keyboard support
- Mobile layout

## Registration Fields

- Full name
- Email address
- Telephone
- Account type
- Password
- Confirm password
- Terms acceptance
- Privacy acceptance
- Register

## Registration Flow

- Registration form
- Unique email check
- Strong password check
- Inactive account creation
- Six-digit verification code
- Verification email
- Code entry page
- Code expiry
- Resend code
- Resend cooldown
- Attempt limit
- Successful verification
- Account activation
- Welcome email
- Sign-in redirect

## Email Verification

- Django SMTP
- Admin sender email
- Six-digit code
- Hashed code storage
- Ten-minute expiry
- One-time use
- Maximum five attempts
- Sixty-second resend delay
- Previous code invalidation
- Verified timestamp
- Delivery status
- Retry status
- Failed delivery status

## User Roles

- Super administrator
- Administrator
- Content manager
- News editor
- Project manager
- Gallery manager
- Sales manager
- Order manager
- Training manager
- Support agent
- Partner manager
- Document manager
- Analytics viewer
- Auditor
- Partner
- Customer

## Role Permissions

- View
- Create
- Edit
- Publish
- Unpublish
- Approve
- Reject
- Assign
- Export
- Archive
- Delete
- Manage users
- Manage roles
- Manage settings
- View activity logs
- View analytics

## Permission Rules

- Role-based access control
- Least privilege
- Object-level permissions
- Module-level permissions
- Action-level permissions
- Read-only auditor access
- Owner-only customer records
- Partner-only documents
- Super-admin protected settings
- Permission-denied page

## Account Security

- Django password validators
- Minimum password length
- Password complexity
- Common-password blocking
- Email uniqueness
- Email verification
- Session authentication
- CSRF protection
- Secure cookies
- HTTP-only cookies
- SameSite cookies
- HTTPS-only production cookies
- Session expiry
- Session rotation
- Login rate limiting
- Registration rate limiting
- Verification rate limiting
- Password-reset rate limiting
- Failed-login counter
- Temporary account lockout
- Generic login errors
- Generic registration errors
- User-enumeration protection
- Logout from all devices
- Active-session list
- Password-change notification
- New-login notification
- Account-deactivation notification

## Password Reset

- Forgot password
- Email lookup
- Reset code
- Code expiry
- Attempt limit
- New password
- Confirm password
- Session invalidation
- Reset confirmation email

## User Management

- User list
- User search
- Role filter
- Status filter
- Verified filter
- Active filter
- User details
- Account activation
- Account deactivation
- Role assignment
- Password reset action
- Session termination
- User activity
- User orders
- User requests
- User enquiries

## Customer Account

- Profile
- Orders
- Service requests
- Training requests
- Messages
- Documents
- Notifications
- Security
- Sign out

## Service Requests

- Service selection
- Request number
- Customer
- Telephone
- Location
- Preferred date
- Quantity
- Details
- Attachment
- Status
- Assigned staff
- Admin notes
- Customer updates
- Activity timeline

## Request Statuses

- New
- Under review
- Contacted
- Quotation sent
- Confirmed
- In progress
- Completed
- Rejected
- Cancelled

## Email Notifications

- Admin recipient list
- New account alert
- New order alert
- New request alert
- New training alert
- New enquiry alert
- Verification email
- Welcome email
- Status update email
- Password reset email
- Failed email alert
- Delivery log
- Retry action

## WhatsApp Support

- Floating button
- Admin-managed number
- Country code
- Support label
- Default message
- Current page value
- Selected service value
- Active status
- Page visibility
- Operating hours
- Click tracking

## Activity Logs

- Date and time
- User
- Role
- Action
- Module
- Record
- Previous value
- New value
- IP hash
- Device
- Request ID
- Result
- Search
- Filters
- Export
- Read-only records

## Visitor Analytics

- Total visitors
- Unique visitors
- Page views
- Visitors per page
- Visitors per service
- Service views
- Request starts
- Request submissions
- Conversion rate
- WhatsApp clicks
- News views
- Project views
- Referrer
- Device
- Date range
- Export

## Admin Security

- Staff-only routes
- Role checks
- Permission checks
- Re-authentication
- Sensitive-action confirmation
- Audit trail
- Immutable activity logs
- File validation
- File-size limits
- Safe filenames
- Malware scanning
- Backup schedule
- Restore testing
- Error logging
- Security alerts

## Interface Style

- Ocean brand colors
- Clean white surfaces
- Deep-blue sidebar
- Aqua active states
- Rounded cards
- Soft shadows
- Compact tables
- Clear status badges
- Consistent spacing
- Responsive grids
- Accessible contrast
- Visible focus states
- Reduced-motion support
- Empty-state labels
- Skeleton loading
- Toast feedback
