# SkyCode
A browser-based code editor with integrated terminal, built on Skykit.
## Features
- **Monaco Editor** - The same editor that powers VS Code
- **Integrated Terminal** - Run commands directly in your browser
- **Cloud Storage** - Files saved automatically to your account
- **Multi-language Support** - Syntax highlighting for Go, Python, JavaScript, TypeScript, and more
## Running Locally
### Prerequisites
- Go 1.24+
- Skykit (via local replace directive)
### Development
```bash
go run .
```
Visit http://localhost:5000
### Docker
```bash
docker build -t skycode .
docker run -p 5000:5000 skycode
```
## Usage
1. Sign in with your Skyscape account
2. Create files using the "+" button in the sidebar
3. Edit code in the Monaco editor
4. Use the integrated terminal to run commands
5. Files are saved automatically to your account
### Keyboard Shortcuts
| Shortcut | Action |
|----------|--------|
| `Ctrl+S` | Save file |
| `Ctrl+\`` | Toggle terminal |
## API
| Endpoint | Method | Description |
|----------|--------|-------------|
| `/api/files` | GET | List all files |
| `/api/files/open?path=...` | GET | Get file content |
| `/api/files/save` | POST | Save file |
| `/api/files/rename` | POST | Rename file |
| `/api/files` | DELETE | Delete file |
| `/api/exec` | POST | Execute command (SSE) |
## Architecture
- **Frontend**: Monaco Editor + xterm.js + DaisyUI
- **Backend**: Skykit (Go)
- **Database**: LibSQL (via Skykit)
- **Auth**: Skyscape OAuth
Files are stored in the database. When terminal commands are executed, files are materialized to a temporary workspace directory.
## Environment Variables
| Variable | Description |
|----------|-------------|
| `PORT` | Server port (default: 5000) |
| `APP_ID` | OAuth client ID |
| `OAUTH_CLIENT_SECRET` | OAuth client secret |
| `DB_NAME` | Database name (for replica mode) |
| `DB_URL` | LibSQL primary URL |
| `DB_TOKEN` | Database JWT token |
## License
Part of The Skyscape platform.