john-okeefe 6c33ee4364 feat: add Bruno API testing files for multiple folder functionality
- Add auth/Add Ebook Folder.bru - test adding folders to user account
- Add auth/Get Ebook Folders.bru - test listing user's folders
- Add auth/Delete Ebook Folder.bru - test removing folders
- Add scanner/Scan Ebooks.bru - test manual scanning of multiple folders
- Add scanner/Start Scanner.bru - test starting folder monitoring
- Add scanner/Stop Scanner.bru - test stopping folder monitoring
- Update all scanner endpoints to use folder_paths array format
2026-01-23 09:03:15 -05:00
2026-01-14 19:44:35 -05:00

📚 Bookmann

A self-hosted ebook management system built with Go, PostgreSQL, HTMX, and Tailwind CSS (fully integrated into a single service) featuring multiple beautiful dark themes with Tokyo Night as default.

Features

  • 🔒 Multi-User Authentication: Complete user system with registration/login, JWT-based sessions, and bcrypt password hashing
  • Server-Side Validation: Comprehensive input validation with detailed error messages
  • 🌙 Multiple Themes: 11 beautiful themes including Tokyo Night, Dracula, Nord, Solarized Dark, Monokai, One Dark Pro, Material Dark, and Catppuccin variants (Mocha, Macchiato, Frappé, Latte) with user preferences saved to database
  • 🎨 Theme Persistence: User theme choices sync between browser and server
  • 📖 Reading Progress: User-specific reading progress tracking
  • 🔧 RESTful API: Clean API endpoints with JWT authentication
  • 🐳 Docker Ready: Single-container deployment with PostgreSQL
  • 🧪 API Testing: Complete Bruno collection for testing all endpoints
  • 📱 Responsive Design: Mobile-first responsive interface using Tailwind CSS
  • HTMX Integration: Dynamic interactions without JavaScript frameworks
  • 🎯 TypeScript Support: Client-side scripting with TypeScript compilation

Quick Start

Prerequisites

  • Docker and Docker Compose

Running the Application

  1. Clone the repository
  2. Run the application:
docker-compose up --build
  1. Access the application at http://localhost:8765

Database

PostgreSQL runs on port 5432 with default credentials:

  • Database: ebookdb
  • User: postgres
  • Password: password

Development

Backend

cd backend
go mod tidy
go run github.com/sqlc-dev/sqlc/cmd/sqlc@latest generate
go run cmd/server/main.go

The application uses Go HTML templates for server-side rendering with HTMX for dynamic interactions. Templates are located in backend/templates/.

Enhanced Features:

  • Authentication: Login/Register forms with multiple theme support at /login and /register
  • JWT Management: Secure token storage with localStorage and session persistence
  • Theme Switching: 7 popular dark themes with dropdown selector and database persistence
  • HTMX Integration: Form submissions and dynamic updates without page reloads
  • Input Validation: Server-side validation with detailed error messages
  • Multiple Themes: Beautiful dark themes with smooth transitions
  • Responsive Design: Mobile-first approach with optimized layouts for all screen sizes

Note: The frontend is fully integrated into the Go backend using HTML templates and HTMX.

API Endpoints

Auth (Public)

  • POST /api/auth/register - Register new user
  • POST /api/auth/login - Login user (email or username)
  • GET /api/auth/profile - Get user profile (requires JWT)
  • PUT /api/auth/theme - Update user theme preference (requires JWT)

Ebooks (Protected)

  • GET /api/ebooks - List ebooks
  • GET /api/ebooks/:id - Get specific ebook
  • POST /api/ebooks - Create new ebook
  • PUT /api/ebooks/:id - Update ebook
  • DELETE /api/ebooks/:id - Delete ebook

Reading Progress (Protected)

  • GET /api/ebooks/:id/progress - Get reading progress
  • PUT /api/ebooks/:id/progress - Update reading progress

Ratings (Protected)

  • GET /api/ebooks/:id/rating - Get user's rating for ebook
  • POST /api/ebooks/:id/rating - Create or update ebook rating
  • PUT /api/ebooks/:id/rating - Create or update ebook rating
  • DELETE /api/ebooks/:id/rating - Delete user's rating
  • GET /api/ebooks/:id/ratings - Get all ratings for ebook

API Testing

Use the included Bruno collection in the bruno/ directory for testing the API:

  1. Install Bruno
  2. Import the bruno/ folder as a collection
  3. Select the "localhost" environment
  4. Run the application and test the endpoints

Project Structure

.
├── backend/
│   ├── cmd/server/          # Application entry point
│   ├── internal/
│   │   ├── config/          # Configuration management
│   │   ├── database/        # Database connection and queries
│   │   └── handlers/        # HTTP handlers (auth + ebooks)
│   ├── migrations/          # Database migrations
│   ├── templates/           # Go HTML templates with HTMX
│   └── sqlc.yaml            # sqlc configuration
├── bruno/                   # Bruno API testing collection
├── docker-compose.yml
└── README.md

🎨 Recent Enhancements

Backend Improvements

  • Server-Side Rendering: Replaced static frontend with Go HTML templates
  • Theme System: Database-backed user theme preferences with 7 popular dark themes
  • HTMX Integration: Dynamic interactions using HTMX for modern UX
  • Enhanced Security: JWT authentication with theme persistence

Frontend Redesign

  • Beautiful Homepage: Hero section with features showcase and modern design
  • Multiple Themes: 11 beautiful themes including Tokyo Night, Dracula, Nord, Solarized Dark, Monokai, One Dark Pro, Material Dark, and Catppuccin variants (Mocha, Macchiato, Frappé, Latte) with CSS variables
  • HTMX Forms: Real-time form submissions and updates without JavaScript frameworks
  • Theme Switcher: Dropdown selector that saves preferences to database
  • Responsive Design: Tailwind CSS for mobile-first responsive layouts
  • Smooth Animations: CSS transitions and scroll effects

Technical Updates

  • Go Templates: Server-side rendering with template inheritance
  • Tailwind CSS: Utility-first CSS framework via CDN
  • TypeScript Support: Client-side scripting with TypeScript compilation
  • Database Schema: Added theme column to users table
  • API Expansion: New theme update endpoint

License

GPL-3.0

S
Description
A modern self-hosted media library system built with Go, PostgreSQL, HTMX, and Tailwind CSS featuring universal cross-device sync, beautiful dark themes, and comprehensive media management.
Readme AGPL-3.0
27 MiB
v1.0.1
Latest
2026-08-22 13:59:19 -04:00
Languages
Go 69.4%
TypeScript 12.7%
templ 12%
PLpgSQL 2.7%
CSS 1.5%
Other 1.6%