Add .gitignore and README
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/.direnv/
|
||||||
74
README.md
Normal file
74
README.md
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
# Sheetless Server
|
||||||
|
|
||||||
|
A Go-based server for hosting and managing PDF music sheets with user authentication.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- User registration and JWT-based authentication
|
||||||
|
- Upload, list, and download PDF music sheets
|
||||||
|
- SQLite database for data persistence
|
||||||
|
- RESTful API with Gin framework
|
||||||
|
|
||||||
|
## API Endpoints
|
||||||
|
|
||||||
|
### Authentication
|
||||||
|
- `POST /auth/register` - Register a new user
|
||||||
|
- `POST /auth/login` - Login and get JWT token
|
||||||
|
|
||||||
|
### Music Sheets (requires authentication)
|
||||||
|
- `POST /api/sheets/upload` - Upload a PDF music sheet
|
||||||
|
- `GET /api/sheets` - List all music sheets
|
||||||
|
- `GET /api/sheets/download/:id` - Download a specific sheet
|
||||||
|
|
||||||
|
## Development Setup
|
||||||
|
|
||||||
|
1. Enter the development environment:
|
||||||
|
```bash
|
||||||
|
nix develop
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Download dependencies:
|
||||||
|
```bash
|
||||||
|
go mod tidy
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Run the server:
|
||||||
|
```bash
|
||||||
|
go run main.go
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
To build the project:
|
||||||
|
```bash
|
||||||
|
go build -o sheetless-server main.go
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage Examples
|
||||||
|
|
||||||
|
### Register a user:
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:8080/auth/register \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"username":"testuser","email":"test@example.com","password":"password123"}'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Login:
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:8080/auth/login \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"username":"testuser","password":"password123"}'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Upload a sheet (replace TOKEN with actual JWT):
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:8080/api/sheets/upload \
|
||||||
|
-H "Authorization: Bearer TOKEN" \
|
||||||
|
-F "title=My Sheet" \
|
||||||
|
-F "file=@sheet.pdf"
|
||||||
|
```
|
||||||
|
|
||||||
|
### List sheets:
|
||||||
|
```bash
|
||||||
|
curl -H "Authorization: Bearer TOKEN" http://localhost:8080/api/sheets
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user