Intial Setup

This commit is contained in:
Stefan Hardegger
2025-07-21 08:47:52 +02:00
commit 68c7c8115f
20 changed files with 1276 additions and 0 deletions

91
CLAUDE.md Normal file
View File

@@ -0,0 +1,91 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
StoryCove is a self-hosted web application for storing, organizing, and reading short stories from internet sources. The project is currently in the specification phase with a comprehensive requirements document.
## Architecture
This is a multi-tier application with the following planned stack:
- **Frontend**: Next.js
- **Backend**: Spring Boot (Java)
- **Database**: PostgreSQL
- **Search**: Typesense
- **Reverse Proxy**: Nginx
- **Deployment**: Docker & Docker Compose
## Development Commands
### Frontend (Next.js)
- `cd frontend && npm run dev` - Start development server
- `cd frontend && npm run build` - Build for production
- `cd frontend && npm run lint` - Run ESLint
- `cd frontend && npm run type-check` - Run TypeScript compiler
### Backend (Spring Boot)
- `cd backend && ./mvnw spring-boot:run` - Start development server
- `cd backend && ./mvnw test` - Run tests
- `cd backend && ./mvnw clean package` - Build JAR
### Docker
- `docker-compose up -d` - Start all services
- `docker-compose down` - Stop all services
- `docker-compose build` - Rebuild containers
- `docker-compose logs -f [service]` - View logs
## Current Project State
The repository now has a complete project structure with Docker configuration, frontend Next.js setup, and backend Spring Boot foundation ready for development.
## Key Implementation Details from Specification
### Database Schema
- Stories with HTML content, metadata, ratings, and file attachments
- Authors with profiles, ratings, and URL collections
- Tag-based categorization system
- Series support for multi-part stories
- UUID-based primary keys throughout
### API Design
- RESTful endpoints for stories, authors, tags, and series
- JWT-based authentication with single password
- Multipart form data for file uploads (covers, avatars)
- Full-text search integration with Typesense
### Security Requirements
- HTML sanitization using allowlist (Jsoup on backend)
- Content Security Policy headers
- Input validation and parameterized queries
- Image processing with size limits and format restrictions
### Image Handling
- Cover images for stories (800x1200 max)
- Avatar images for authors (400x400)
- File storage in Docker volumes
- Support for JPG, PNG, WebP formats
## Development Tasks
Based on the specification, implementation should follow this sequence:
1. Docker environment and database setup
2. Spring Boot backend with core CRUD operations
3. Typesense search integration
4. Next.js frontend with authentication
5. Reading interface and user experience features
## Authentication Flow
- Single password authentication (no user accounts)
- JWT tokens stored in httpOnly cookies
- Protected routes via middleware
## File Structure Expectations
When implementation begins, the structure should follow:
```
frontend/ # Next.js application
backend/ # Spring Boot application
nginx.conf # Reverse proxy configuration
docker-compose.yml # Container orchestration
.env # Environment variables
```