diff --git a/README.md b/README.md index 530f2b3..6cf58f2 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,20 @@ # ๐Ÿ“š Bookmann -A self-hosted ebook management system built with Go, PostgreSQL, and Svelte (integrated into a single service) featuring a beautiful Tokyo Night dark theme. +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 -- **๐Ÿ”” Toast Notifications**: Real-time error feedback with beautiful toast popups -- **๐ŸŒ™ Tokyo Night Theme**: Stunning dark theme with smooth animations and modern UI +- **๐ŸŒ™ Multiple Themes**: 7 popular dark themes (Tokyo Night, Dracula, Nord, Solarized Dark, Monokai, One Dark Pro, Material Dark) 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 +- **๐Ÿ“ฑ 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 @@ -49,26 +51,18 @@ go run github.com/sqlc-dev/sqlc/cmd/sqlc@latest generate go run cmd/server/main.go ``` -### Frontend - -For development, run the frontend separately: - -```bash -cd frontend -npm install -npm run dev -``` +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 Tokyo Night styling at `/login` and `/register` +- **Authentication**: Login/Register forms with multiple theme support at `/login` and `/register` - **JWT Management**: Secure token storage with localStorage and session persistence -- **Protected Routes**: Automatic redirects with reactive auth state management -- **Toast Notifications**: Real-time error feedback for all API operations -- **Input Validation**: Client-side and server-side validation with detailed error messages -- **Tokyo Night Theme**: Beautiful dark theme with smooth animations and modern UI components +- **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**: For production, the frontend is built to static files and served by the Go backend. +**Note**: The frontend is fully integrated into the Go backend using HTML templates and HTMX. ## API Endpoints @@ -76,6 +70,7 @@ npm run dev - `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 @@ -108,19 +103,8 @@ Use the included Bruno collection in the `bruno/` directory for testing the API: โ”‚ โ”‚ โ”œโ”€โ”€ database/ # Database connection and queries โ”‚ โ”‚ โ””โ”€โ”€ handlers/ # HTTP handlers (auth + ebooks) โ”‚ โ”œโ”€โ”€ migrations/ # Database migrations +โ”‚ โ”œโ”€โ”€ templates/ # Go HTML templates with HTMX โ”‚ โ””โ”€โ”€ sqlc.yaml # sqlc configuration -โ”œโ”€โ”€ frontend/ -โ”‚ โ”œโ”€โ”€ src/ -โ”‚ โ”‚ โ”œโ”€โ”€ lib/ -โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ api.ts # API client with auth & toast notifications -โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ auth.ts # Auth state management -โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ toast.ts # Toast notification utilities -โ”‚ โ”‚ โ””โ”€โ”€ routes/ -โ”‚ โ”‚ โ”œโ”€โ”€ login/ # Login page (Tokyo Night theme) -โ”‚ โ”‚ โ”œโ”€โ”€ register/ # Registration page (Tokyo Night theme) -โ”‚ โ”‚ โ””โ”€โ”€ ... # Other routes (Tokyo Night theme) -โ”‚ โ”œโ”€โ”€ app.css # Global styles with Tokyo Night theme -โ”‚ โ””โ”€โ”€ package.json # Build dependencies with toast library โ”œโ”€โ”€ bruno/ # Bruno API testing collection โ”œโ”€โ”€ docker-compose.yml โ””โ”€โ”€ README.md @@ -129,21 +113,23 @@ Use the included Bruno collection in the `bruno/` directory for testing the API: ## ๐ŸŽจ Recent Enhancements ### Backend Improvements -- **Server-Side Validation**: Added comprehensive input validation using `go-playground/validator/v10` -- **Enhanced Security**: All API endpoints now validate requests before processing -- **Better Error Handling**: Detailed validation error messages for improved debugging +- **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 -- **Tokyo Night Theme**: Complete UI overhaul with beautiful dark theme colors -- **Toast Notifications**: Real-time error feedback using `@zerodevx/svelte-toast` -- **Modern UI Components**: Card-based layouts, smooth animations, and responsive design -- **Enhanced UX**: Loading states, form validation, and improved user feedback +- **Multiple Themes**: 7 beautiful dark themes (Tokyo Night default) 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 ### Technical Updates -- **Dependencies**: Added validation and toast libraries -- **Typography**: Inter font family for improved readability -- **Animations**: Custom fade-in and slide-in animations -- **Performance**: Optimized CSS compilation and build process +- **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