diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md new file mode 100644 index 0000000..9f2a114 --- /dev/null +++ b/DEPLOYMENT.md @@ -0,0 +1,280 @@ +# 🚀 Deployment & Portability Guide + +This guide addresses potential issues when building and running Bookmann on another machine. + +## ✅ Current Status + +**What Works:** +- ✅ Docker containers build and start successfully +- ✅ Database schema loads correctly with all tables +- ✅ Application connects to database and starts +- ✅ API endpoints respond correctly +- ✅ All highlights and notes functionality included + +## ⚠️ Potential Issues & Solutions + +### 1. **Environment Variables Setup** + +**Issue:** Missing or incorrect `.env` file + +**Solution:** +```bash +# 1. Copy the example file +cp .env.example .env + +# 2. Edit with secure values +nano .env +# Required: +JWT_SECRET="your-secure-jwt-secret-key-here" # 64+ char random string +DBPASS="your-secure-database-password" # Strong password + +# Optional: +SERVER_PORT=8765 +DATABASE_HOST=localhost # For local development +``` + +### 2. **Port Conflicts** + +**Issue:** Port 8765 already in use + +**Solution:** +```bash +# Check what's using the port +lsof -i :8765 + +# Kill conflicting processes +sudo kill -9 $(lsof -t -i:8765) + +# Or change port in .env +SERVER_PORT=8766 +``` + +### 3. **Docker Engine Compatibility** + +**Issue:** Using Podman instead of Docker + +**Solution:** +```bash +# Both work, but for full Docker compatibility: +# Install Docker Desktop +# or use Docker instead of podman command + +# Podman users: ensure podman-compose is installed +# Docker and Podman can both use the same compose file +``` + +### 4. **Database Permissions** + +**Issue:** PostgreSQL fails on foreign key constraints + +**Solution:** +```bash +# Clean database volume and restart: +docker compose down -v +docker volume rm bookmann_postgres_data 2>/dev/null +docker compose up -d + +# Check database logs for errors: +docker compose logs db +``` + +### 5. **Build Dependencies** + +**Issue:** `sqlc` or `templ` not in PATH + +**Solution:** +```bash +# Ensure Go tools are installed correctly +go version # Should be 1.25+ +which sqlc # Check if sqlc is accessible +which templ # Check if templ is accessible + +# Rebuild if tools are missing: +docker compose build --no-cache +``` + +### 6. **Platform-Specific Issues** + +**Issue:** Different OS architectures (ARM vs x86) + +**Solution:** +```bash +# Check current architecture +uname -m + +# For ARM (Apple M1/M2, Raspberry Pi): +# Ensure all Go dependencies support ARM +# May need to rebuild Go modules: +go mod download && go mod tidy + +# Docker automatically handles multi-arch with: +FROM golang:1.25-alpine AS builder +# ... rest of Dockerfile remains same +``` + +### 7. **Network Connectivity** + +**Issue:** Can't connect to localhost + +**Solution:** +```bash +# Check if containers are running: +docker compose ps + +# Test database connection: +docker compose exec db psql -U postgres -d bookmann -c "SELECT 1;" + +# Test API endpoint: +curl -s http://localhost:8765/api/libraries/visible + +# For remote servers, use actual IP: +curl -s http://SERVER_IP:8765/api/libraries/visible +``` + +## 🔧 Recommended Build Process + +### First Time Setup: +```bash +# 1. Clone repository +git clone +cd bookmann + +# 2. Set up environment +cp .env.example .env +# Edit .env with secure values + +# 3. Build and run +docker compose build --no-cache +docker compose up -d + +# 4. Verify +docker compose ps +curl -s http://localhost:8765/api/libraries/visible +``` + +### For Production Deployment: +```bash +# Use production-ready environment variables +export JWT_SECRET="your-production-jwt-secret" +export DBPASS="your-production-db-password" + +# Consider using environment files +cp .env.production .env + +# Build with production optimizations +docker compose -f docker-compose.yml -f docker-compose.prod.yml build +``` + +## 📋 Debugging Steps + +### Check Application Logs: +```bash +# Application logs: +docker compose logs app + +# Database logs: +docker compose logs db + +# Follow logs in real-time: +docker compose logs -f app +``` + +### Check Database Schema: +```bash +# Connect to database: +docker compose exec db psql -U postgres -d bookmann + +# List tables: +\dt + +# Check specific table: +\d media_highlights +\d media_notes + +# Verify foreign keys: +SELECT + tc.constraint_name, + tc.table_name, + tc.constraint_type, + tc.is_deferrable +FROM information_schema.table_constraints tc +JOIN information_schema.key_column_usage kcu + ON tc.constraint_name = kcu.constraint_name +JOIN information_schema.constraint_column_usage ccu + ON tc.constraint_name = ccu.constraint_name +WHERE tc.table_schema = 'public'; +``` + +### Test New Features: +```bash +# Test notes API: +curl -s -H "Authorization: Bearer YOUR_TOKEN" \ + http://localhost:8765/api/media-items/{MEDIA_ID}/notes + +# Test highlights API: +curl -s -H "Authorization: Bearer YOUR_TOKEN" \ + http://localhost:8765/api/media-items/{MEDIA_ID}/highlights +``` + +## 🎯 Architecture Compliance + +The current setup follows best practices: + +### ✅ **Containerization** +- Multi-stage Docker builds for smaller images +- Separate database and application containers +- Proper volume mounting for data persistence +- Health checks for service dependencies + +### ✅ **Database Design** +- PostgreSQL with proper foreign key constraints +- Cascade deletes for data integrity +- Indexed for performance +- pgx v5 compatibility + +### ✅ **API Design** +- RESTful endpoints following standards +- JWT-based authentication +- Proper HTTP status codes +- Comprehensive error handling + +### ✅ **Build Process** +- Go modules with vendoring support +- SQL code generation with sqlc +- Template generation with templ +- Asset minification with Tailwind CSS + +## 🚀 Expected Behavior + +When properly set up, you should see: + +1. **Healthy containers**: `docker compose ps` shows "Up" status +2. **Working API**: `curl http://localhost:8765/api/libraries/visible` returns JSON +3. **New tables**: `media_highlights` and `media_notes` exist with proper schema +4. **No port conflicts**: Application binds to port 8765 without errors +5. **Database ready**: PostgreSQL accepts connections and serves requests + +## 🆕 New Features Ready + +The highlights and notes functionality provides: + +- 📝 **Personal Notes**: Users can create notes on any media item +- 🖍 **Text Highlighting**: Colorful highlights with position tracking +- 🔗 **Note-Highlight Links**: Optional associations for detailed annotations +- 📱 **CRUD Operations**: Full create, read, update, delete for both notes and highlights +- 🔄 **Backward Compatibility**: All existing ebook endpoints continue working +- 👥 **Multi-User Support**: Each user has private notes and highlights +- 🎨 **Color Customization**: Hex color codes for highlights (default yellow) + +--- + +## 📞 If Issues Persist + +1. **Check this guide** for common solutions +2. **Verify environment variables** are set correctly +3. **Ensure no port conflicts** on the target machine +4. **Check Docker compatibility** (Docker vs Podman) +5. **Review logs** for specific error messages +6. **Test incrementally**: Start with basic setup, then add complexity + +The system is designed to be robust and should work across different platforms with minimal configuration. \ No newline at end of file diff --git a/cmd/server/main.go b/cmd/server/main.go index 059eea7..a5c02b2 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -6,6 +6,7 @@ import ( "bookmann/internal/handlers" "bookmann/templates" "bytes" + "context" "log" "net/http" @@ -13,6 +14,7 @@ import ( "github.com/golang-jwt/jwt/v5" "github.com/google/uuid" "github.com/jackc/pgx/v5/pgtype" + "github.com/jackc/pgx/v5/pgxpool" "github.com/labstack/echo-jwt/v4" "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" @@ -30,7 +32,7 @@ func (cv *CustomValidator) Validate(i interface{}) error { func main() { cfg := config.LoadConfig() - dbPool, err := database.NewConnection(cfg.DatabaseURL()) + dbPool, err := pgxpool.New(context.Background(), cfg.DatabaseURL()) if err != nil { log.Fatal("Failed to connect to database:", err) } diff --git a/database/schema/schema.sql b/database/schema/schema.sql index b557790..033d981 100644 --- a/database/schema/schema.sql +++ b/database/schema/schema.sql @@ -16,6 +16,22 @@ INSERT INTO library_types (name, description, allowed_extensions) VALUES ('comics', 'Comic book archives and image formats', ARRAY['.cbz', '.cbr', '.cb7', '.cbt', '.pdf']), ('manga', 'Manga files including archives and image folders', ARRAY['.cbz', '.cbr', '.png', '.jpg', '.jpeg', '.gif', '.bmp', '.webp']); +-- Create users table +CREATE TABLE users ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + email VARCHAR(255) UNIQUE NOT NULL, + username VARCHAR(255) UNIQUE NOT NULL, + password_hash VARCHAR(255) NOT NULL, + first_name VARCHAR(255), + last_name VARCHAR(255), + role VARCHAR(20) NOT NULL DEFAULT 'user' CHECK (role IN ('admin', 'user')), + theme VARCHAR(50) DEFAULT 'tokyo-night', + scan_frequency_minutes INTEGER DEFAULT 60, + auto_scan_enabled BOOLEAN DEFAULT true, + created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), + updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() +); + -- Create libraries table CREATE TABLE libraries ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), @@ -47,22 +63,6 @@ CREATE TABLE library_visibility ( UNIQUE(user_id, library_id) ); --- Create users table -CREATE TABLE users ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), - email VARCHAR(255) UNIQUE NOT NULL, - username VARCHAR(255) UNIQUE NOT NULL, - password_hash VARCHAR(255) NOT NULL, - first_name VARCHAR(255), - last_name VARCHAR(255), - role VARCHAR(20) NOT NULL DEFAULT 'user' CHECK (role IN ('admin', 'user')), - theme VARCHAR(50) DEFAULT 'tokyo-night', - scan_frequency_minutes INTEGER DEFAULT 60, - auto_scan_enabled BOOLEAN DEFAULT true, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -- Create media_items table (replaces ebooks table for broader media support) CREATE TABLE media_items ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), diff --git a/internal/database/db.go b/internal/database/db.go index 51f4337..bdf4241 100644 --- a/internal/database/db.go +++ b/internal/database/db.go @@ -9,7 +9,6 @@ import ( "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgconn" - "github.com/jackc/pgx/v5/pgxpool" ) type DBTX interface { @@ -31,8 +30,3 @@ func (q *Queries) WithTx(tx pgx.Tx) *Queries { db: tx, } } - -// NewConnection creates a new database connection pool -func NewConnection(databaseURL string) (*pgxpool.Pool, error) { - return pgxpool.New(context.Background(), databaseURL) -} diff --git a/server.REMOVED.git-id b/server.REMOVED.git-id new file mode 100644 index 0000000..a1136d4 --- /dev/null +++ b/server.REMOVED.git-id @@ -0,0 +1 @@ +c316293e18b06a9ee77f3c1140de71f41463d937 \ No newline at end of file diff --git a/templates/admin_library_templ.go b/templates/admin_library_templ.go new file mode 100644 index 0000000..654b05b --- /dev/null +++ b/templates/admin_library_templ.go @@ -0,0 +1,53 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.977 +package templates + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func AdminLibrary(user User) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "Library Management - Bookmann

Library Management

Configure library scanning settings and manage ebook folders

Ebook Folders

Manage folders that Bookmann scans for ebooks

Scan Settings

Scan Frequency

Auto Scan

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/templates/admin_profile_templ.go b/templates/admin_profile_templ.go new file mode 100644 index 0000000..590c37e --- /dev/null +++ b/templates/admin_profile_templ.go @@ -0,0 +1,79 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.977 +package templates + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func AdminProfile(user User) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "Profile Settings - Bookmann

Profile Settings

Manage your account information and preferences

Account Information

Username

Email Address

Change Password

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/templates/admin_templ.go b/templates/admin_templ.go new file mode 100644 index 0000000..66bd88e --- /dev/null +++ b/templates/admin_templ.go @@ -0,0 +1,53 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.977 +package templates + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func Admin(user User) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "Admin Dashboard - Bookmann

Dashboard

Overview of your Bookmann library and settings

📖

Library

Manage your ebook collection

View Library
⚙️

Settings

Configure your preferences

Manage Settings

Quick Actions

Manage Folders
Add or remove scan directories
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/templates/dashboard_templ.go b/templates/dashboard_templ.go new file mode 100644 index 0000000..14f52f1 --- /dev/null +++ b/templates/dashboard_templ.go @@ -0,0 +1,53 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.977 +package templates + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func Dashboard(user User) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "Dashboard - Bookmann

Your Ebook Library

Manage your ebook collection and reading progress

Loading your ebooks...
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/templates/login_templ.go b/templates/login_templ.go new file mode 100644 index 0000000..9aa9e73 --- /dev/null +++ b/templates/login_templ.go @@ -0,0 +1,40 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.977 +package templates + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func Login() templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "Login

Login to Bookmann

Don't have an account? Sign Up

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/templates/register_templ.go b/templates/register_templ.go new file mode 100644 index 0000000..b7304ba --- /dev/null +++ b/templates/register_templ.go @@ -0,0 +1,40 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.977 +package templates + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func Register() templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "Register

Register for Bookmann

Already have an account? Login

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/uploads/David Bradshaw/Divine Energies and Divine Action_ Exploring the Essence-Energies Distinction (1279)/Divine Energies and Divine Action_ Explori - David Bradshaw.epub.REMOVED.git-id b/uploads/David Bradshaw/Divine Energies and Divine Action_ Exploring the Essence-Energies Distinction (1279)/Divine Energies and Divine Action_ Explori - David Bradshaw.epub.REMOVED.git-id new file mode 100644 index 0000000..a9f1f11 --- /dev/null +++ b/uploads/David Bradshaw/Divine Energies and Divine Action_ Exploring the Essence-Energies Distinction (1279)/Divine Energies and Divine Action_ Explori - David Bradshaw.epub.REMOVED.git-id @@ -0,0 +1 @@ +3c70ff105c935ed4ed921b40fc45218458a0e939 \ No newline at end of file diff --git a/uploads/David Bradshaw/Divine Energies and Divine Action_ Exploring the Essence-Energies Distinction (1279)/cover.jpg b/uploads/David Bradshaw/Divine Energies and Divine Action_ Exploring the Essence-Energies Distinction (1279)/cover.jpg new file mode 100644 index 0000000..3499e06 Binary files /dev/null and b/uploads/David Bradshaw/Divine Energies and Divine Action_ Exploring the Essence-Energies Distinction (1279)/cover.jpg differ diff --git a/uploads/David Bradshaw/Divine Energies and Divine Action_ Exploring the Essence-Energies Distinction (1279)/metadata.opf b/uploads/David Bradshaw/Divine Energies and Divine Action_ Exploring the Essence-Energies Distinction (1279)/metadata.opf new file mode 100644 index 0000000..f9ae4c8 --- /dev/null +++ b/uploads/David Bradshaw/Divine Energies and Divine Action_ Exploring the Essence-Energies Distinction (1279)/metadata.opf @@ -0,0 +1,28 @@ + + + + 1279 + cfee70d3-f78f-4e1c-af76-05da10685bbc + Divine Energies and Divine Action: Exploring the Essence-Energies Distinction + David Bradshaw + calibre (8.16.2) [https://calibre-ebook.com] + 2023-04-15T04:00:00+00:00 + <div> +<p>Although the essence-energies distinction is central to Eastern Orthodox theology, it has long been a source of puzzlement and confusion. Through a careful study of its classical, biblical, and patristic sources, David Bradshaw clarifies its meaning and shows how it remains foundational for a properly Christian understanding of the relationship of God to the world. Among the topics covered <br>"David Bradshaw’s 2004 book Aristotle East and West showed him to be the preeminent interpreter of Gregory Palamas in our times. Now, in this latest book, Bradshaw has given us the most compelling and sophisticated account of the essence-energies distinction currently available. Even better than in his previous book, he shows its rootedness in the classical, biblical, and patristic traditions and its ability to resolve problems generated by Western theology and contemporary philosophy of religion. All Christian philosophers and theologians will find here a convincing case that the essence-energies distinction is necessary for a coherent, realist metaphysics or theology."<br>MARK SPENCER , University of St. Thomas, St. Paul, Minnesota </p> +<p>" Divine Energies and Divine Action is the product of consummate patristic scholarship and a powerful and original philosophical intellect. It will be an indispensable prerequisite for engaging the conversation about the energy or activity ( energeia ) of God."<br>BRUCE FOLTZ , Eckerd College, St. Petersburg, Florida</p></div> + IOTA Publications + B0C9XPKMVY + B0C9XPKMVY + 9781735295152 + 1735295159 + 182630917 + pyNw0AEACAAJ + eng + + + + + + + + diff --git a/uploads/Emily Bronte/Wuthering Heights (1278)/Wuthering Heights - Emily Bronte.epub b/uploads/Emily Bronte/Wuthering Heights (1278)/Wuthering Heights - Emily Bronte.epub new file mode 100644 index 0000000..5bb9cd2 Binary files /dev/null and b/uploads/Emily Bronte/Wuthering Heights (1278)/Wuthering Heights - Emily Bronte.epub differ diff --git a/uploads/Emily Bronte/Wuthering Heights (1278)/cover.jpg b/uploads/Emily Bronte/Wuthering Heights (1278)/cover.jpg new file mode 100644 index 0000000..ec10e2a Binary files /dev/null and b/uploads/Emily Bronte/Wuthering Heights (1278)/cover.jpg differ diff --git a/uploads/Emily Bronte/Wuthering Heights (1278)/metadata.opf b/uploads/Emily Bronte/Wuthering Heights (1278)/metadata.opf new file mode 100644 index 0000000..a4fe69a --- /dev/null +++ b/uploads/Emily Bronte/Wuthering Heights (1278)/metadata.opf @@ -0,0 +1,27 @@ + + + + 1278 + 6e406f93-3499-4b1a-8a47-80b4cf3d2920 + Wuthering Heights + Emily Brontë + calibre (8.16.2) [https://calibre-ebook.com] + 1996-12-02T00:00:00+00:00 + eng + Revenge -- Fiction + Psychological fiction + Rejection (Psychology) -- Fiction + Love stories + Domestic fiction + Yorkshire (England) -- Fiction + Foundlings -- Fiction + Rural families -- Fiction + Heathcliff (Fictitious character : Brontë) -- Fiction + Triangles (Interpersonal relations) -- Fiction + + + + + + + diff --git a/uploads/George Eliot/Middlemarch (1268)/Middlemarch - George Eliot.epub.REMOVED.git-id b/uploads/George Eliot/Middlemarch (1268)/Middlemarch - George Eliot.epub.REMOVED.git-id new file mode 100644 index 0000000..a14bb65 --- /dev/null +++ b/uploads/George Eliot/Middlemarch (1268)/Middlemarch - George Eliot.epub.REMOVED.git-id @@ -0,0 +1 @@ +8ba024d82e5758b0af7821831fba5b273b23f86f \ No newline at end of file diff --git a/uploads/George Eliot/Middlemarch (1268)/cover.jpg b/uploads/George Eliot/Middlemarch (1268)/cover.jpg new file mode 100644 index 0000000..baeb35e Binary files /dev/null and b/uploads/George Eliot/Middlemarch (1268)/cover.jpg differ diff --git a/uploads/George Eliot/Middlemarch (1268)/metadata.opf b/uploads/George Eliot/Middlemarch (1268)/metadata.opf new file mode 100644 index 0000000..86dbd30 --- /dev/null +++ b/uploads/George Eliot/Middlemarch (1268)/metadata.opf @@ -0,0 +1,32 @@ + + + + 1268 + dc0ee270-5594-4cb4-b056-f4828eed4b89 + Middlemarch + George Eliot + calibre (8.16.2) [https://calibre-ebook.com] + 2008-07-10T04:00:00+00:00 + <div> +<p>Writing at the very moment when the foundations of Western thought were being challenged and undermined, George Eliot fashions in Middlemarch (1871-2) the quintessential Victorian novel, a concept of life and society free from the dogma of the past yet able to confront the scepticism that was taking over the age. In a panoramic sweep of English life during thr years leading up to the First Reform Bill of 1832, Eliot explores nearly every subject of concern to modern life: art, religion, science, politics, self, society, human relationships. Among her characters are some of the most remarkable portraits in English literature: Dorothea Brooke, the heroine, idealistic but näive; Rosamond Vincy, beautiful and egoistic: Edward Casaubon, the dry-as-dust scholar: Tertius Lydgate, the brilliant but morally-flawed physician: the passionate artist Will Ladislaw: and Fred Vincey and Mary Garth, childhood sweethearts whose charming courtship is one of the many humorous elements in the novel's rich comic vein. Felicia Bonaparte has provided a new Introduction for this updated edition, the text of which is taken from David Carroll's Clarendon Middlemarch (1986), the first critical edition. ABOUT THE SERIES: For over 100 years Oxford World's Classics has made available the widest range of literature from around the globe. Each affordable volume reflects Oxford's commitment to scholarship, providing the most accurate text plus a wealth of other valuable features, including expert introductions by leading authorities, helpful notes to clarify the text, up-to-date bibliographies for further study, and much more.</p></div> + OUP Oxford + 9780191585616 + 1N9qjg_Xq0IC + eng + Fiction + Classics + Didactic fiction + City and town life -- Fiction + England -- Fiction + Young women -- Fiction + Love stories + Domestic fiction + Married people -- Fiction + Bildungsromans + + + + + + + diff --git a/uploads/George Orwell/1984 (1269)/1984 - George Orwell.epub.REMOVED.git-id b/uploads/George Orwell/1984 (1269)/1984 - George Orwell.epub.REMOVED.git-id new file mode 100644 index 0000000..83ff879 --- /dev/null +++ b/uploads/George Orwell/1984 (1269)/1984 - George Orwell.epub.REMOVED.git-id @@ -0,0 +1 @@ +886c4e23ecdc42cfa6731385004d041731271374 \ No newline at end of file diff --git a/uploads/George Orwell/1984 (1269)/cover.jpg b/uploads/George Orwell/1984 (1269)/cover.jpg new file mode 100644 index 0000000..5cd3963 Binary files /dev/null and b/uploads/George Orwell/1984 (1269)/cover.jpg differ diff --git a/uploads/George Orwell/1984 (1269)/metadata.opf b/uploads/George Orwell/1984 (1269)/metadata.opf new file mode 100644 index 0000000..01c2395 --- /dev/null +++ b/uploads/George Orwell/1984 (1269)/metadata.opf @@ -0,0 +1,28 @@ + + + + 1269 + 610793b4-b853-4f77-9259-5c903d862b7c + 1984 + George Orwell + calibre (8.16.2) [https://calibre-ebook.com] + 1949-06-08T04:00:00+00:00 + <div> +<p>1984, published in 1949, is a dystopian and satirical novel. It revolves around Winston Smith, who lives in a nation called Oceania, in a province called Airstrip One, which represents present-day England. This state is controlled by the Party, headed by a mysterious leader who is addressed as Emmanuel Goldstein, also known as the Big Brother. The Party watches every single move that Smith and other citizens make. The nation's language and history is forcefully changed for the benefit of the Party. A new language, Newspeak, is being compulsively implemented to ensure works that have anything to do with political rebellion are omitted. In Oceania, even rebellious thoughts are illegal and are said to be the worst of all crimes. The people are suppressed and any form of individuality is not tolerated, including love and sex. Smith works as a low-ranking member of the Party who alters historical records. He hates the Party and thus buys an illegal diary in which he pens down his thoughts. He meets Julia, a coworker, who seems to been romantically inclined towards him. He however doubts that she is a Party spy who will get him imprisoned for his 'thoughtcrimes'. Her love turns out to be true and they have a covert affair. Smith's hatred for the Party grows day by day and he is convinced that a powerful Party official O'Brien is actually trying to overthrow the present government with the help of a secret group named the Brotherhood. As the story goes on, readers learn the twists and turns that life in Oceania has in store for Smith. He faces terror, betrayal, freedom, and a broken spirit. 1984 is the author's haunting vision of the future. The book has been adapted into television programmes, films, radio broadcasts and plays. In 2003, the book was number 8 on BBC's survey The Big Read. It was 6th and 13th on the reader's and editor's list of Modern Library 100 Best Novels, respectively. In 2005, it was added to the 100 Best English Language Novel from 1923 to 2005 by TIME magazine. ABOUT THE AUTHOR: Eric Arthur Blair, better known by his pen name George Orwell (1903-1950), was an English author and journalist. His work is marked by keen intelligence and wit, a profound awareness of social injustice, an intense opposition to totalitarianism, a passion for clarity in language, and a belief in democratic socialism. In addition to his literary career Orwell served as a police officer with the Indian Imperial Police in Burma from 1922-1927 and fought with the Republicans in the Spanish Civil War from 1936-1937. He was severely wounded when he was shot through his throat. Orwell and his wife were accused of 'Rabid Trotskyism' and tried in absentia in Barcelona, along with other leaders of the POUM, in 1938. However by then they had escaped from Spain and returned to England. Between 1941 and 1943, Orwell worked on propaganda for the BBC. In 1943, he became literary editor of the Tribune, a weekly left-wing magazine. He was a prolific polemical journalist, article writer, literary critic, reviewer, poet and writer of fiction, and considered perhaps the twentieth century's best chronicler of English culture. Orwell is best known for the dystopian novel Nineteen Eighty-Four (published in 1949) and the satirical novella Animal Farm (1945)-they have together sold more copies than any two books by any other twentieth-century author. His 1938 book Homage to Catalonia, an account of his experiences as a volunteer on the Republican side during the Spanish Civil War, together with numerous essays on politics, literature, language, and culture, are widely acclaimed. In 2008, The Times ranked him second on a list of 'The 50 greatest British writers since 1945'.</p></div> + Plume + 9788193545836 + 61439040 + aPlAtgEACAAJ + eng + Classics + Science Fiction + Politics + Fantasy + + + + + + + + diff --git a/uploads/George Orwell/Animal Farm (1267)/Animal Farm - George Orwell.epub b/uploads/George Orwell/Animal Farm (1267)/Animal Farm - George Orwell.epub new file mode 100644 index 0000000..e112125 Binary files /dev/null and b/uploads/George Orwell/Animal Farm (1267)/Animal Farm - George Orwell.epub differ diff --git a/uploads/George Orwell/Animal Farm (1267)/cover.jpg b/uploads/George Orwell/Animal Farm (1267)/cover.jpg new file mode 100644 index 0000000..ebdc1cd Binary files /dev/null and b/uploads/George Orwell/Animal Farm (1267)/cover.jpg differ diff --git a/uploads/George Orwell/Animal Farm (1267)/metadata.opf b/uploads/George Orwell/Animal Farm (1267)/metadata.opf new file mode 100644 index 0000000..9ba903a --- /dev/null +++ b/uploads/George Orwell/Animal Farm (1267)/metadata.opf @@ -0,0 +1,26 @@ + + + + 1267 + 7beb14fe-56e2-4cb7-b36c-6fbe64233b04 + Animal Farm + George Orwell + calibre (8.16.2) [https://calibre-ebook.com] + 1999-01-15T05:00:00+00:00 + <div> +<p>When the downtrodden animals of Manor Farm overthrow their master Mr Jones and take over the farm themselves, they imagine it is the beginning of a life of freedom and equality. But gradually a cunning, ruthless élite among them, masterminded by the pigs Napoleon and Snowball, starts to take control. Soon the other animals discover that they are not all as equal as they thought, and find themselves hopelessly ensnared as one form of tyranny is replaced with another. Orwell's chilling 'fairy story' is a timeless and devastating satire of idealism betrayed by power and corruption.</p></div> + Penguin Books + 9780140817690 + FrVaPwAACAAJ + eng + Fiction + General + Classics + Literary + + + + + + + diff --git a/uploads/Herman Melville/Moby Dick; Or, The Whale (1275)/Moby Dick; Or, The Whale - Herman Melville.epub b/uploads/Herman Melville/Moby Dick; Or, The Whale (1275)/Moby Dick; Or, The Whale - Herman Melville.epub new file mode 100644 index 0000000..1ca63a9 Binary files /dev/null and b/uploads/Herman Melville/Moby Dick; Or, The Whale (1275)/Moby Dick; Or, The Whale - Herman Melville.epub differ diff --git a/uploads/Herman Melville/Moby Dick; Or, The Whale (1275)/cover.jpg b/uploads/Herman Melville/Moby Dick; Or, The Whale (1275)/cover.jpg new file mode 100644 index 0000000..4022a1c Binary files /dev/null and b/uploads/Herman Melville/Moby Dick; Or, The Whale (1275)/cover.jpg differ diff --git a/uploads/Herman Melville/Moby Dick; Or, The Whale (1275)/metadata.opf b/uploads/Herman Melville/Moby Dick; Or, The Whale (1275)/metadata.opf new file mode 100644 index 0000000..9d86107 --- /dev/null +++ b/uploads/Herman Melville/Moby Dick; Or, The Whale (1275)/metadata.opf @@ -0,0 +1,27 @@ + + + + 1275 + e7f17690-3254-4eca-a9b7-c82059938b9c + Moby Dick; Or, The Whale + Herman Melville + calibre (8.16.2) [https://calibre-ebook.com] + 2001-07-02T00:00:00+00:00 + eng + Whaling -- Fiction + Sea stories + Psychological fiction + Ship captains -- Fiction + Adventure stories + Mentally ill -- Fiction + Ahab + Captain (Fictitious character) -- Fiction + Whales -- Fiction + Whaling ships -- Fiction + + + + + + + diff --git a/uploads/James Smith/The Voyage and Shipwreck of St. Paul (1272)/The Voyage and Shipwreck of St. Paul - James Smith.epub.REMOVED.git-id b/uploads/James Smith/The Voyage and Shipwreck of St. Paul (1272)/The Voyage and Shipwreck of St. Paul - James Smith.epub.REMOVED.git-id new file mode 100644 index 0000000..2af8772 --- /dev/null +++ b/uploads/James Smith/The Voyage and Shipwreck of St. Paul (1272)/The Voyage and Shipwreck of St. Paul - James Smith.epub.REMOVED.git-id @@ -0,0 +1 @@ +0062a4d0ac4023ecc57acb8104a7af6f311d786e \ No newline at end of file diff --git a/uploads/James Smith/The Voyage and Shipwreck of St. Paul (1272)/cover.jpg b/uploads/James Smith/The Voyage and Shipwreck of St. Paul (1272)/cover.jpg new file mode 100644 index 0000000..4316205 Binary files /dev/null and b/uploads/James Smith/The Voyage and Shipwreck of St. Paul (1272)/cover.jpg differ diff --git a/uploads/James Smith/The Voyage and Shipwreck of St. Paul (1272)/metadata.opf b/uploads/James Smith/The Voyage and Shipwreck of St. Paul (1272)/metadata.opf new file mode 100644 index 0000000..eaed9fc --- /dev/null +++ b/uploads/James Smith/The Voyage and Shipwreck of St. Paul (1272)/metadata.opf @@ -0,0 +1,18 @@ + + + + 1272 + 8437360f-a376-40d7-baea-357ef55744cf + The Voyage and Shipwreck of St. Paul + James Smith + calibre (8.16.2) [https://calibre-ebook.com] + 0101-01-01T00:00:00+00:00 + Longmans, Green + eng + + + + + + + diff --git a/uploads/Jane Austen/Pride and Prejudice (1277)/Pride and Prejudice - Jane Austen.epub.REMOVED.git-id b/uploads/Jane Austen/Pride and Prejudice (1277)/Pride and Prejudice - Jane Austen.epub.REMOVED.git-id new file mode 100644 index 0000000..a5f7450 --- /dev/null +++ b/uploads/Jane Austen/Pride and Prejudice (1277)/Pride and Prejudice - Jane Austen.epub.REMOVED.git-id @@ -0,0 +1 @@ +f73b0e3d54b9a42f8522ab6d80b1c00c28d4e6a4 \ No newline at end of file diff --git a/uploads/Jane Austen/Pride and Prejudice (1277)/cover.jpg b/uploads/Jane Austen/Pride and Prejudice (1277)/cover.jpg new file mode 100644 index 0000000..73beb77 Binary files /dev/null and b/uploads/Jane Austen/Pride and Prejudice (1277)/cover.jpg differ diff --git a/uploads/Jane Austen/Pride and Prejudice (1277)/metadata.opf b/uploads/Jane Austen/Pride and Prejudice (1277)/metadata.opf new file mode 100644 index 0000000..06fcd83 --- /dev/null +++ b/uploads/Jane Austen/Pride and Prejudice (1277)/metadata.opf @@ -0,0 +1,24 @@ + + + + 1277 + a83267dc-d7cf-4753-8fd6-76bd86ddef66 + Pride and Prejudice + Jane Austen + calibre (8.16.2) [https://calibre-ebook.com] + 1998-06-02T00:00:00+00:00 + eng + England -- Fiction + Young women -- Fiction + Love stories + Sisters -- Fiction + Domestic fiction + Courtship -- Fiction + Social classes -- Fiction + + + + + + + diff --git a/uploads/L. M. Montgomery/The Blue Castle (1273)/The Blue Castle - L. M. Montgomery.epub b/uploads/L. M. Montgomery/The Blue Castle (1273)/The Blue Castle - L. M. Montgomery.epub new file mode 100644 index 0000000..d934b6a Binary files /dev/null and b/uploads/L. M. Montgomery/The Blue Castle (1273)/The Blue Castle - L. M. Montgomery.epub differ diff --git a/uploads/L. M. Montgomery/The Blue Castle (1273)/cover.jpg b/uploads/L. M. Montgomery/The Blue Castle (1273)/cover.jpg new file mode 100644 index 0000000..7c84cdf Binary files /dev/null and b/uploads/L. M. Montgomery/The Blue Castle (1273)/cover.jpg differ diff --git a/uploads/L. M. Montgomery/The Blue Castle (1273)/metadata.opf b/uploads/L. M. Montgomery/The Blue Castle (1273)/metadata.opf new file mode 100644 index 0000000..2f95d14 --- /dev/null +++ b/uploads/L. M. Montgomery/The Blue Castle (1273)/metadata.opf @@ -0,0 +1,35 @@ + + + + 1273 + ddb0aad7-e80a-4186-8af4-9946ace87fe3 + The Blue Castle + L. M. Montgomery + calibre (8.16.2) [https://calibre-ebook.com] + 1926-01-01T05:00:00+00:00 + <div> +<p>An unforgettable story of courage and romance. Will Valancy Stirling ever escape her strict family and find true love? </p> +<p>Valancy Stirling is 29, unmarried, and has never been in love. Living with her overbearing mother and meddlesome aunt, she finds her only consolation in the "forbidden" books of John Foster and her daydreams of the Blue Castle--a place where all her dreams come true and she can be who she truly wants to be. After getting shocking news from the doctor, she rebels against her family and discovers a surprising new world, full of love and adventures far beyond her most secret dreams.</p></div> + Bantam Books + 9780553280517 + 95693 + eng + Classics + Romance + Historical + Young Adult + Self-actualization (Psychology) -- Fiction + Single women -- Fiction + Canada -- History -- 1914-1945 -- Fiction + Romance fiction + Love -- Fiction + Young adult fiction + Choice (Psychology) -- Fiction + + + + + + + + diff --git a/uploads/M. C. A. Hogarth/Haley and the Catfish Invasion (1260)/Haley and the Catfish Invasion - Maggie Hogarth.epub.REMOVED.git-id b/uploads/M. C. A. Hogarth/Haley and the Catfish Invasion (1260)/Haley and the Catfish Invasion - Maggie Hogarth.epub.REMOVED.git-id new file mode 100644 index 0000000..04f6b0a --- /dev/null +++ b/uploads/M. C. A. Hogarth/Haley and the Catfish Invasion (1260)/Haley and the Catfish Invasion - Maggie Hogarth.epub.REMOVED.git-id @@ -0,0 +1 @@ +f2c0d09a6c2525aeaa52c83deca643fccf225fd4 \ No newline at end of file diff --git a/uploads/M. C. A. Hogarth/Haley and the Catfish Invasion (1260)/cover.jpg b/uploads/M. C. A. Hogarth/Haley and the Catfish Invasion (1260)/cover.jpg new file mode 100644 index 0000000..94204ef Binary files /dev/null and b/uploads/M. C. A. Hogarth/Haley and the Catfish Invasion (1260)/cover.jpg differ diff --git a/uploads/M. C. A. Hogarth/Haley and the Catfish Invasion (1260)/metadata.opf b/uploads/M. C. A. Hogarth/Haley and the Catfish Invasion (1260)/metadata.opf new file mode 100644 index 0000000..5630df8 --- /dev/null +++ b/uploads/M. C. A. Hogarth/Haley and the Catfish Invasion (1260)/metadata.opf @@ -0,0 +1,28 @@ + + + + 1260 + e6b66a29-3198-4358-82b5-2c031277975d + Haley and the Catfish Invasion + Maggie Hogarth + calibre (8.16.2) [https://calibre-ebook.com] + 2022-09-29T04:00:00+00:00 + <div> +<p>Haley and Nana return in a second heartwarming adventure! Having embraced her new meta class, Haley is ready for anything... except, possibly, a plague of seafood! It turns out it's harder than she thought to sit back and let other people handle the problems she really, really wants solved.... </p> +<p>This second installment in the adventures of a post-apocalyptic world with a game system imposed on it by magical aliens contains yet another recipe, because (once again), that's the kind of story this is. Curl up with some cornbread and watch Haley craft her way through another quick read!</p></div> + Independently published + B0BF28JZY8 + 9798352753477 + 63207700 + eng + Fantasy + + + + + + + + + + diff --git a/uploads/M. C. A. Hogarth/Haley and the Spooky Dungeon (1265)/Haley and the Spooky Dungeon - Maggie Hogarth.epub.REMOVED.git-id b/uploads/M. C. A. Hogarth/Haley and the Spooky Dungeon (1265)/Haley and the Spooky Dungeon - Maggie Hogarth.epub.REMOVED.git-id new file mode 100644 index 0000000..1b04570 --- /dev/null +++ b/uploads/M. C. A. Hogarth/Haley and the Spooky Dungeon (1265)/Haley and the Spooky Dungeon - Maggie Hogarth.epub.REMOVED.git-id @@ -0,0 +1 @@ +2a1fd8afc5cb8e26aa6e09253b62db6d00389faa \ No newline at end of file diff --git a/uploads/M. C. A. Hogarth/Haley and the Spooky Dungeon (1265)/cover.jpg b/uploads/M. C. A. Hogarth/Haley and the Spooky Dungeon (1265)/cover.jpg new file mode 100644 index 0000000..23dd2f3 Binary files /dev/null and b/uploads/M. C. A. Hogarth/Haley and the Spooky Dungeon (1265)/cover.jpg differ diff --git a/uploads/M. C. A. Hogarth/Haley and the Spooky Dungeon (1265)/metadata.opf b/uploads/M. C. A. Hogarth/Haley and the Spooky Dungeon (1265)/metadata.opf new file mode 100644 index 0000000..eadacdb --- /dev/null +++ b/uploads/M. C. A. Hogarth/Haley and the Spooky Dungeon (1265)/metadata.opf @@ -0,0 +1,29 @@ + + + + 1265 + e633d246-279d-4e29-940a-6b9188845795 + Haley and the Spooky Dungeon + Maggie Hogarth + calibre (8.16.2) [https://calibre-ebook.com] + 2022-10-25T04:00:00+00:00 + <div> +<p style="font-weight: bold">A Girl, a Great-Grandma, and a Dungeon! </p> +<p>Having found the town of Refuge a trainer, Haley is tasked with the system's newest quest: to set up a starter dungeon for her local adventurers in time for Hallowe’en! Haley’s not sure she’s the girl for this task, since she’s not into creepy things. Fortunately, she has some unexpected (and enthusiastic) help, and of course, guidance from Nana... and maybe by the end, she begins to see things in a different (and creepier!) light. </p> +<p>Join Haley for this third installment in the adventures of a post-apocalyptic world with a game system imposed on it by magical aliens. It contains yet another recipe, because (once again), that's the kind of story this is. Break out your pans and make some pumpkin bread and then watch Haley design her way through another quick read!</p></div> + Independently published + B0BHGSP8RZ + 9798357047915 + 63207696 + eng + Fantasy + + + + + + + + + + diff --git a/uploads/T. C. Schmidt/Josephus and Jesus_ New Evidence for the One Called Christ (1276)/Josephus and Jesus_ New Evidence for the O - T. C. Schmidt.pdf.REMOVED.git-id b/uploads/T. C. Schmidt/Josephus and Jesus_ New Evidence for the One Called Christ (1276)/Josephus and Jesus_ New Evidence for the O - T. C. Schmidt.pdf.REMOVED.git-id new file mode 100644 index 0000000..59a4fe0 --- /dev/null +++ b/uploads/T. C. Schmidt/Josephus and Jesus_ New Evidence for the One Called Christ (1276)/Josephus and Jesus_ New Evidence for the O - T. C. Schmidt.pdf.REMOVED.git-id @@ -0,0 +1 @@ +d47b93802b8671d1af52a5d0cefdc2f23cd98bde \ No newline at end of file diff --git a/uploads/T. C. Schmidt/Josephus and Jesus_ New Evidence for the One Called Christ (1276)/cover.jpg b/uploads/T. C. Schmidt/Josephus and Jesus_ New Evidence for the One Called Christ (1276)/cover.jpg new file mode 100644 index 0000000..7c48c96 Binary files /dev/null and b/uploads/T. C. Schmidt/Josephus and Jesus_ New Evidence for the One Called Christ (1276)/cover.jpg differ diff --git a/uploads/T. C. Schmidt/Josephus and Jesus_ New Evidence for the One Called Christ (1276)/metadata.opf b/uploads/T. C. Schmidt/Josephus and Jesus_ New Evidence for the One Called Christ (1276)/metadata.opf new file mode 100644 index 0000000..9ad498e --- /dev/null +++ b/uploads/T. C. Schmidt/Josephus and Jesus_ New Evidence for the One Called Christ (1276)/metadata.opf @@ -0,0 +1,29 @@ + + + + 1276 + 44cc0f28-f502-466f-a0eb-e393e505735b + Josephus and Jesus: New Evidence for the One Called Christ + T. C. Schmidt + calibre (8.16.2) [https://calibre-ebook.com] + 2025-05-07T12:38:49+00:00 + DOI: 10.1093/9780191957697.001.0001 +Title: Josephus and Jesus +Published: 2025-06-03 +Abstract: This book brings to light an extraordinary connection between Jesus of Nazareth and the Jewish historian Josephus. Writing in 93/4 ce , Josephus composed an account of Jesus known as the Testimonium Flavianum . Despite this being the oldest description of Jesus written by a non-Christian, scholars have long doubted its authenticity due to the alleged pro-Christian claims it contains. The present book, however, authenticates Josephus’ authorship and then reveals a startling discovery. First, the opening chapters demonstrate that ancient Christians read the Testimonium Flavianum quite differently from modern scholars, considering it to be basically mundane or even vaguely negative, and hence far from the pro-Christian rendering that most scholars have interpreted it to be. This suggests that the Testimonium Flavianum was indeed written by a non-Christian. The book then employs stylometric analysis to demonstrate that the Testimonium Flavianum closely matches Josephus’ style. The Testimonium Flavianum appears, therefore, to be genuinely authored by Josephus. The final chapters explore Josephus’ sources of information about Jesus, revealing a remarkable discovery: Josephus was directly familiar with those who attended the trials of Jesus’ apostles and even those who attended the trial of Jesus himself. The book concludes by describing what Josephus tells us about the Jesus of history, particularly regarding how the stories of Jesus’ miracles and his resurrection developed. + 10.1093/9780191957697.001.0001 + en + historical Jesus + Josephus + Testimonium Flavianum + eyewitness + historicity + gospel + trial of Jesus + + + + + + + diff --git a/uploads/Unknown/Beowulf_ An Anglo-Saxon Epic Poem (1274)/Beowulf_ An Anglo-Saxon Epic Poem - Unknown.epub b/uploads/Unknown/Beowulf_ An Anglo-Saxon Epic Poem (1274)/Beowulf_ An Anglo-Saxon Epic Poem - Unknown.epub new file mode 100644 index 0000000..4f4e445 Binary files /dev/null and b/uploads/Unknown/Beowulf_ An Anglo-Saxon Epic Poem (1274)/Beowulf_ An Anglo-Saxon Epic Poem - Unknown.epub differ diff --git a/uploads/Unknown/Beowulf_ An Anglo-Saxon Epic Poem (1274)/cover.jpg b/uploads/Unknown/Beowulf_ An Anglo-Saxon Epic Poem (1274)/cover.jpg new file mode 100644 index 0000000..6c22d93 Binary files /dev/null and b/uploads/Unknown/Beowulf_ An Anglo-Saxon Epic Poem (1274)/cover.jpg differ diff --git a/uploads/Unknown/Beowulf_ An Anglo-Saxon Epic Poem (1274)/metadata.opf b/uploads/Unknown/Beowulf_ An Anglo-Saxon Epic Poem (1274)/metadata.opf new file mode 100644 index 0000000..8deab7c --- /dev/null +++ b/uploads/Unknown/Beowulf_ An Anglo-Saxon Epic Poem (1274)/metadata.opf @@ -0,0 +1,25 @@ + + + + 1274 + 76669967-9916-42e1-9bff-f22253833b59 + Beowulf: An Anglo-Saxon Epic Poem + Unknown + calibre (8.16.2) [https://calibre-ebook.com] + 1904-01-15T05:00:00+00:00 + <div> +<p>The epic poem Beowulf is the tale of the life and great deeds of Beowulf, hero of the Geats. The first half of the poem focuses on Beowulf's aid to Hrothgar, king of the Danes, who has been terrorized by the creature Grendel. In the second half of the poem, after his heroic youth, an older Beowulf is serving as king of the Geats when his realm is attacked by an immense dragon, prompting Beowulf to once again take up arms. Set in ancient Scandinavia, the legend of Beowulf is one of the earliest surviving examples of Anglo-Saxon literature. Originally recorded in Old English around the tenth or eleventh century, this edition is a translation into more modern language by John Lesslie Hall.</p></div> + Heath + YAZEAAAAYAAJ + eng + Epic poetry + English (Old) + Monsters -- Poetry + Dragons -- Poetry + + + + + + +