{"id":25599322,"url":"https://github.com/kaysting/CyberTasks","last_synced_at":"2026-04-22T16:30:19.495Z","repository":{"id":59543631,"uuid":"527867658","full_name":"CyberGen49/CyberTasks","owner":"CyberGen49","description":"An easy to use to-do list and task scheduler webapp.","archived":false,"fork":false,"pushed_at":"2023-02-11T09:58:42.000Z","size":2939,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-03-05T19:57:24.527Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://tasks.simplecyber.org/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CyberGen49.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-23T06:49:59.000Z","updated_at":"2022-08-23T06:54:00.000Z","dependencies_parsed_at":"2023-01-23T22:01:56.982Z","dependency_job_id":null,"html_url":"https://github.com/CyberGen49/CyberTasks","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberGen49%2FCyberTasks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberGen49%2FCyberTasks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberGen49%2FCyberTasks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberGen49%2FCyberTasks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CyberGen49","download_url":"https://codeload.github.com/CyberGen49/CyberTasks/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240032057,"owners_count":19737065,"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":[],"created_at":"2025-02-21T14:33:54.593Z","updated_at":"2026-04-22T16:30:19.431Z","avatar_url":"https://github.com/CyberGen49.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# CyberTasks\nAn easy to use to-do list and task scheduler webapp.\n\n![CyberTasks promotional image](/web/assets/promo.png)\n\n**Note:** Large portions of the front-end app's styling and scripting is hosted separately. Those resources can be found in the [CyberGen49/web-resources](https://github.com/CyberGen49/web-resources) repository.\n\n## Running the server yourself\nWhile the intention isn't for others to be hosting copies of CyberTasks, hosting a local server may be useful for development.\n\n1. Install Node.js\n    * Everything is tested and working on Node v17.9.0\n1. Clone the repository to a directory on your computer\n1. Open your terminal and `cd` into the new directory\n1. Run `npm install` to install the required dependencies\n1. [Create a Discord application](https://discord.com/developers/applications) to use for sign-in\n    * In the **OAuth2** tab, add a redirect URL for your domain, followed by `/discord-callback`, like `https://tasks.example.com/discord-callback`\n1. Create a file in the project folder named `credentials.json`, and paste the following contents within:  \n    ```json\n    {\n        \"client_id\": \"...\",\n        \"client_secret\": \"...\",\n        \"redirect_url\": \"...\",\n        \"allow_new_users\": false\n    }\n    ```\n1. Update each field of the file by replacing `...`:\n    * `client_id` is your application's client ID\n    * `client_secret` is your application's client secret\n    * `redirect_url` is the same URL that you added to your application\n    * `allow_new_users` defines whether unapproved users are allowed to sign in or not\n1. If `allow_new_users` is set to `false`, create another file named `allowedUsers.json` and list the Discord user IDs of the users you want to grant access to, like so:\n    ```json\n    [\n        \"id1\", \"id2\", \"id3\", \"...\"\n    ]\n    ```\n    * To copy user IDs, enable developer mode in Settings \u003e Advanced, then right-click on a user and click \"Copy ID\"\n    * **User IDs must be enclosed in quotes to work properly**\n1. [Download and install SQLite](https://www.sqlite.org/download.html)\n1. In your terminal (still in the project directory), create and structure the database with this command:\n    ```\n    sqlite3 main.db \".read database-schema.sql\"\n    ```\n1. Start the server with `npm start`\n    1. Alternatively, run `node wrapper.js` to make sure the server restarts if it crashes. The wrapper is also capable of sending logs to a Discord channel using a bot. To enable this functionality, create a bot account on your Discord application, copy its token, and set it to `bot_token` in `credentials.json`, then set `log_channel` to the ID of the text channel that you want logs to be sent in. Make sure the bot has the **Message content intent** enabled, and join it to your server by selecting **bot** under **OAuth2 \u003e URL Generator**.\n\nThe server is hosted on a nonstandard port, as it's meant to be proxied through a virtual host on a parent webserver like Apache or using a service like [Cloudflare Tunnel](https://www.cloudflare.com/products/tunnel/).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaysting%2FCyberTasks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaysting%2FCyberTasks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaysting%2FCyberTasks/lists"}