{"id":41708881,"url":"https://github.com/madalinpopa/go-bookreview","last_synced_at":"2026-01-24T21:39:36.879Z","repository":{"id":273129420,"uuid":"908700554","full_name":"madalinpopa/go-bookreview","owner":"madalinpopa","description":"Go-BookReview: A Simple App to Track Books and Notes","archived":false,"fork":false,"pushed_at":"2025-01-25T22:49:26.000Z","size":1966,"stargazers_count":35,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-12T08:18:14.732Z","etag":null,"topics":["go","goose","gotemplate","htmx","sqlite3","tailwindcss"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/madalinpopa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-26T18:20:30.000Z","updated_at":"2025-02-09T00:29:33.000Z","dependencies_parsed_at":"2025-01-25T23:29:10.045Z","dependency_job_id":null,"html_url":"https://github.com/madalinpopa/go-bookreview","commit_stats":null,"previous_names":["madalinpopa/go-bookreview"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/madalinpopa/go-bookreview","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madalinpopa%2Fgo-bookreview","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madalinpopa%2Fgo-bookreview/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madalinpopa%2Fgo-bookreview/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madalinpopa%2Fgo-bookreview/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/madalinpopa","download_url":"https://codeload.github.com/madalinpopa/go-bookreview/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madalinpopa%2Fgo-bookreview/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28737543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T21:19:41.845Z","status":"ssl_error","status_checked_at":"2026-01-24T21:13:38.675Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","goose","gotemplate","htmx","sqlite3","tailwindcss"],"created_at":"2026-01-24T21:39:36.189Z","updated_at":"2026-01-24T21:39:36.863Z","avatar_url":"https://github.com/madalinpopa.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Personal BookReview\n![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/madalinpopa/go-bookreview) ![GitHub License](https://img.shields.io/github/license/madalinpopa/go-bookreview)\n\n\nA web application built with Go that helps you manage your personal book collection, track reading progress, write reviews, and take notes. Perfect for book enthusiasts who want to maintain a digital library of their reading journey.\n\nA demo can be seen here: [demo](https://books.coderustle.dev)\n\n## Screenshots\n\n### Home Page\n![Home Page](ui/assets/demo/home.png)\n\n## Features\n\n- **User Authentication**\n    - Secure registration and login\n    - Session management\n    - CSRF protection\n    - Password encryption\n\n- **Book Management**\n    - Add books with cover images\n    - Track reading status (want to read, reading, finished)\n    - Search functionality\n    - List books with pagination\n\n- **Reviews \u0026 Notes**\n    - Write and edit book reviews\n    - Star ratings system\n    - Page-specific notes\n    - Chronological tracking\n\n- **Rich UI Experience**\n    - Responsive design\n    - Real-time updates with HTMX\n    - Modern interface with Tailwind CSS\n    - Interactive components\n\n## Dependencies\n\n### Backend Dependencies\n- `go-sqlite3` v1.14.24 - SQLite database driver\n- `scs/v2` v2.8.0 - Session management\n- `nosurf` v1.1.1 - CSRF protection\n- `goose/v3` v3.24.1 - Database migrations\n- `form/v4` v4.2.1 - Form handling\n- `golang.org/x/crypto` - Password hashing\n\n### Frontend Dependencies\n- Tailwind CSS v3.4.17\n- HTMX for dynamic interactions\n- Iconify for icons\n- SweetAlert2 for notifications\n\n### Development Tools\n- **Air**: Live reload for Go applications during development\n- **Browser-sync**: Browser synchronization and auto-reload\n- **Just**: Command runner for development tasks\n- **Goose**: Database migration tool\n\n## Tech Stack\n\n### Backend\n- **Go** - Main programming language\n- **SQLite** - Database\n- **Goose** - Database migrations\n\n### Frontend\n- **Tailwind CSS** - Styling\n- **HTMX** - Dynamic interactions\n\n## Getting Started\n\n### Prerequisites\n\nBefore you begin, ensure you have the following installed:\n- Go 1.23 or later\n- SQLite\n- Docker (optional, for containerized deployment)\n- Git\n\n### Running with Docker\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/madalinpopa/go-bookreview.git\ncd go-bookreview\n```\n2. Build Docker image:\n```bash\ndocker build . -t coderustle/bookreview:latest --platform linux/amd64\n```\n3. Run Docker container:\n```bash\ndocker run -d --rm --name bookreview \\\n           -v bookreview_data:/app/data \\\n           -v bookreview_uploads:/app/uploads \\\n           -p 4000:4000 \\\n           coderustle/bookreview:latest\n```\n\nThe application will be available at `http://localhost:4000`\n\n### Development Setup\n\n1. Install dependencies:\n  - Go 1.x or higher\n  - TailwindCSS CLI\n  - Just command runner\n  - Air (for live reloading)\n  - Browser-sync\n  - Goose (for database migrations)\n\n2. Install project dependencies:\n   ```bash\n   go mod download\n   ```\n\n3. Run database migrations:\n   ```bash\n   just migrate up\n   ```\n\n4. Start the development server:\n   ```bash\n   just dev\n   ```\n\nThis will start:\n- The Go server with live reloading\n- TailwindCSS compiler in watch mode\n- Browser-sync for automatic browser refreshing\n\n## Development Commands\n\n- Update Go dependencies: `just update`\n- Build production CSS: `just build`\n- Run migrations: `just migrate [command]`\n- Create new migration: `just makemigrations [name]`\n- Seed database with admin user: `just seed`\n\n### Project Structure\n\n```bash\ngo-bookreview/\n├── cmd/\n│   └── web/             # Application entrypoint\n├── internal/\n│   ├── app/             # Application core\n│   ├── forms/           # Form handling\n│   ├── middleware/      # HTTP middleware\n│   ├── models/          # Data models\n│   ├── routes/          # URL routing\n│   └── views/           # View handlers\n├── migrations/          # Database migrations\n├── ui/\n│   ├── html/            # HTML templates\n│   ├── static/          # Static assets\n│   └── assets/          # Source assets\n└── uploads/             # User uploads\n```\n## Contributing\n\n1. Fork the repository\n2. Create your feature branch: `git checkout -b feature/my-new-feature`\n3. Commit your changes: `git commit -am 'Add some feature'`\n4. Push to the branch: `git push origin feature/my-new-feature`\n5. Submit a pull request\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadalinpopa%2Fgo-bookreview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmadalinpopa%2Fgo-bookreview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadalinpopa%2Fgo-bookreview/lists"}