{"id":31577541,"url":"https://github.com/dixslyf/chrono-cycle","last_synced_at":"2025-10-16T16:10:55.016Z","repository":{"id":316192518,"uuid":"916396416","full_name":"dixslyf/chrono-cycle","owner":"dixslyf","description":"Web application for managing complex, recurring processes.","archived":false,"fork":false,"pushed_at":"2025-09-23T06:46:32.000Z","size":3668,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-23T08:32:30.930Z","etag":null,"topics":["drizzle-kit","drizzle-orm","mantine","nextjs","postgresql","react","university"],"latest_commit_sha":null,"homepage":"https://chrono-cycle.dixslyf.dev/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dixslyf.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-14T02:26:14.000Z","updated_at":"2025-09-23T06:46:33.000Z","dependencies_parsed_at":"2025-09-24T11:22:22.249Z","dependency_job_id":null,"html_url":"https://github.com/dixslyf/chrono-cycle","commit_stats":null,"previous_names":["dixslyf/chrono-cycle"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/dixslyf/chrono-cycle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dixslyf%2Fchrono-cycle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dixslyf%2Fchrono-cycle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dixslyf%2Fchrono-cycle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dixslyf%2Fchrono-cycle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dixslyf","download_url":"https://codeload.github.com/dixslyf/chrono-cycle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dixslyf%2Fchrono-cycle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278503205,"owners_count":25997718,"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","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["drizzle-kit","drizzle-orm","mantine","nextjs","postgresql","react","university"],"created_at":"2025-10-05T18:58:05.645Z","updated_at":"2025-10-05T18:58:09.258Z","avatar_url":"https://github.com/dixslyf.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ChronoCycle\n\n\u003cdiv id=\"top\" align=\"center\"\u003e\n  \u003ca href=\"https://github.com/dixslyf/chrono-cycle\"\u003e\n    \u003cimg src=\"./assets/logo.svg\" alt=\"Logo\" height=\"160\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\nChronoCycle is a web application for managing complex, recurring processes.\nIts main feature is the ability to create project templates,\nwhich can be used to instantiate cycles of tasks.\n\n## Features\n\n- **Web-based user interface**: Access ChronoCycle directly from your browser with no installation required.\n\n- **Project template creation and management**: Define reusable templates for recurring projects. Templates include tasks and activities, and make it easy to spin up new project cycles.\n\n- **Event management (tasks and activities)**: Create, edit and organise events within project templates and instantiated projects.\n\n- **Timeline view**: Visualise your projects in an interactive timeline view.\n\n- **Notes on events**: Attach plaintext notes to events and reminders.\n\n- **Tagging system**: Categorise events using customisable tags.\n\n- **Notifications and reminders**: Stay on track with reminders delivered via email. Users can customise notification preferences for different tasks and activities.\n\n- **Template import/export**: Export project templates for backup or sharing.  \n  Import existing templates to replicate workflows across teams.\n\n## Usage\n\nPlease refer to the [User Guide](./chrono-cycle/public/user-guide.pdf).\n\n## Development\n\n### Setting Up a Development Database\n\nBefore running ChronoCycle, we first need to set up a development database.\nWe use [Drizzle ORM](https://orm.drizzle.team/) for database migrations.\n\n**Note:** Before running the commands below, make sure that you are in the `chrono-cycle/` directory (where `package.json` is located).\n\nTo use a standard PostgreSQL database:\n\n1. Set up a standard PostgreSQL database.\n   You may either choose to set up a local database instance or use a database provider.\n   If you are setting up a local instance, follow the instructions [here](https://www.postgresql.org/docs/current/tutorial-start.html).\n\n1. Set the `DEV_DATABASE_URL` environment variable to the URL of the database.\n   You may want to set this in a `.env.local` file.\n\n1. Generate the SQL migration files:\n\n    ```\n    npx drizzle-kit generate --config drizzle/config.dev.standard.ts\n    ```\n\n1. Migrate the database:\n\n    ```\n    npx drizzle-kit migrate --config drizzle/config.dev.standard.ts\n    ```\n\nAlternatively, to create a local database on the filesystem with PGlite, run the following:\n\n1. Generate the SQL migration files:\n\n    ```\n    npx drizzle-kit generate --config drizzle/config.dev.ts\n    ```\n\n1. Create and migrate the database:\n\n    ```\n    npx drizzle-kit migrate --config drizzle/config.dev.ts\n    ```\n\nThis will create a PGlite database in the `dev-db/` directory.\n\n### Trigger.dev\n\nChronoCycle uses [Trigger.dev](https://trigger.dev) for background job scheduling.\nFor local testing, follow the instructions [here](https://trigger.dev/docs/quick-start).\n\n### Running the Development Server\n\nFirst, ensure that you have set up a development database.\nThen, run:\n\n```\nnpm run dev\n```\n\nFinally, open [http://localhost:3000](http://localhost:3000) with your web browser.\n\n### Running Tests\n\nChronoCycle uses Vitest for testing.\nTo execute the tests and view the coverage report, run the following:\n\n```\nnpm run test\n```\n\nTo run the tests and view the results in Vitest's web user interface, run:\n\n```\nnpm run test-ui\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdixslyf%2Fchrono-cycle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdixslyf%2Fchrono-cycle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdixslyf%2Fchrono-cycle/lists"}