File size: 6,548 Bytes
3ff3e7f
1b59eed
ff4c569
3ff3e7f
ff4c569
 
3ff3e7f
 
0fe6fcf
3ff3e7f
 
1b59eed
3ff3e7f
 
af50341
 
e92a102
ac12f6c
e92a102
ac12f6c
4cd2157
3ff3e7f
4cd2157
 
 
 
 
3ff3e7f
b8f658f
 
 
 
e92a102
 
2272f3d
 
491fd47
b8f658f
 
 
 
 
 
 
 
e92a102
 
 
 
 
491fd47
e92a102
491fd47
20d8f83
b8f658f
 
 
e92a102
 
 
 
 
edb0e59
b8f658f
e92a102
 
20d8f83
88a7433
 
 
 
 
 
 
 
6318758
 
3a25c0b
88a7433
 
 
 
3a25c0b
88a7433
 
 
 
 
6318758
88a7433
5c344b3
 
 
 
20d8f83
6318758
5c344b3
 
6318758
5c344b3
 
6318758
20d8f83
 
6318758
c5df71e
88a7433
6318758
88a7433
 
6318758
88a7433
 
eca0313
 
6318758
eca0313
 
 
 
6318758
eca0313
6318758
 
eca0313
 
 
 
 
 
 
 
 
 
 
6318758
 
eca0313
 
 
 
e92a102
20d8f83
029a7e3
e92a102
 
 
ac4c3bc
 
6318758
 
 
ac4c3bc
 
 
029a7e3
 
24c6b45
 
029a7e3
24c6b45
ac4c3bc
 
6318758
 
 
 
 
ac4c3bc
 
6318758
 
 
 
 
24c6b45
 
 
ac4c3bc
 
 
 
24c6b45
6318758
24c6b45
ac4c3bc
6318758
24c6b45
 
6318758
24c6b45
 
6318758
24c6b45
 
6318758
24c6b45
 
6318758
24c6b45
 
6318758
24c6b45
 
 
 
6318758
24c6b45
20d8f83
6e04ece
 
 
3ff3e7f
86f40f5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
---
title: Clapper
emoji: 🎬
sdk: docker
colorFrom: gray
colorTo: gray
pinned: true
app_port: 3000
disable_embedding: false
hf_oauth: false
header: mini
short_description: 🎬 Clapper
---

![Clapper 20240617|600](documentation/screenshots/20240617.jpg)

# Introduction

🎬 Clapper is an open-source AI story visualization tool.

Prototyped [a year ago](https://www.loom.com/share/25b60750a32c4183b7fadc622d7c0120?sid=f1173e95-1ec8-4be2-831d-54b18e835367), Clapper is not designed to replace traditional video editors or modern AI editors using 3D scenes as input.

Clapper's philosophy is for anyone to create videos using AI through an interactive, iterative and intuitive process, without the need for external tools, filmmaking or AI engineering skills.

In Clapper you don't edit a sequence of video and audio files directly, but iterate (with the help from your AI assistant) over your story using high-level abstractions such as characters, locations, weather, time period, style etc.

To this end I am also working on a Director's Mode, where you can just put the video in fullscreen, sit confortably in your director's chair (or couch), shouting orders at your AI set assistant to produce your movie.

# Public alpha access

A public instance of Clapper is currently hosted on [Hugging Face](https://huggingface.co/spaces/jbilcke-hf/clapper/tree/main), you can try it at [Clapper.app](https://clapper.app/)

# Badges

- Build and tests status: [![E2E & Unit Tests](https://github.com/jbilcke-hf/clapper/actions/workflows/tests.yml/badge.svg)](https://github.com/jbilcke-hf/clapper/actions/workflows/tests.yml)

- Sponsor a feature: (temporary disabled due to an issue with the bounty provider)

# Bounty Sponsors

Those generous sponsors are paying for code bounties:

- Moon ([github](https://github.com/lalalune), [twitter](https://x.com/spatialweeb), [website](https://www.moon.graphics))

# Want to contribute?

## For users or corporations

### Sponsor specific features

!!  ATTENTION: there is currently an issue with the platform we initially used for bounties. We are looking for an alternative solution. !!

If you wish to sponsor the project, help attract new developers, or promote a specific feature faster, you can open a bounty for a specific ticket (eg `"fix music segment duration"`, `"add support for Adobe Premiere Pro export"`, `"finish .fbx integration"`) and open-source community members will be able to submit pull requests to solve them.

If you submit (to pay) or take on (to earn) a bounty, please post a message in the GitHub thread and/or on [Discord](https://discord.com/invite/AEruz9B92B) to help everyone coordinate around it.

I am currently working to add documentation to help onboard new developers, this should help new people taking on bounties.

## For developers

### Licence

Clapper is under a GPL v3 licence, see the [LICENCE](LICENSE.txt) file for more information. This is a similar licensing to apps like ComfyUI or Blender.


### Installation

### Prerequisites

As a prerequisite you need to have [git lfs](https://git-lfs.com/) installed (see the `.gitattributes` file at the root of project):

```bash
git lfs install
```

You will also need to install [Bun](https://bun.sh/docs/installation)

Clapper has been tested with Node `20.15.1`.

To make sure you use this version, you can use [NVM](https://github.com/nvm-sh/nvm) to activate it:

```bash
nvm install
nvm use
```

If you find that Clapper is working with a more recent (stable) version of Node, or have a better version management to suggest, please open a ticket.

### Installation

Install the dependencies.

`--include=optional` is to make sure optional dependencies are installed (pre-build native modules compatible with your system)

```bash
bun i
```

You can run the following command to build the app, making sure all the types are consistant and properly set:

```bash
npm run build
```

### Running the web app


Then run the actual app, the first time you go to localhost:3000 after typing this command, the app will compile, which can take a minute (like, literally: `Compiled / in 52.6s (6372 modules)`)

```bash
bun run dev
```

### Running the app with Electron


An Electron build is in progress.

There are still some things to debug and figure out, but if you are a developer you can try it out by starting Clapper through Electron like this:


```bash
cd packages/app
bun run electron:start
```

If that doesn't work for you (issue with node-gyp, setuptools, distutils etc) you might have to run:

```bash
python3 -m pip install --break-system-packages setuptools
```

You can also build Clapper for your operating system by typing:

```bash
cd packages/app
bun run electron:make
```

You might see a DeprecationWarning message written in red at the end but that's only a warning, just open `./out/make` to check if the build worked.

### Code conventions

I have setup Prettier and ESLint, they use some basic rules (you can propose new rules if you want to)

### Testing

To run all the tests (unit and e2e) please run: 

```bash
bun run test
```

This is not instantaneous: playwright may seems to do nothing for a while at first.

@jbilcke-hf is working to add more tests, and will also act as the "QA engineer".

#### Unit tests

Note: I've just added Vitest so we only have a few tests for now.


To run the test without watching, type:

```bash
cd packages/app
bun run test:unit:ci
```

To run the tests with watching, type:

```bash
cd packages/app
bun run test:unit:watch
```

#### End-to-end tests

Note: I've just added Playwright, but we don't really have tests yet.

Please note that due to the app needing to build during 30~60s (depending on the speed of your computer), running those tests may
take some time to execute.

`bun run test:e2e`

More Playwright commands:
  `bunx playwright test`
    Runs the end-to-end tests.

  `bunx playwright test --ui`
    Starts the interactive UI mode.

  `bunx playwright test --project=chromium`
    Runs the tests only on Desktop Chrome.

  `bunx playwright test example`
    Runs the tests in a specific file.

 ` bunx playwright test --debug`
    Runs the tests in debug mode.

  `bunx playwright codegen`
    Auto generate tests with Codegen.

We suggest that you begin by typing:

    `bunx playwright test`


### Architecture

![Arch|800](documentation/diagrams/architecture-draft.png)

For convenience, you can access and inspect any of the services at runtime (in the browser's JS console) by typing `useUI.getState(), useIO.getState()` etc