40 lines
1.2 KiB
Markdown
40 lines
1.2 KiB
Markdown
# Data Model
|
|
|
|
This document defines the data structures for the project, based on the entities identified in the feature specification.
|
|
|
|
## User
|
|
Represents an authenticated user of the admin panel.
|
|
|
|
- **email**: `string` (required, unique)
|
|
- **password**: `string` (required, hashed)
|
|
- **role**: `enum` (required, values: `admin`, `editor`)
|
|
|
|
## Blog Post
|
|
Represents a single article.
|
|
|
|
- **title**: `string` (required)
|
|
- **slug**: `string` (required, unique)
|
|
- **content**: `richText` (required)
|
|
- **author**: `relationship` to `User` (required)
|
|
- **category**: `relationship` to `Category` (required)
|
|
- **publication_date**: `date` (required)
|
|
- **meta_title**: `string` (required)
|
|
- **meta_description**: `string` (required)
|
|
|
|
## Portfolio Item
|
|
Represents a single project.
|
|
|
|
- **title**: `string` (required)
|
|
- **slug**: `string` (required, unique)
|
|
- **description**: `richText` (required)
|
|
- **project_images**: `array` of `media` (required)
|
|
- **completion_date**: `date` (required)
|
|
- **meta_title**: `string` (required)
|
|
- **meta_description**: `string` (required)
|
|
|
|
## Category
|
|
Represents a blog post category.
|
|
|
|
- **name**: `string` (required)
|
|
- **slug**: `string` (required, unique)
|