An open API service indexing awesome lists of open source software.

https://github.com/dixslyf/chrono-cycle

Web application for managing complex, recurring processes.
https://github.com/dixslyf/chrono-cycle

drizzle-kit drizzle-orm mantine nextjs postgresql react university

Last synced: 8 months ago
JSON representation

Web application for managing complex, recurring processes.

Awesome Lists containing this project

README

          

# ChronoCycle



Logo

ChronoCycle is a web application for managing complex, recurring processes.
Its main feature is the ability to create project templates,
which can be used to instantiate cycles of tasks.

## Features

- **Web-based user interface**: Access ChronoCycle directly from your browser with no installation required.

- **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.

- **Event management (tasks and activities)**: Create, edit and organise events within project templates and instantiated projects.

- **Timeline view**: Visualise your projects in an interactive timeline view.

- **Notes on events**: Attach plaintext notes to events and reminders.

- **Tagging system**: Categorise events using customisable tags.

- **Notifications and reminders**: Stay on track with reminders delivered via email. Users can customise notification preferences for different tasks and activities.

- **Template import/export**: Export project templates for backup or sharing.
Import existing templates to replicate workflows across teams.

## Usage

Please refer to the [User Guide](./chrono-cycle/public/user-guide.pdf).

## Development

### Setting Up a Development Database

Before running ChronoCycle, we first need to set up a development database.
We use [Drizzle ORM](https://orm.drizzle.team/) for database migrations.

**Note:** Before running the commands below, make sure that you are in the `chrono-cycle/` directory (where `package.json` is located).

To use a standard PostgreSQL database:

1. Set up a standard PostgreSQL database.
You may either choose to set up a local database instance or use a database provider.
If you are setting up a local instance, follow the instructions [here](https://www.postgresql.org/docs/current/tutorial-start.html).

1. Set the `DEV_DATABASE_URL` environment variable to the URL of the database.
You may want to set this in a `.env.local` file.

1. Generate the SQL migration files:

```
npx drizzle-kit generate --config drizzle/config.dev.standard.ts
```

1. Migrate the database:

```
npx drizzle-kit migrate --config drizzle/config.dev.standard.ts
```

Alternatively, to create a local database on the filesystem with PGlite, run the following:

1. Generate the SQL migration files:

```
npx drizzle-kit generate --config drizzle/config.dev.ts
```

1. Create and migrate the database:

```
npx drizzle-kit migrate --config drizzle/config.dev.ts
```

This will create a PGlite database in the `dev-db/` directory.

### Trigger.dev

ChronoCycle uses [Trigger.dev](https://trigger.dev) for background job scheduling.
For local testing, follow the instructions [here](https://trigger.dev/docs/quick-start).

### Running the Development Server

First, ensure that you have set up a development database.
Then, run:

```
npm run dev
```

Finally, open [http://localhost:3000](http://localhost:3000) with your web browser.

### Running Tests

ChronoCycle uses Vitest for testing.
To execute the tests and view the coverage report, run the following:

```
npm run test
```

To run the tests and view the results in Vitest's web user interface, run:

```
npm run test-ui
```