Update README with Docker deployment instructions and auth features
- Added comprehensive Docker Compose deployment section as recommended method - Documented automatic database migrations and persistent storage - Updated architecture section to mention SQLite auth system - Added new User Experience section highlighting session management - Reorganized development setup with local database migration instructions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -79,7 +79,7 @@ RUN cargo build --release --bin backend
|
|||||||
FROM alpine:latest
|
FROM alpine:latest
|
||||||
|
|
||||||
# Install runtime dependencies
|
# Install runtime dependencies
|
||||||
RUN apk add --no-cache ca-certificates tzdata
|
RUN apk add --no-cache ca-certificates tzdata sqlite
|
||||||
|
|
||||||
# Copy frontend files to temporary location
|
# Copy frontend files to temporary location
|
||||||
COPY --from=builder /app/frontend/dist /app/frontend-dist
|
COPY --from=builder /app/frontend/dist /app/frontend-dist
|
||||||
@@ -99,9 +99,9 @@ RUN echo '#!/bin/sh' > /usr/local/bin/start.sh && \
|
|||||||
echo 'echo "Ensuring database directory exists..."' >> /usr/local/bin/start.sh && \
|
echo 'echo "Ensuring database directory exists..."' >> /usr/local/bin/start.sh && \
|
||||||
echo 'mkdir -p /db && chmod 755 /db' >> /usr/local/bin/start.sh && \
|
echo 'mkdir -p /db && chmod 755 /db' >> /usr/local/bin/start.sh && \
|
||||||
echo 'echo "Running database migrations..."' >> /usr/local/bin/start.sh && \
|
echo 'echo "Running database migrations..."' >> /usr/local/bin/start.sh && \
|
||||||
echo 'sqlx migrate run --database-url "sqlite:/db/calendar.db" --source /migrations || echo "Migration failed but continuing..."' >> /usr/local/bin/start.sh && \
|
echo 'sqlx migrate run --database-url "sqlite:///db/calendar.db" --source /migrations || echo "Migration failed but continuing..."' >> /usr/local/bin/start.sh && \
|
||||||
echo 'echo "Starting backend server..."' >> /usr/local/bin/start.sh && \
|
echo 'echo "Starting backend server..."' >> /usr/local/bin/start.sh && \
|
||||||
echo 'export DATABASE_URL="sqlite:/db/calendar.db"' >> /usr/local/bin/start.sh && \
|
echo 'export DATABASE_URL="sqlite:///db/calendar.db"' >> /usr/local/bin/start.sh && \
|
||||||
echo '/usr/local/bin/backend' >> /usr/local/bin/start.sh && \
|
echo '/usr/local/bin/backend' >> /usr/local/bin/start.sh && \
|
||||||
chmod +x /usr/local/bin/start.sh
|
chmod +x /usr/local/bin/start.sh
|
||||||
|
|
||||||
|
|||||||
48
README.md
48
README.md
@@ -29,6 +29,12 @@ While there are many excellent self-hosted CalDAV server implementations (Nextcl
|
|||||||
- **Real-time Updates**: Seamless synchronization with CalDAV servers
|
- **Real-time Updates**: Seamless synchronization with CalDAV servers
|
||||||
- **Timezone Aware**: Proper local time display with UTC storage
|
- **Timezone Aware**: Proper local time display with UTC storage
|
||||||
|
|
||||||
|
### User Experience
|
||||||
|
- **Persistent Preferences**: Settings sync across devices and sessions
|
||||||
|
- **Remember Me**: Optional server/username remembering for convenience
|
||||||
|
- **Session Management**: Secure session tokens with automatic expiry
|
||||||
|
- **Cross-Device Sync**: User preferences stored in database, not just browser
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
### Frontend (Yew WebAssembly)
|
### Frontend (Yew WebAssembly)
|
||||||
@@ -40,7 +46,8 @@ While there are many excellent self-hosted CalDAV server implementations (Nextcl
|
|||||||
|
|
||||||
### Backend (Axum)
|
### Backend (Axum)
|
||||||
- **Framework**: Axum async web framework with CORS support
|
- **Framework**: Axum async web framework with CORS support
|
||||||
- **Authentication**: JWT token management and validation
|
- **Authentication**: SQLite-backed session management with JWT tokens
|
||||||
|
- **Database**: SQLite for user preferences and session storage
|
||||||
- **CalDAV Client**: Full CalDAV protocol implementation for server sync
|
- **CalDAV Client**: Full CalDAV protocol implementation for server sync
|
||||||
- **API Design**: RESTful endpoints following calendar operation patterns
|
- **API Design**: RESTful endpoints following calendar operation patterns
|
||||||
- **Data Flow**: Proxy between frontend and CalDAV servers with proper authentication
|
- **Data Flow**: Proxy between frontend and CalDAV servers with proper authentication
|
||||||
@@ -54,12 +61,36 @@ While there are many excellent self-hosted CalDAV server implementations (Nextcl
|
|||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
### Prerequisites
|
### Docker Deployment (Recommended)
|
||||||
|
|
||||||
|
The easiest way to run the calendar is using Docker Compose:
|
||||||
|
|
||||||
|
1. **Clone the repository**:
|
||||||
|
```bash
|
||||||
|
git clone <repository-url>
|
||||||
|
cd calendar
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Start the application**:
|
||||||
|
```bash
|
||||||
|
docker compose up
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Access the application** at `http://localhost`
|
||||||
|
|
||||||
|
The Docker setup includes:
|
||||||
|
- **Automatic database migrations** on startup
|
||||||
|
- **Persistent data storage** in `./data/db/` volume
|
||||||
|
- **Frontend served via Caddy** on port 80
|
||||||
|
- **Backend API** accessible on port 3000
|
||||||
|
|
||||||
|
### Development Setup
|
||||||
|
|
||||||
|
#### Prerequisites
|
||||||
- Rust (latest stable version)
|
- Rust (latest stable version)
|
||||||
- Trunk (`cargo install trunk`)
|
- Trunk (`cargo install trunk`)
|
||||||
|
|
||||||
### Development Setup
|
#### Local Development
|
||||||
|
|
||||||
1. **Start the backend server** (serves API at http://localhost:3000):
|
1. **Start the backend server** (serves API at http://localhost:3000):
|
||||||
```bash
|
```bash
|
||||||
@@ -73,6 +104,17 @@ While there are many excellent self-hosted CalDAV server implementations (Nextcl
|
|||||||
|
|
||||||
3. **Access the application** at `http://localhost:8080`
|
3. **Access the application** at `http://localhost:8080`
|
||||||
|
|
||||||
|
#### Database Setup
|
||||||
|
|
||||||
|
For local development, run the database migrations:
|
||||||
|
```bash
|
||||||
|
# Install sqlx-cli if not already installed
|
||||||
|
cargo install sqlx-cli --features sqlite
|
||||||
|
|
||||||
|
# Run migrations
|
||||||
|
sqlx migrate run --database-url "sqlite:calendar.db" --source backend/migrations
|
||||||
|
```
|
||||||
|
|
||||||
### Building for Production
|
### Building for Production
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in New Issue
Block a user