first commit
This commit is contained in:
107
README.md
Normal file
107
README.md
Normal file
@@ -0,0 +1,107 @@
|
||||
# Software Station
|
||||
|
||||
A modern, high-performance software distribution platform for software built and hosted on Gitea. Built with Go (backend) and Svelte 5 (frontend).
|
||||
|
||||
## Features
|
||||
|
||||
- **Direct Gitea Integration**: Automatically fetches releases, assets, and metadata from your Gitea instance.
|
||||
- **High-Performance Proxy**: Proxies downloads with support for **Resumable Downloads (HTTP Range)** and modern transfer protocols.
|
||||
- **Security First**:
|
||||
- Built-in bot protection and pattern-based request blocking.
|
||||
- SSRF protection for proxy requests.
|
||||
- Automatic SHA256 checksum verification for assets.
|
||||
- **Throttling & Rate Limiting**: Intelligent download throttling (Default: 5MB/s, Speed downloaders: 1MB/s, Heavy users: 256KB/s) and global API rate limiting.
|
||||
- **Internationalization (i18n)**: Multi-language support (English, German) with automatic browser detection.
|
||||
- **Modern UI**: Clean, responsive dashboard with Dark Mode support.
|
||||
- **RSS Updates**: Built-in RSS feed for tracking new software releases.
|
||||
|
||||
## Upcoming
|
||||
|
||||
- S3 for software assets.
|
||||
- Gitea Packages support (containers, npm, etc.).
|
||||
- ISOs support (Linux distributions)
|
||||
- Automatic Torrent generation and seeding for software assets.
|
||||
- Software dependencies page and licenses information.
|
||||
- SBOM and SPDX viewer.
|
||||
- CDN support
|
||||
- GPG signatures verification
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Go 1.21+
|
||||
- Node.js & pnpm (for frontend)
|
||||
- A Gitea instance
|
||||
|
||||
### Configuration
|
||||
|
||||
1. **Software List**: Create a `software.txt` file in the root directory. Add your Gitea repositories in `Owner/Repo` format:
|
||||
```text
|
||||
Quad4-Software/software-station
|
||||
Another-Owner/Project-B
|
||||
```
|
||||
|
||||
2. **Environment Variables**:
|
||||
- `GITEA_TOKEN`: Your Gitea personal access token (optional, required for private repos).
|
||||
- `NODE_ENV`: Set to `production` for production builds.
|
||||
|
||||
### Installation
|
||||
|
||||
1. **Build the Frontend**:
|
||||
```bash
|
||||
cd frontend
|
||||
pnpm install
|
||||
pnpm build
|
||||
cd ..
|
||||
```
|
||||
|
||||
2. **Build and Run the Backend**:
|
||||
```bash
|
||||
go build -o software-station .
|
||||
./software-station -t YOUR_TOKEN -s https://your-gitea-instance.com
|
||||
```
|
||||
|
||||
## Customization
|
||||
|
||||
### Adding Locales
|
||||
To add a new language:
|
||||
1. Create a JSON file in `frontend/src/lib/i18n/locales/` (e.g., `fr.json`).
|
||||
2. Register the locale in `frontend/src/lib/i18n/index.ts`.
|
||||
|
||||
### Changing Security Rules
|
||||
Modify `internal/security/constants.go` to adjust:
|
||||
- `ForbiddenPatterns`: Block specific URL patterns.
|
||||
- `BotUserAgents`: Block specific scrapers or bots.
|
||||
- `DefaultDownloadLimit`: Adjust the global download speed limit.
|
||||
|
||||
### UI Themes
|
||||
The frontend uses Tailwind CSS. You can customize the look and feel in `frontend/tailwind.config.js` and `frontend/src/app.css`.
|
||||
|
||||
## Development
|
||||
|
||||
Run the backend and frontend separately for a better development experience:
|
||||
|
||||
```bash
|
||||
# Backend (with live reload using Air or just go run)
|
||||
go run main.go
|
||||
|
||||
# Frontend (Vite dev server)
|
||||
cd frontend
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
We maintain a high test coverage (>60%). Run the test suite:
|
||||
|
||||
```bash
|
||||
go test -v -coverpkg=./... ./...
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
||||
|
||||
Copyright (c) 2025 [Quad4](https://quad4.io). All rights reserved.
|
||||
|
||||
Reference in New Issue
Block a user