All Projects → EpocDotFr → webtodotxt

EpocDotFr / webtodotxt

Licence: other
Web-based GUI to manage a Todo.txt file

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
python
139335 projects - #7 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to webtodotxt

Todo.txt Cli
☑️ A simple and extensible shell script for managing your todo.txt file.
Stars: ✭ 4,725 (+15650%)
Mutual labels:  todolist, todotxt
ttdl
TTDL - Terminal Todo List Manager
Stars: ✭ 91 (+203.33%)
Mutual labels:  todolist, todotxt
Autoops
linux资产管理,cmdb,django, webssh,运维管理平台,数据库操作平台 本项目已停止开发!因长时间未对代码进行维护,可能会造成项目在不同环境上无法部署、运行BUG等问题,请知晓!项目仅供参考!
Stars: ✭ 340 (+1033.33%)
Mutual labels:  uwsgi
bluerobin
a simple task manager
Stars: ✭ 27 (-10%)
Mutual labels:  todolist
Pyblog
Pyblog 是一个简单易用的在线 Markdown 博客系统,它使用 Python 的 flask 架构,理论上支持所有 flask-sqlalchemy 所能支持的数据库。 编辑器使用的是 editor.md。当前版本(v2.0)支持且仅支持 python3! Python 的 Markdown to HTML 编译器使用的是 Mistune! Just so!
Stars: ✭ 113 (+276.67%)
Mutual labels:  uwsgi
Opman Django
💯✅自动化运维平台:CMDB、CI/CD、DevOps、资产管理、任务编排、持续交付、系统监控、运维管理、配置管理
Stars: ✭ 539 (+1696.67%)
Mutual labels:  uwsgi
Crawlerhot
今日热榜 抓取网站热榜信息,并且前端进行展示
Stars: ✭ 158 (+426.67%)
Mutual labels:  uwsgi
Pyflame
🔥 Pyflame: A Ptracing Profiler For Python. This project is deprecated and not maintained.
Stars: ✭ 2,930 (+9666.67%)
Mutual labels:  uwsgi
js-study-lv1
단국대학교 자바스크립트 스터디 레벨 1 과정을 위한 저장소
Stars: ✭ 18 (-40%)
Mutual labels:  todolist
Shorty
🔗 A URL shortening service built using Flask and MySQL
Stars: ✭ 78 (+160%)
Mutual labels:  uwsgi
Uwsgi Nginx Flask Docker
Docker image with uWSGI and Nginx for Flask applications in Python running in a single container. Optionally with Alpine Linux.
Stars: ✭ 2,607 (+8590%)
Mutual labels:  uwsgi
Flask Restful Authentication
An example for RESTful authentication using nginx, uWSGI, Flask, MongoDB and JSON Web Token(JWT).
Stars: ✭ 63 (+110%)
Mutual labels:  uwsgi
Cutelyst
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
Stars: ✭ 671 (+2136.67%)
Mutual labels:  uwsgi
Docker Django
A project to get you started with Docker and Django.
Stars: ✭ 170 (+466.67%)
Mutual labels:  uwsgi
Uwsgi Nginx Docker
Docker image with uWSGI and Nginx for applications in Python 3.5 and above and Python 2.7 (as Flask) in a single container. Optionally with Alpine Linux.
Stars: ✭ 466 (+1453.33%)
Mutual labels:  uwsgi
todo list rust
Simple Ncurses Todo List ☑
Stars: ✭ 19 (-36.67%)
Mutual labels:  todolist
Docker Django Nginx Uwsgi Postgres Tutorial
Docker + Django + Nginx + uWSGI + Postgres 基本教學 - 從無到有 ( Docker + Django + Nginx + uWSGI + Postgres Tutorial )
Stars: ✭ 334 (+1013.33%)
Mutual labels:  uwsgi
Uwsgi cli
easy uwsgi cli tools !!!
Stars: ✭ 48 (+60%)
Mutual labels:  uwsgi
Django Init
Project template used at Fueled for scaffolding new Django based projects. 💫
Stars: ✭ 126 (+320%)
Mutual labels:  uwsgi
CleanToDO
A Cleaner To-Do manager for Android, made with Flutter and ❤️
Stars: ✭ 21 (-30%)
Mutual labels:  todolist

Web Todo.txt

A web-based GUI to manage a Todo.txt file.

Features

  • Add / edit / remove tasks
  • Tasks due date (WIP)
  • Filters on all possible task data
  • Projects and contexts are cached locally for future use (using localStorage) (WIP)
  • Automatic sorting
  • Save and reload the task list
  • Clear displaying of the task priority and completion
  • Automatic task creation date and completion date setting
  • Links are automatically created for URLs and email addresses
  • Possible to integrate with other system using a very basic "API" (I put API in quotes because it isn't really an API). See below for more information
  • Warns before quitting if your task list wasn't saved to prevent data loss
  • Support 2 storage backends (see below in the Supported storage backends section for the list)
  • Internationalized & localized in 3 languages:
    • English (en)
    • French (fr)
    • Portuguese (WIP) (pt)
    • German (de)
  • Multi authentication backend support

Prerequisites

  • Should work on any Python 3.x version. Feel free to test with another Python version and give me feedback
  • A uWSGI-capable web server (optional, but recommended)
  • A modern web browser (which optionally support localStorage)

Installation

  1. Clone this repo somewhere
  2. pip install -r requirements.txt
  3. pybabel compile -d translations
  4. IMPORTANT: Other dependencies are needed regarding the storage backend you'll use. Please refer to the table in the Supported storage backends section below and install them accordingly using pip install <package> before continuing

Configuration

Copy the config.example.py file to config.py and fill in the configuration parameters.

Available configuration parameters are:

  • SECRET_KEY Set this to a complex random value

More informations about Flask config values can be found here.

  • TITLE If set to a string, will be used to replace the default app title (which is "Web Todo.txt")
  • USERS The credentials required to access the app. You can specify multiple ones. It is highly recommended to serve Web Todo.txt through HTTPS because it uses HTTP basic auth
  • FORCE_LANGUAGE Force the lang to be one of the supported ones (defaults to None: auto-detection from the Accept-Language HTTP header). See in the features section above for a list of available lang keys
  • DEFAULT_LANGUAGE Default language if it cannot be determined automatically. Not taken into account if FORCE_LANGUAGE is defined. See in the features section above for a list of available lang keys
  • DISPLAY_CREATION_DATE Whether the creation date of the tasks must be displayed or not
  • STORAGE_BACKEND_TO_USE The storage backend to use. Can be one of the ones in the table below, in the Supported storage backends section
  • STORAGE_BACKENDS Self-explanatory storage backends-specific configuration values. Don't forget to change them before using your desired storage backend
  • AUTH_BACKEND_TO_USE Let you select one of the available auth backends. See Supported auth backends section.

I'll let you search yourself about how to configure a web server along uWSGI.

Usage

  • Standalone

Run the internal web server, which will be accessible at http://localhost:8080:

python local.py

Edit this file and change the interface/port as needed.

  • uWSGI

The uWSGI file you'll have to set in your uWSGI configuration is uwsgi.py. The callable is app.

  • Docker

Build the image in the applications root dir:

docker build -t <image_name> .

The image can be configured via environment variables. The available variables are:

Variable Default Description
SECRET_KEY this-is-not-a-secret-key! The secret key of the app. PLEASE CHANGE THIS!
USER_DICT {} The set of predefined users as python-sict (e.g. {"john": "secret_pass"}
AUTH_BACKEND DictAuth The authentication backend to use.
STORAGE_BACKEND FileSystem The storage backend to use.
TODO_FILE_PATH Backend-dependend The path to the todo.txt in all backends
DROPBOX_ACCESS_TOKEN None The accesstoken that is used if storage backend is dropbox
WEBDAV_HOST https://my.webdav.com The hostname of the webdav server if WebDav storage is used.
MODE http The mode the uwsgi should operate in. If set to http it can be used as a normal webserver. The other option is socket which enables the uwsgi protocol.

Please mention @janLO in issues with the docker support.

  • Others

You'll probably have to hack with this application to make it work with one of the solutions described here. Send me a pull request if you make it work.

How it works

This project is built on Vue.js 2 for the frontend and Flask (Python) for the backend. The todotxtio PyPI package is used to parse/write the Todo.txt file, giving/receiving data through Ajax. Several storage backends are available so one can choose to save its Todo.txt file locally on the filesystem, on its Dropbox or in a WebDav instance like Nextcloud.

"API"

Please navigate here for the full docs.

Gotchas

  • Be aware that this web application isn't intended to be used on mobile devices

Instead, use native mobile apps to edit and sync the Todo.txt file:

On Android, you can use Simpletask (free) which can natively sync your tasks with your Dropbox and Nextcloud. If you're using another storage provider (third-party or self-hosted), you can use a modified version of this app called Simpletask Cloudless (also free, from the same author) which comes with no sync at all, but instead saves all your tasks in a file on your device. You can then do whatever you want with this file like syncing it via SFTP or many other providers / protocols with FolderSync (free, but a pro version is available).

On iOS, I don't know. Feel free to share your finds.

  • This web application wasn't designed to be multi-process compliant

If you sync your Todo.txt file via Dropbox or something from the mobile apps and at the same time you're modifiying it via this web app, you'll probably end with a loss of data because both sides can't be aware of the latest version of the file in realtime: they both erase the file with their data.

So make sure you're modifying it from one location at a time with the latest up-to-date Todo.txt file.

Supported auth backends

Name Configuration value Additional PyPI dependencies
Predefined users DictAuth
WebDAV auth WebDavAuth webdavclient3

The DictAuth uses the USERS dict from the config as user database. With this nothing fancy happens at all. The WebDavAuth has no local user database. It forwards the login data from the user to the configured webdav server and tries to log in on his behalf. If this is successful, access will be granted.

Supported storage backends

Name Configuration value Additional PyPI dependencies
Local file system FileSystem
Dropbox Dropbox dropbox
WebDAV WebDav webdavclient3

Multi user support

The WebDav storage backend has two special features:

  • The path of the todo.txt file can contain a placeholder for the user in the form {username} which will be replaced by the current user name. With this its possible to have multiple todo files for multiple users.
  • The actual credentials of the user will be either taken from the backends config values webdav_login and webdav_password or, if omitted, from the current user.

With these features there are several multi-user-scenarios possible:

  • You can have predefined users in the USERS dict that share one and the same todo file (no user placeholder, dav credentials given in the storage config and DictAuth).
  • You can have predefined users in the USERS dict which each has its own todo.txt file on the same storage (filename with user placeholder, dav credentials given in the storage config and DictAuth)
  • You can have all the above using your webdav server as an auth backend by using the WebDavAuth.
  • You can have each webdav user have its own file on its own storage by using the placeholder and omitting the dav credentials from the storage config.

Nextcloud Usage

To use a nextcloud storage you have to specify the whole file path (from the host part on) as path. If your server is named my.nextcloud.home then the storage config should look like this:

    'WebDav': {
        'path': 'remote.php/dav/files/<username>/todo.txt',
        'webdav_hostname': 'https://my.nextcloud.home',
        'webdav_login': '<username>',
        'webdav_password': '<PASSWORD>'
    }

Username and password are your regular nextcloud credentials. I highly recommend to not store them in the config. Instead use the WebDavAuth method:

AUTH_BACKEND_TO_USE = 'WebDavAuth'
[...]
    'WebDav': {
        'path': 'remote.php/dav/files/<username>/todo.txt',
        'webdav_hostname': 'https://my.nextcloud.home',
    }

If you want no user specific configuration in your config you can use the placeholder method:

AUTH_BACKEND_TO_USE = 'WebDavAuth'
[...]
    'WebDav': {
        'path': 'remote.php/dav/files/{username}/todo.txt',
        'webdav_hostname': 'https://my.nextcloud.home',
    }

Contributors

Thanks to:

  • @Pepsit36 (Portuguese translations)
  • @janLo (WebDav auth & storage support, Dockerfile)
  • @Strubbl (German translation)

End words

If you have questions or problems, you can submit an issue.

You can also submit pull requests. It's open-source man!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].