Getting Started
Prerequisites
- Java 17+
- PostgreSQL 15+
- Redis 7+
- MinIO or S3-compatible storage
- Firebase project or Keycloak server (for authentication)
Configuration
The service is configured via application.yml. Key configurations:
Database
spring:
datasource:
url: jdbc:postgresql://localhost:5432/wiki_db
username: your_username
password: your_password
Redis
spring:
data:
redis:
host: localhost
port: 6379
Authentication Provider
Toggle between Firebase and Keycloak:
auth:
provider: firebase # or 'keycloak'
Storage (MinIO/RustFS)
app:
storage:
rustfs:
endpoint: http://localhost:9000
access-key: your-access-key
secret-key: your-secret-key
bucket: wiki-attachments
CORS
app:
cors:
allowed-origins: http://localhost:3000,http://localhost:5173
Running the Service
# Build
mvn clean package -DskipTests
# Run
java -jar target/util4dev-wiki-service.jar
The service starts on port 8080 by default. All endpoints are available under /api/v1.
Making Your First Request
1. Authenticate
Obtain a JWT token from your authentication provider (Firebase or Keycloak).
2. Create a Workspace
curl -X POST /api/v1/workspaces \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "My Workspace",
"description": "A test workspace"
}'
3. Create a Document
curl -X POST /api/v1/documents \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Hello World",
"workspaceId": "WORKSPACE_ID_FROM_STEP_2"
}'
Response Format
All API responses follow a consistent wrapper format:
{
"success": true,
"data": { ... },
"message": "Optional message"
}
Error responses:
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Human-readable error message",
"details": { ... }
}
}