A calm, open system for organizing life and work. Tasks, projects, notes, areas, and smart workflows - self-hosted or hosted. https://tududi.com/
Find a file
2025-06-13 23:56:58 +03:00
.github Fix an issue with github pages deployment pt2 2025-06-09 08:13:16 +03:00
app Fix today race condition (#75) 2025-06-13 14:20:24 +03:00
config I18n (#67) 2025-06-09 07:30:00 +03:00
db I18n (#67) 2025-06-09 07:30:00 +03:00
dist Fix today race condition (#75) 2025-06-13 14:20:24 +03:00
frontend Fix today race condition (#75) 2025-06-13 14:20:24 +03:00
public Fix today race condition (#75) 2025-06-13 14:20:24 +03:00
screenshots Update README and screenshots 2024-11-11 11:39:31 +02:00
scripts Update script to build and upload images 2025-06-10 16:37:02 +03:00
src/app/frontend/components/Inbox I18n (#67) 2025-06-09 07:30:00 +03:00
test Basic tests scaffold 2023-11-13 13:34:38 +02:00
.babelrc Move to React 2024-10-25 21:03:43 +03:00
.dockerignore Update version 2023-11-15 14:37:27 +02:00
.gitignore I18n (#67) 2025-06-09 07:30:00 +03:00
.nojekyll Add github pages 2025-03-27 08:19:15 +02:00
.rubocop.yml Add rubocop conf 2023-11-28 12:13:39 +02:00
app.rb Fix today race condition (#75) 2025-06-13 14:20:24 +03:00
babel.config.js Move to React 2024-10-25 21:03:43 +03:00
CNAME Create CNAME 2024-11-05 17:18:40 +02:00
config.ru Initial commit 2023-11-13 11:47:56 +02:00
console.rb Fix projects layout 2024-09-06 21:53:21 +03:00
cookies.txt Fix today race condition (#75) 2025-06-13 14:20:24 +03:00
create_migration.sh Fix projects layout 2024-09-06 21:53:21 +03:00
Dockerfile Fix today race condition (#75) 2025-06-13 14:20:24 +03:00
eslint.config.mjs Setup tsc compilation and eslint 2024-10-28 18:21:53 +02:00
Gemfile I18n (#67) 2025-06-09 07:30:00 +03:00
Gemfile.lock Fix today race condition (#75) 2025-06-13 14:20:24 +03:00
index.html Add other projects section 2025-06-13 23:56:58 +03:00
LICENSE Update LICENSE 2024-11-06 10:07:15 +02:00
package-lock.json Fix today race condition (#75) 2025-06-13 14:20:24 +03:00
package.json Fix today race condition (#75) 2025-06-13 14:20:24 +03:00
postcss.config.js Move to React 2024-10-25 21:03:43 +03:00
Rakefile Initial commit 2023-11-13 11:47:56 +02:00
README.md Add other projects section 2025-06-13 23:56:58 +03:00
run.sh I18n (#67) 2025-06-09 07:30:00 +03:00
tailwind.config.js Fix today race condition (#75) 2025-06-13 14:20:24 +03:00
test-i18n.html I18n (#67) 2025-06-09 07:30:00 +03:00
test.js I18n (#67) 2025-06-09 07:30:00 +03:00
translation.json I18n (#67) 2025-06-09 07:30:00 +03:00
tsconfig.json Fix today race condition (#75) 2025-06-13 14:20:24 +03:00
webpack.config.js Fix today race condition (#75) 2025-06-13 14:20:24 +03:00

📝 tududi

tududi is a task and project management web application that allows users to efficiently manage their tasks and projects, categorize them into different areas, and track due dates. It is designed to be intuitive and easy to use, providing a seamless experience for personal productivity.

Light Mode Screenshot

Dark Mode Screenshot

Light Mobile Screenshot

Dark Mobile Screenshot

🚀 How It Works

This app allows users to manage their tasks, projects, areas, notes, and tags in an organized way. Users can create tasks, projects, areas (to group projects), notes, and tags. Each task can be associated with a project, and both tasks and notes can be tagged for better organization. Projects can belong to areas and can also have multiple notes and tags. This structure helps users categorize and track their work efficiently, whether theyre managing individual tasks, larger projects, or keeping detailed notes.

Features

  • Task Management: Create, update, and delete tasks. Mark tasks as completed and view them by different filters (Today, Upcoming, Someday). Order them by Name, Due Date, Date Created, or Priority.
  • Quick Notes: Create, update, delete, or assign text notes to projects.
  • Tags: Create tags for tasks and notes to enhance organization.
  • Project Tracking: Organize tasks into projects. Each project can contain multiple tasks and/or multiple notes.
  • Area Categorization: Group projects into areas for better organization and focus.
  • Due Date Tracking: Set due dates for tasks and view them based on due date categories.
  • Responsive Design: Accessible from various devices, ensuring a consistent experience across desktops, tablets, and mobile phones.
  • Multi-Language Support: Available in multiple languages including English, German (de), Greek (el), Spanish (es), Japanese (jp), and Ukrainian (ua) among others.
  • Telegram Integration:
    • Create tasks directly through Telegram messages
    • Receive daily digests of your tasks
    • Quick capture of ideas and todos on the go

🗺️ Roadmap

Check out our GitHub Project for planned features and progress.

🛠️ Getting Started

One simple command, that's all it takes to run tududi with docker.

🐋 Docker

First pull the latest image:

docker pull chrisvel/tududi:latest

⚙️ Environment Variables

The following environment variables are used to configure tududi:

Required Variables:

  • TUDUDI_USER_EMAIL - Initial admin user's email address (e.g., admin@example.com)
  • TUDUDI_USER_PASSWORD - Initial admin user's password (use a strong password!)
  • TUDUDI_SESSION_SECRET - Session encryption key (generate with openssl rand -hex 64)

Optional Variables:

  • TUDUDI_INTERNAL_SSL_ENABLED - Set to 'true' if using HTTPS internally (default: false)
  • TUDUDI_ALLOWED_ORIGINS - Controls CORS access for different deployment scenarios:
    • Not set: Only allows localhost origins
    • Specific domains: https://tududi.com,http://localhost:9292
    • Allow all (development only): Set to empty string ""

Common Configuration Examples:

Local Development
export TUDUDI_USER_EMAIL=dev@local.test
export TUDUDI_USER_PASSWORD=devpassword123
export TUDUDI_SESSION_SECRET=$(openssl rand -hex 64)
export TUDUDI_INTERNAL_SSL_ENABLED=false
# TUDUDI_ALLOWED_ORIGINS not set - defaults to localhost only
Production with Reverse Proxy
export TUDUDI_USER_EMAIL=admin@yourdomain.com
export TUDUDI_USER_PASSWORD=your-secure-password-here
export TUDUDI_SESSION_SECRET=$(openssl rand -hex 64)
export TUDUDI_INTERNAL_SSL_ENABLED=true
export TUDUDI_ALLOWED_ORIGINS=https://tududi.yourdomain.com

🚀 Running with Docker

docker run \
  -e TUDUDI_USER_EMAIL=myemail@example.com \
  -e TUDUDI_USER_PASSWORD=mysecurepassword \
  -e TUDUDI_SESSION_SECRET=$(openssl rand -hex 64) \
  -e TUDUDI_INTERNAL_SSL_ENABLED=false \
  -e TUDUDI_ALLOWED_ORIGINS=https://tududi,http://tududi:9292 \
  -v ~/tududi_db:/usr/src/app/tududi_db \
  -p 9292:9292 \
  -d chrisvel/tududi:latest

Navigate to https://localhost:9292 and login with your credentials.

🚧 Development

Prerequisites

Before you begin, ensure you have the following installed:

  • Ruby (version 3.2.2 or higher)
  • Sinatra
  • SQLite3
  • Puma
  • ReactJS

🏗 Installation

To install tududi, follow these steps:

  1. Clone the repository:
    git clone https://github.com/chrisvel/tududi.git
    
  2. Navigate to the project directory:
    cd tududi
    
  3. Install the required gems:
    bundle install
    

🔒 SSL Setup

  1. Create and enter the directory:
    mkdir certs
    cd certs
    
  2. Create the key and cert:
    openssl genrsa -out server.key 2048
    openssl req -new -x509 -key server.key -out server.crt -days 365
    

📂 Database Setup

Execute the migrations:

rake db:migrate 

👤 Create Your User

  1. Open the console:
    rake console
    
  2. Add the user:
    User.create(email: "myemail@somewhere.com", password: "awes0meHax0Rp4ssword")
    

🚀 Usage

To start the application, run:

puma -C app/config/puma.rb

🔍 Testing

To run tests, execute:

bundle exec ruby -Itest test/test_app.rb

🤝 Contributing

Contributions to tududi are welcome. To contribute:

  1. Fork the repository.
  2. Create a new branch (`git checkout -b feature/AmazingFeature`).
  3. Make your changes.
  4. Commit your changes (`git commit -m 'Add some AmazingFeature'`).
  5. Push to the branch (`git push origin fexature/AmazingFeature`).
  6. Open a pull request.

📜 License

This project is licensed for free personal use, with consent required for commercial use. Refer to the LICENSE for further details.

📬 Contact

For questions or comments, please open an issue or contact the developer directly.

🌟 Please check my other projects!

  • Reconya AI - Network reconnaissance and asset discovery tool
  • BreachHarbor - Cybersecurity suite for digital asset protection
  • Hevetra - Digital tracking for child health milestones

README created by Chris Veleris for tududi.