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.
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.
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.
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.
- 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
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
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)
You are required to supply an S3-compatible storage service. For this purpose, we have set up the project to utilize Minio.
Open your terminal and execute the following commands:
git clone https://github.com/celluloid-camp/celluloid.git
cd celluloid/
yarn
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.
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.
Build and start the application:
yarn build
yarn start
You can access your app at http://localhost:3000.
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
*We actively welcome motivated contributors!
Feel free to open a pull request, contact us, or report a bug.
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.
You can still find the old Celluloid version 1 that supports YouTube videos here.