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.
- Host: GitHub
- URL: https://github.com/dixslyf/chrono-cycle
- Owner: dixslyf
- License: apache-2.0
- Created: 2025-01-14T02:26:14.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-09-23T06:46:32.000Z (9 months ago)
- Last Synced: 2025-09-23T08:32:30.930Z (9 months ago)
- Topics: drizzle-kit, drizzle-orm, mantine, nextjs, postgresql, react, university
- Language: TypeScript
- Homepage: https://chrono-cycle.dixslyf.dev/
- Size: 3.5 MB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ChronoCycle
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
```