{"id":21185208,"url":"https://github.com/tapeline/taskstorm","last_synced_at":"2026-04-09T12:02:28.134Z","repository":{"id":242317153,"uuid":"807794881","full_name":"Tapeline/Taskstorm","owner":"Tapeline","description":"A universal and collaborative task-tracker","archived":false,"fork":false,"pushed_at":"2025-03-13T04:09:00.000Z","size":589,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-13T05:19:36.965Z","etag":null,"topics":["celery","django","django-channels","django-rest-framework","docker","docker-compose","postgresql","python","rabbitmq","react","redis","task","website"],"latest_commit_sha":null,"homepage":"https://taskstorm.tapeline.dev","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tapeline.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-29T19:36:34.000Z","updated_at":"2025-03-13T04:09:03.000Z","dependencies_parsed_at":"2024-08-17T13:29:00.963Z","dependency_job_id":"86f903f5-2bf4-49e3-8a17-f48030f3241f","html_url":"https://github.com/Tapeline/Taskstorm","commit_stats":null,"previous_names":["tapeline/taskstorm"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Tapeline/Taskstorm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tapeline%2FTaskstorm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tapeline%2FTaskstorm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tapeline%2FTaskstorm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tapeline%2FTaskstorm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tapeline","download_url":"https://codeload.github.com/Tapeline/Taskstorm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tapeline%2FTaskstorm/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263441962,"owners_count":23467210,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["celery","django","django-channels","django-rest-framework","docker","docker-compose","postgresql","python","rabbitmq","react","redis","task","website"],"created_at":"2024-11-20T18:15:21.689Z","updated_at":"2025-12-30T19:54:28.348Z","avatar_url":"https://github.com/Tapeline.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Taskstorm Logo](.assets/taskstorm-color-plate.png)\n\n**Taskstorm** - A universal and collaborative task-tracker. ([Deployed application](https://taskstorm.tapeline.dev/), currently down)\n\n![GitHub License](https://img.shields.io/github/license/Tapeline/Taskstorm)\n![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/Tapeline/Taskstorm/deploy.yml)\n![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/Tapeline/Taskstorm)\n![Website](https://img.shields.io/website?url=https%3A%2F%2Ftaskstorm.tapeline.dev%2F\u0026link=https%3A%2F%2Ftaskstorm.tapeline.dev%2F)\n\n\u003c!-- TOC --\u003e\n  * [Features](#features)\n    * [Upcoming:](#upcoming)\n  * [Deploying](#deploying)\n    * [Requirements](#requirements)\n    * [Running](#running)\n    * [Providing SSL certificate](#providing-ssl-certificate)\n    * [Launching without SSL certificate (local only)](#launching-without-ssl-certificate-local-only)\n  * [Docs](#docs)\n  * [Tech stack](#tech-stack)\n    * [Backend](#backend)\n    * [Frontend](#frontend)\n    * [Other](#other)\n  * [Screenshots](#screenshots)\n  * [Developer](#developer)\n  * [License](#license)\n\u003c!-- TOC --\u003e\n\n## Features\n- Workspace system to separate tasks for different projects\n- Task tags and categories\n- GitLab-style tag filtering for tasks\n- Workflow stages to differentiate readiness statuses\n- Customizing task list that should be notification targets\n- Auto-closing tasks that are moved to stage that counts as\n  finish\n- Commenting tasks\n- GitLab-style activity list in tasks\n- GitHub-flavored Markdown in task descriptions and comments\n- Kanban board\n- Documents with live collaborative rich-text editing\n- Calendar for user's tasks\n- Statistics in profile\n- Task recommendation\n- Notification caching (sort of)\n\n### Upcoming:\n- [ ] Linked and child tasks\n\n## Deploying\n### Requirements\n- Docker (w/ Docker Compose)\n\n### Running\nTaskstorm is using Docker Compose for deployment, so \nyou can just clone this repo and start containers:\n```sh\ngit clone https://github.com/Tapeline/Taskstorm.git\ncd Taskstorm\ndocker compose up -d\n```\nExcept you should provide SSL certificate and then access web interface via standard 443\nbrowser port.\n\nDo not forget to provide environment variables:\n- `VAPID_PRIVATE` - VAPID private key. It is\n  needed for webpush notifications to work properly.\n- `SECRET_KEY` - API secret key (signing JWT, etc.)\n\nAlso head to `frontend/src/api/common.jsx` and change the return value\nof `getPublicVAPID()` to your public VAPID key. [*didn't figure out yet how\nto access environment variables on Vite build. I'm a backend developer, after\nall :(*]\n\n### Providing SSL certificate\nSSL certificate files should be placed in `~/sslcert/` \ndirectory. For example, using a LetsEncrypt cert:\n```\n~/\n|- sslcert\n   |- fullchain.pem\n   |- privkey.pem\n```\n\u003e **Attention!**\n\u003e Taskstorm is configured to use exactly these file names.\n\u003e If they differ, you can:\n\u003e 1. Rename them\n\u003e 2. Create a symbolic link with other name\n\u003e 3. Configure Nginx service in `docker-compose.yml` to\n\u003e    use different files\n\n### Launching without SSL certificate (local only)\n\nIf you want to test Taskstorm on your machine, you might\nnot want to provide SSL cert. In this case, you can use\nthis command:\n```shell\ndocker compose -f docker-compose.yml -f docker-compose.local.yml up -d\n```\n\n## Docs\n[Link to docs](docs/index.md)\n\n## Tech stack\n### Backend\n![Django](https://img.shields.io/badge/Django-092E20?style=for-the-badge\u0026logo=django\u0026logoColor=green)\n![DRF (Django Rest Framework)](https://img.shields.io/badge/django--rest--framework-3.14.0-blue?style=for-the-badge\u0026labelColor=333333\u0026logo=django\u0026logoColor=white\u0026color=blue)\n![Celery](https://img.shields.io/static/v1?style=for-the-badge\u0026message=Celery\u0026color=37814A\u0026logo=Celery\u0026logoColor=FFFFFF\u0026label)\n![RabbitMQ](https://img.shields.io/badge/-rabbitmq-%23FF6600?style=style=for-the-badge\u0026logo=rabbitmq\u0026logoColor=white)\n![Redis](https://img.shields.io/badge/Redis-DC382D?style=for-the-badge\u0026logo=redis\u0026logoColor=white)\n![Django Channels](https://img.shields.io/badge/-Django_Channels-46a2f1?style=for-the-badge\u0026logo=Django)\n![Postgres](https://img.shields.io/badge/postgresql-4169e1?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)\n### Frontend\n![React.js](https://shields.io/badge/react-black?logo=react\u0026style=for-the-badge)\n![Vite](https://img.shields.io/badge/-Vite-%23646CFF?style=for-the-badge\u0026logo=vite\u0026logoColor=ffffff)\n![Bootstrap](https://img.shields.io/badge/Bootstrap-563D7C?style=for-the-badge\u0026logo=bootstrap\u0026logoColor=white)\n### Other\n![Nginx](https://img.shields.io/badge/NGINX-009639?style=for-the-badge\u0026logo=NGINX\u0026logoColor=white)\n![Docker](https://img.shields.io/badge/Tech-Docker-informational?style=for-the-badge\u0026logo=docker\u0026color=2496ED)\n\n## Screenshots\n![](.assets/task_list.png)\n![](.assets/task_detail.png)\n![](.assets/kanban.png)\n![](.assets/docs.png)\n![](.assets/profile.png)\n\n## Developer\nProject is being developed by [@Tapeline](https://www.github.com/Tapeline)\n\n## License\nThis work is licensed under GNU General Public License v3.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftapeline%2Ftaskstorm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftapeline%2Ftaskstorm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftapeline%2Ftaskstorm/lists"}