276 lines
5.9 KiB
Markdown
276 lines
5.9 KiB
Markdown
# Administrator Guide - Placebo.mk
|
|
|
|
## Overview
|
|
Placebo.mk is a Macedonian news site with a sarcastic tone. This guide covers system administration, user management, and technical operations.
|
|
|
|
## System Architecture
|
|
- **Frontend**: TanStack (React 19, Query, Router) + Vite + Tailwind CSS
|
|
- **Backend**: NestJS + TypeORM + SQLite
|
|
- **CMS**: Strapi for content management
|
|
- **Database**: SQLite with TypeORM entities
|
|
|
|
## Environment Setup
|
|
|
|
### Backend Configuration
|
|
```bash
|
|
cd backend
|
|
cp .env.example .env
|
|
# Configure environment variables:
|
|
# DATABASE_PATH=./data/app.db
|
|
# PORT=3000
|
|
# NODE_ENV=development
|
|
npm install
|
|
npm run start:dev
|
|
```
|
|
|
|
### Frontend Configuration
|
|
```bash
|
|
cd frontend
|
|
cp .env.example .env
|
|
# Configure environment variables:
|
|
# VITE_API_URL=http://localhost:3000
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
### CMS (Strapi) Configuration
|
|
```bash
|
|
cd cms/cms
|
|
cp .env.example .env
|
|
# Configure Strapi environment variables:
|
|
# DATABASE_CLIENT=sqlite
|
|
# DATABASE_FILENAME=./data/app.db
|
|
# API_TOKEN_SALT=
|
|
# ADMIN_JWT_SECRET=
|
|
npm run develop
|
|
```
|
|
|
|
## Database Management
|
|
|
|
### Entities Overview
|
|
- **Articles**: News articles with status (draft/published/archived)
|
|
- **Authors**: Writer profiles with permissions
|
|
- **Categories**: Hierarchical content organization
|
|
- **Live Blogs**: Real-time event coverage
|
|
- **Live Blog Updates**: Individual updates within live blogs
|
|
|
|
### Database Operations
|
|
```bash
|
|
# Run migrations (if implemented)
|
|
npm run migration:run
|
|
|
|
# Check database schema
|
|
npm run schema:sync
|
|
|
|
# Backup database
|
|
cp backend/data/app.db backend/data/backup-$(date +%Y%m%d).db
|
|
```
|
|
|
|
## User Management
|
|
|
|
### Author Management
|
|
Authors are stored in the `authors` table with:
|
|
- Basic profile (name, bio, avatar)
|
|
- Unique slug for URLs
|
|
- `isActive` flag for permissions
|
|
- Relations to articles and live blogs
|
|
|
|
### CMS User Roles
|
|
1. **Super Admin**: Full system access
|
|
2. **Admin**: Content and user management
|
|
3. **Editor**: Content creation and editing
|
|
4. **Author**: Limited to assigned content
|
|
|
|
### Creating New Authors
|
|
```sql
|
|
INSERT INTO authors (id, name, slug, bio, avatar, isActive, createdAt, updatedAt)
|
|
VALUES (
|
|
uuid(),
|
|
'Author Name',
|
|
'author-slug',
|
|
'Author bio',
|
|
'avatar-url.jpg',
|
|
true,
|
|
datetime('now'),
|
|
datetime('now')
|
|
);
|
|
```
|
|
|
|
## Content Management
|
|
|
|
### Article Workflow
|
|
1. **Draft**: Initial creation phase
|
|
2. **Published**: Publicly visible
|
|
3. **Archived**: No longer public but retained
|
|
|
|
### Live Blog Management
|
|
Live blogs support real-time updates:
|
|
- **Draft**: Preparation phase
|
|
- **Live**: Active event coverage
|
|
- **Ended**: Coverage complete
|
|
- **Archived**: Historical reference
|
|
|
|
## API Management
|
|
|
|
### Available Endpoints
|
|
```
|
|
GET /api/v1/articles # List articles
|
|
GET /api/v1/articles/:id # Get single article
|
|
GET /api/v1/articles/slug/:slug # Get article by slug
|
|
POST /api/v1/articles # Create article
|
|
PUT /api/v1/articles/:id # Update article
|
|
DELETE /api/v1/articles/:id # Delete article
|
|
|
|
GET /api/v1/live-blogs # List live blogs
|
|
GET /api/v1/live-blogs/:id # Get live blog
|
|
POST /api/v1/live-blogs # Create live blog
|
|
PUT /api/v1/live-blogs/:id # Update live blog
|
|
|
|
GET /api/v1/authors # List authors
|
|
GET /api/v1/categories # List categories
|
|
```
|
|
|
|
### API Authentication
|
|
Configure JWT tokens for secure API access:
|
|
```typescript
|
|
// In .env
|
|
JWT_SECRET=your-secret-key
|
|
JWT_EXPIRES_IN=24h
|
|
```
|
|
|
|
## CMS Administration
|
|
|
|
### Strapi Admin Panel
|
|
Access at: `http://localhost:1337/admin`
|
|
|
|
### Content Types Configuration
|
|
Articles support:
|
|
- Rich text content
|
|
- Multiple media files (images, files, videos, audio)
|
|
- Featured images
|
|
- Author attribution
|
|
|
|
### Media Management
|
|
- Upload limits configured in Strapi settings
|
|
- Image optimization handled automatically
|
|
- File organization in `/uploads` directory
|
|
|
|
## Performance Monitoring
|
|
|
|
### Backend Monitoring
|
|
```bash
|
|
# Check application logs
|
|
npm run start:prod
|
|
|
|
# Monitor performance
|
|
npm run start:prod -- --inspect
|
|
```
|
|
|
|
### Frontend Performance
|
|
```bash
|
|
# Build for production
|
|
cd frontend
|
|
npm run build
|
|
|
|
# Analyze bundle size
|
|
npm run build:analyze
|
|
```
|
|
|
|
## Security Considerations
|
|
|
|
### Authentication
|
|
- Implement proper JWT handling
|
|
- Use secure password hashing
|
|
- Set appropriate CORS policies
|
|
|
|
### Data Protection
|
|
- Regular database backups
|
|
- Environment variable protection
|
|
- Input validation and sanitization
|
|
|
|
### CMS Security
|
|
- Regular Strapi updates
|
|
- Role-based access control
|
|
- Media file scanning
|
|
|
|
## Backup and Recovery
|
|
|
|
### Automated Backups
|
|
```bash
|
|
# Create backup script
|
|
#!/bin/bash
|
|
DATE=$(date +%Y%m%d_%H%M%S)
|
|
mkdir -p backups
|
|
cp backend/data/app.db backups/app_$DATE.db
|
|
tar -czf backups/uploads_$DATE.tar.gz cms/cms/public/uploads/
|
|
```
|
|
|
|
### Recovery Process
|
|
1. Stop all services
|
|
2. Restore database from backup
|
|
3. Restore media files
|
|
4. Restart services
|
|
5. Verify functionality
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
#### Database Connection Errors
|
|
```bash
|
|
# Check database file exists
|
|
ls -la backend/data/app.db
|
|
|
|
# Verify permissions
|
|
chmod 664 backend/data/app.db
|
|
```
|
|
|
|
#### Strapi Admin Access
|
|
```bash
|
|
# Reset admin password
|
|
npm run strapi admin:reset-password
|
|
```
|
|
|
|
#### Frontend Build Issues
|
|
```bash
|
|
# Clear cache
|
|
rm -rf node_modules package-lock.json
|
|
npm install
|
|
|
|
# Check environment variables
|
|
cat .env
|
|
```
|
|
|
|
## Maintenance Tasks
|
|
|
|
### Daily
|
|
- Monitor system logs
|
|
- Check backup completion
|
|
- Review performance metrics
|
|
|
|
### Weekly
|
|
- Update dependencies
|
|
- Review content moderation queue
|
|
- Security scan
|
|
|
|
### Monthly
|
|
- Database maintenance
|
|
- Archive old content
|
|
- Performance optimization review
|
|
|
|
## Scaling Considerations
|
|
|
|
### Database Scaling
|
|
- Consider PostgreSQL for high traffic
|
|
- Implement read replicas
|
|
- Optimize queries and indexes
|
|
|
|
### CDN Integration
|
|
- Configure CDN for static assets
|
|
- Optimize image delivery
|
|
- Implement caching strategies
|
|
|
|
### Monitoring Setup
|
|
- Application performance monitoring
|
|
- Error tracking and alerting
|
|
- User analytics and reporting |