Skip to content

Celluloid is an open source collaborative video annotation app for educational organizations

License

Notifications You must be signed in to change notification settings

celluloid-camp/celluloid

Repository files navigation

Celluloid is a collaborative video annotation application designed for
educational purposes.

Celluloid

License: MIT Docker Build Tests

Overview

Celluloid is a collaborative video annotation application designed for educational purposes.

With Celluloid, you can find a PeerTube video, select an educational objective, annotate the video, share it with your students, collect their answers, and respond to their questions.

✨ Demo

Visit https://celluloid.huma-num.fr/, create an account, and start using Celluloid. We value your feedback on the application's user experience and design. If you encounter any bugs or issues, please don't hesitate to report them.

Development Team

Celluloid originated from a research project led by Michaël Bourgatte and Laurent Tessier, two senior lecturers at the Catholic University of Paris. Their work focuses on educational science and digital humanities. Celluloid is currently maintained by Younes Benaomar, and we actively encourage contributions and involvement from the community. Feel free to reach out to us on Discussions.

Setup

Prerequisites

Environment

Celluloid is designed to run on a Linux server. Proficiency with the command-line interface is necessary for deployment and installation. It's highly recommended to use an OSX or Linux workstation.

🔨 Tools

  • Install the latest version of Git.
  • Install the latest version of Node.js.
  • Install the latest version of Yarn and use it instead of NPM.

The project is organized as a monorepo, so Yarn is required to leverage Yarn workspace.

.
├── apps/                # Main application containers
│   ├── frontend/        # Frontend application code
│   ├── backend/         # Backend application code
│   └── admin/           # Admin panel code
├── packages/            # Shared packages
│   ├── config/          # Configuration settings and files
│   ├── i18n/            # Internationalization settings and translations
│   ├── passport/        # Passport authentication settings
│   ├── prisma/          # Prisma ORM configurations and schema
│   ├── trpc/            # tRPC settings and utilities
│   ├── types/           # Shared TypeScript types
│   └── utils/           # Shared utilities
├── tests/               # Test scripts and test-related utilities
├── packages.json        # Package manifest
└── .env                 # Environment variables

📦 Database

You will need a working PostgreSQL server, version 13 or later.

We provide a complete docker compose stack.yml ready to run :

docker compose -f stack.yml up

📬 Emails

A functioning SMTP server is necessary for sending account confirmation emails. we've configured Nodemailer to use ethereal.email to catch all development emails, and regular SMTP in production (easy to replace with a different provider thanks to Nodemailer)

🗂️ Storage

You are required to supply an S3-compatible storage service. For this purpose, we have set up the project to utilize Minio.

Installation from Source

Initial steps

Open your terminal and execute the following commands:

git clone https://github.com/celluloid-camp/celluloid.git
cd celluloid/
yarn

Configuration

Copy the sample environment file:

cp env.sample .env

Open the newly created .env file with your preferred text editor and configure the values according to your requirements.

Development Mode

For development purposes, you can use the provided Docker Compose docker-compose.yml and run the command:

At the root of your repository, run the projet in development mode:

yarn dev

This will initiate an interactive build and open the app in a browser window while continuously monitoring source files for modifications. If everything worked without errors, you should be all set. Otherwise, please review the instructions above carefully.

Production Mode

Build and start the application:

yarn build
yarn start

You can access your app at http://localhost:3000.

Building and starting the application as a docker Container

Open a terminal at the repository's root and run:

docker build -t  celluloid:latest -f Dockerfile.compact .

Minio is used for storage, make sure to run local instance or use external service and don't forget to update your .env file

Contributing

*We actively welcome motivated contributors!

Feel free to open a pull request, contact us, or report a bug.

Technical Stack

Before contributing to Celluloid's development, it's essential to familiarize yourself with some of the following technologies:

  • TypeScript (used throughout the project).
  • Frontend: React, TRPC, and Material UI.
  • Backend: Node.js, Express, and Prisma.
  • File Storage : Minio
  • Database: PostgreSQL.
  • Cache / Session : Redis.

Translation

inlang status badge

V1 Legacy

You can still find the old Celluloid version 1 that supports YouTube videos here.

Celluloid is a collaborative video annotation application designed for
educational purposes.