Skip to content

Repository files navigation

Recury Logo

Recury

Tasks that think of you.

A self-hosted, privacy-first recurring task manager with intelligent scheduling and deadline handling.

Docker License TypeScript

FeaturesQuick StartConfigurationDevelopment


✨ Features

Feature Description
🔁 Flexible Scheduling Daily, weekly, monthly, yearly, or custom intervals (every X days/weeks)
📅 Week A/B Patterns Perfect for alternating schedules using interval anchoring
Smart Deadline Behavior Choose between stacking overdue tasks or marking them as failed
📊 Dashboard View Today/Tomorrow overview with open, completed, and overdue tasks
🗓️ Calendar View Monthly calendar with navigation and daily details
📱 PWA Support Install as a native app on your phone
🔒 Password Protected Simple authentication for personal use
🌍 Multi-language English and German, easily extensible
🏠 Self-hosted Your data stays on your server

🚀 Quick Start

1. Create Project Directory

mkdir recury && cd recury

2. Download Configuration Files

curl -O https://raw.githubusercontent.com/ErNobyl-1/Recury/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/ErNobyl-1/Recury/main/.env.example
mv .env.example .env

3. Edit .env

APP_PORT=8123
AUTH_PASSWORD=your-secure-password    # Change this!
SESSION_SECRET=your-random-string     # Change this!

💡 Generate a secure secret: openssl rand -hex 32

4. Launch

docker compose up -d

5. Access

Open http://your-server:8123 and log in with your password.


⚙️ Configuration

Variable Description Default
APP_PORT Port the app runs on 8123
AUTH_PASSWORD Login password changeme
SESSION_SECRET Secret for secure cookies -
TZ Timezone Europe/Berlin

🔄 Updates

docker compose pull
docker compose up -d

🛑 Stop

docker compose down

Your data persists in the Docker volume.


🛠️ Development

Local Docker build
# Build and start locally
docker compose -f docker-compose.dev.yml up -d --build

# Stop
docker compose -f docker-compose.dev.yml down

Uses a separate volume (recury-data-dev) to avoid conflicts with production data.

Local development without Docker
# Install dependencies
npm install

# Generate Prisma client
npm run db:generate

# Create database
npm run db:push

# Start dev servers
npm run dev

Project Structure

Recury/
├── packages/
│   ├── api/           # Backend (Fastify + Prisma + SQLite)
│   └── web/           # Frontend (React + Vite + TailwindCSS)
├── docker-compose.yml     # Production (uses GHCR image)
├── docker-compose.dev.yml # Development (local build)
├── Dockerfile
└── .env.example

📡 API Reference

View API Endpoints

Authentication

Method Endpoint Description
POST /api/auth/login Log in
POST /api/auth/logout Log out
GET /api/auth/status Check auth status

Tasks

Method Endpoint Description
GET /api/templates List all tasks
POST /api/templates Create task
PUT /api/templates/:id Update task
DELETE /api/templates/:id Archive task

Instances

Method Endpoint Description
GET /api/dashboard Today/Tomorrow overview
GET /api/instances?from=&to= Get instances for date range
POST /api/instances/:id/complete Mark as completed

💡 Tips

Week A/B Schedule

For a bi-weekly rotation:

Week A Task:

  • Schedule: Interval
  • Every: 2 weeks
  • Anchor: First day of Week A

Week B Task:

  • Schedule: Interval
  • Every: 2 weeks
  • Anchor: First day of Week B (+1 week offset)

🔐 Security

  • Passwords are hashed (bcrypt)
  • Session-based authentication with secure cookies
  • Recommended: Access only via local network or VPN

📄 License

MIT © Recury

About

Eine selbst-hostbare Todo-Webapp

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages