# Services

Changemaker Lite includes several powerful services that work together to provide a complete documentation and development platform. Each service is containerized and can be accessed through its dedicated port.

## Available Services

### [Code Server](code-server.md)
**Port: 8888** | Visual Studio Code in your browser for remote development
- Full IDE experience
- Extensions support
- Git integration
- Terminal access

### [Listmonk](listmonk.md)
**Port: 9000** | Self-hosted newsletter and mailing list manager
- Email campaigns
- Subscriber management
- Analytics
- Template system

### [PostgreSQL](postgresql.md)
**Port: 5432** | Reliable database backend
- Data persistence for Listmonk
- ACID compliance
- High performance
- Backup and restore capabilities

### [MkDocs Material](mkdocs.md)
**Port: 4000** | Documentation site generator with live preview
- Material Design theme
- Live reload
- Search functionality
- Markdown support

### [Static Site Server](static-server.md)
**Port: 4001** | Nginx-powered static site hosting
- High-performance serving
- Built documentation hosting
- Caching and compression
- Security headers

### [n8n](n8n.md)
**Port: 5678** | Workflow automation tool
- Visual workflow editor
- 400+ integrations
- Custom code execution
- Webhook support

### [NocoDB](nocodb.md)
**Port: 8090** | No-code database platform
- Smart spreadsheet interface
- Form builder and API generation
- Real-time collaboration
- Multi-database support

### [Homepage](homepage.md)
**Port: 3010** | Modern dashboard for all services
- Service dashboard and monitoring
- Docker integration
- Customizable layout
- Quick search and bookmarks

## Service Architecture

```
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Homepage      │    │   Code Server   │    │     MkDocs      │
│     :3010       │    │     :8888       │    │     :4000       │
└─────────────────┘    └─────────────────┘    └─────────────────┘

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│ Static Server   │    │    Listmonk     │    │      n8n        │
│     :4001       │    │     :9000       │    │     :5678       │
└─────────────────┘    └─────────────────┘    └─────────────────┘

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│     NocoDB      │    │ PostgreSQL      │    │ PostgreSQL      │
│     :8090       │    │ (listmonk-db)   │    │ (root_db)       │
└─────────────────┘    │     :5432       │    │     :5432       │
         │              └─────────────────┘    └─────────────────┘
         └──────────────────────────────────────────────────────┘
```

## Getting Started

1. **Start all services**: `docker compose up -d`
2. **Check service status**: `docker compose ps`
3. **View logs**: `docker compose logs [service-name]`
4. **Stop services**: `docker compose down`

## Service Dependencies

- **Listmonk** depends on **PostgreSQL** (listmonk-db)
- **NocoDB** depends on **PostgreSQL** (root_db)
- **Static Server** serves content built by **MkDocs**
- **n8n** can integrate with all other services
- All services share the `changemaker` network

## Environment Configuration

Services are configured through environment variables in your `.env` file:

```env
# Port configurations
CODE_SERVER_PORT=8888
LISTMONK_PORT=9000
LISTMONK_DB_PORT=5432
MKDOCS_PORT=4000
MKDOCS_SITE_SERVER_PORT=4001
N8N_PORT=5678

# User and group IDs
USER_ID=1000
GROUP_ID=1000

# Database configuration
POSTGRES_USER=listmonk
POSTGRES_PASSWORD=your_password
POSTGRES_DB=listmonk

# n8n configuration
N8N_ENCRYPTION_KEY=your_encryption_key
N8N_USER_EMAIL=admin@example.com
N8N_USER_PASSWORD=your_password
```

## Monitoring and Maintenance

### Health Checks
```bash
# Check all services
docker compose ps

# Check specific service logs
docker compose logs listmonk-app
docker compose logs code-server
```

### Updates
```bash
# Pull latest images
docker compose pull

# Restart with new images
docker compose down && docker compose up -d
```

### Backups
- **PostgreSQL**: Regular database backups
- **n8n**: Export workflows and credentials
- **Code Server**: Backup configuration and workspace
- **MkDocs**: Version control your documentation

## Troubleshooting

### Common Issues

1. **Port Conflicts**: Ensure ports are not used by other applications
2. **Permission Issues**: Check `USER_ID` and `GROUP_ID` settings
3. **Network Issues**: Verify services can communicate through the `changemaker` network
4. **Data Persistence**: Ensure volumes are properly mounted

### Getting Help

- Check individual service documentation
- Review container logs for error messages
- Verify environment variable configuration
- Test network connectivity between services
