# Sol-Cloud

## Introduction

Sol-Cloud is a cloud service platform based on microservices architecture, adopting a front-end and back-end separation design pattern, providing core functions such as system management and file management. The project uses Docker containerization technology for deployment, featuring high availability, scalability, and security.

## System Architecture

### Overall Architecture

The project is divided into two main parts: frontend (client) and backend (cloud):

- **Frontend**: Single-page application based on Vue 3
- **Backend**: Microservices cluster based on Spring Cloud
- **Deployment**: Containerized deployment based on Docker

### Microservices Architecture

- **API Gateway**: Unified entry point, request routing and filtering
- **System Service**: System management functions including users, roles, and permissions
- **File Service**: File upload, download, and management functions
- **Common Module**: Shared components including utilities, constants, and base models

## Technology Stack

### Frontend Technology Stack

- **Core Framework**: Vue 3.5.12
- **UI Component Library**: Element Plus 2.8.8
- **Build Tool**: Vite 5.4.10
- **Programming Language**: TypeScript 5.6.3
- **HTTP Client**: Axios 1.7.7
- **State Management**: Pinia 2.2.6
- **Router Management**: Vue Router 4.4.5

### Backend Technology Stack

- **Core Framework**: Spring Boot 3.3.4
- **Microservices Framework**: Spring Cloud 2023.0.3
- **Microservices Components**: Spring Cloud Alibaba 2023.0.1.0
- **ORM Framework**: MyBatis Plus 3.5.10.1
- **Authentication Framework**: Sa-Token 1.39.0
- **Service Registry & Config Center**: Nacos 2.5.0
- **Database**: PostgreSQL 17.2
- **Cache**: Redis 7.4.2
- **Object Storage**: MinIO RELEASE.2024-11-07T00-52-20Z

## Project Structure

### Frontend Structure

```
client/
├── src/
│   ├── api/          # API interface definitions
│   ├── assets/       # Static resources
│   ├── components/   # Reusable components
│   ├── composables/  # Composition API
│   ├── generated/    # Auto-generated code
│   ├── pinia/        # State management
│   ├── router/       # Route configuration
│   ├── styles/       # Style files
│   ├── util/         # Utility functions
│   └── views/        # Page view components
├── public/           # Public static resources
├── index.html        # Entry HTML
└── vite.config.ts    # Vite configuration
```

### Backend Structure

```
cloud/
├── common/                 # Common modules
│   ├── common-auth/        # Authentication and authorization
│   ├── common-base-model/  # Base data models
│   ├── common-base-web/    # Web base components
│   ├── common-constant/    # Constant definitions
│   └── common-util/        # Common utilities
├── model/                  # Data model definitions
├── plugin/                 # Plugin modules
├── web/                    # Business service modules
│   ├── web-system-8081/    # System management service
│   └── web-file-8082/      # File management service
└── gateway-9527/           # API Gateway
```

## Deployment Guide

### Environment Requirements

- Docker 20.10+
- Docker Compose 2.0+
- JDK 17+
- Node.js 20+

### Development Environment Deployment

1. Clone the repository
   ```bash
   git clone https://github.com/yourusername/sol-cloud.git
   cd sol-cloud
   ```

2. Start backend services
   ```bash
   cd docker
   docker-compose -f dev.docker-compose.yml up -d
   ```
   > web-system and web-file need to be started manually
3. Start frontend development server
   ```bash
   cd client
   npm install
   npm run dev
   ```

### Production Environment Deployment

1. Start all services
   ```bash
   docker-compose up -d
   ```

2. Access the system
   ```
   http://localhost:8080
   ```

3. Security Considerations
   > **Warning**: When deploying to production, please note the following security considerations:
   > - Do not expose internal service components (such as Nacos, Redis, PostgreSQL, MinIO, etc.) directly to the public network
   > - Ensure only the API gateway and frontend application are accessible from outside
   > - Use firewalls to restrict access to internal services
   > - Enable HTTPS encryption for all external services
   > - Regularly update passwords and keys
   > - Consider using a reverse proxy (such as Nginx) as the only entry point for external access

## Features

- [x] User Authentication and Authorization Management
- [x] Role and Permission Management
- [x] File Upload and Management
- [x] System Configuration Management
- [ ] Log Audit

## Development Guide

### Adding New Microservices

1. Create a new service module in the cloud directory
2. Add new service configuration in docker-compose.yml
3. Add new service routes in gateway configuration

### Frontend Development

1. Add new API interfaces in src/api
2. Create new page components in src/views
3. Configure new routes in src/router

## Contributing

1. Fork this repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## License

This project is licensed under the [LICENSE](LICENSE) License. 