claperco / claper Goto Github PK
View Code? Open in Web Editor NEWThe ultimate tool to interact with your audience
Home Page: https://claper.co
License: GNU General Public License v3.0
The ultimate tool to interact with your audience
Home Page: https://claper.co
License: GNU General Public License v3.0
Hello,
thanks for the project.
I wanted to install it in my trafik cluster behind a trafik reverse proxy.
For this I build the following docker-compose.yml file.
# docker-compose.yml
version: '3'
services:
claper:
#build: .
image: ghcr.io/claperco/claper:main
container_name: claper
restart: always
security_opt:
- no-new-privileges:true
environment:
DATABASE_URL: postgresql://claper:claper@postgres:5432/claper
SECRET_KEY_BASE: kjsdfhkhjfkjdshkfjhds
#ENDPOINT_HOST: claper.mydomain.com
#ENDPOINT_PORT: 4000
networks:
- default
- intern
labels:
- "traefik.enable=true"
- "traefik.http.routers.claper.tls=true"
- "traefik.http.routers.claper.rule=Host(`claper.mydomain.com`)"
- "traefik.http.routers.claper.entrypoints=web"
- "traefik.http.services.claper.loadbalancer.server.port=4000"
- "traefik.http.routers.claper.tls.certresolver=letsencrypt"
postgres:
#build: .
image: postgres:9
restart: always
environment:
POSTGRES_PASSWORD: claper
POSTGRES_USER: claper
POSTGRES_DB: claper
security_opt:
- no-new-privileges:true
networks:
- intern
networks:
default:
external:
name: gateway
intern:
internal: true
Did anyone tried it already with a reverse-Proxy in front of the Claper service?
The claper container is starting and it says:
claper | 09:05:43.314 [info] Running ClaperWeb.Endpoint with cowboy 2.9.0 at :::4000 (http)
claper | 09:05:43.335 [info] Access ClaperWeb.Endpoint at http://localhost
When ENABLE_ACCOUNT_CREATION = false
, restrict the registration endpoint
Add more informations in the doc about how S3 is involved with storage of presentation assets. And supporting other s3 compatible provider (Minio, etc).
I'm trying to deploy Claper.
It's reloading permanently with this log:
claper-app | [error] Could not check origin for Phoenix.Socket transport.
claper-app | Origin of the request: https://mydomain.com
claper-app |
claper-app | This happens when you are attempting a socket connection to
claper-app | a different host than the one configured in your config/
claper-app | files. For example, in development the host is configured
claper-app | to "localhost" but you may be trying to access it from
claper-app | "127.0.0.1". To fix this issue, you may either:
claper-app |
claper-app | 1. update [url: [host: ...]] to your actual host in the
claper-app | config file for your current environment (recommended)
claper-app |
claper-app | 2. pass the :check_origin option when configuring your
claper-app | endpoint or when configuring the transport in your
claper-app | UserSocket module, explicitly outlining which origins
claper-app | are allowed:
claper-app |
claper-app | check_origin: ["https://example.com",
claper-app | "//another.com:888", "//other.com"]
claper-app |
claper-app |
claper-app | 19:34:37.369 request_id=FzfPQ_TanPBAkVUAAAVx [info] GET /events/new
claper-app | 19:34:37.373 request_id=FzfPQ_TanPBAkVUAAAVx [info] Sent 200 in 4ms
What am I doing wrong? Claper is behind my Nginx Proxy Manager.
The present qrcode may be difficult to read with a bad quality LCD/Projectior.
Please add an option to generate a more readabe image.
I am starting with just the default docker-compose with no changes at all for AMD and starts buck crashes or starts but doesn't show a web interface.
ditto when using the ARM based instructions.
Any Docker held would be appreciated
Hi,
I was wondering if there could be an option to make answers in pools changable after clicking "Vote" button.
Also Great work guys! Keep it up!
Add a toggle "Show only pinned messages".
Add a "Pin"/"Unpin" action to a message
On the messages box, with all messages, show the pinned messages first.
Show only pinned messages in the presenter if toggle "Show only pinned messages" is enabled.
Add a "Pinned" flag to a message when pinned
= true
Use this icon:
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-pin-filled" width="12" height="12" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M15.113 3.21l.094 .083l5.5 5.5a1 1 0 0 1 -1.175 1.59l-3.172 3.171l-1.424 3.797a1 1 0 0 1 -.158 .277l-.07 .08l-1.5 1.5a1 1 0 0 1 -1.32 .082l-.095 -.083l-2.793 -2.792l-3.793 3.792a1 1 0 0 1 -1.497 -1.32l.083 -.094l3.792 -3.793l-2.792 -2.793a1 1 0 0 1 -.083 -1.32l.083 -.094l1.5 -1.5a1 1 0 0 1 .258 -.187l.098 -.042l3.796 -1.425l3.171 -3.17a1 1 0 0 1 1.497 -1.26z" stroke-width="0" fill="currentColor"></path>
</svg>
Use an SVG file like the "Host" badge.
When "Show only pinned messages" toggle is changed, change the show_only_pinned
value of the presentation_states
table and broadcast the change to all (presenter + manager + attendees).
When "Pin"/"Unpin" on Manager is clicked on a message, change the pinned
value of a message (posts
table)
Add a new column show_only_pinned
(bool) to presentation_states
table.
Add a new column pinned
(bool) to posts
table.
Hi,
I'm trying to use ClaperCo through Docker.
Does it needs to have an empty database available or it needs to have a database with the ClaperCo schema already available?
Thanks.
Add a features section and a page for each of the main features
Hello,
Very interesting project! Thanks for you work.
Here is a list of features that could be great:
Context
As an admin sys, I would like to test Claper on my local machine before installing it for my company
Describe the bug
Steps to reproduce
docker run -p 5432:5432 -e POSTGRES_PASSWORD=claper -e POSTGRES_USER=claper -e POSTGRES_DB=claper --name claper-db -d postgres:9
(works fine)docker build -t claper .
(works fine)docker run -p 4000:4000 -d claper
ERROR! Config provider Config.Reader failed with:
{"init terminating in do_boot",{#{'__exception__'=>true,'__struct__'=>'Elixir.RuntimeError',message=><<101,110,118,105,114,111,110,109,101,110,116,32,118,97,114,105,97,98,108,101,32,68,65,84,65,66,65,83,69,95,85,82,76,32,105,115,32,109,105,115,115,105,110,103,46,10,70,111,114,32,101,120,97,109,112,108,101,58,32,101,99,116,111,58,47,47,85,83,69,82,58,80,65,83,83,64,72,79,83,84,47,68,65,84,65,66,65,83,69,10>>},[{erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,685},{error_info,#{module=>'Elixir.Exception'}}]},{erl_eval,expr,5,[{file,"erl_eval.erl"},{line,446}]},{erl_eval,exprs,5,[{file,"erl_eval.erl"},{line,123}]},{elixir,recur_eval,3,[{file,"src/elixir.erl"},{line,289}]},{elixir,eval_forms,3,[{file,"src/elixir.erl"},{line,274}]},{'Elixir.Code',validated_eval_string,3,[{file,"lib/code.ex"},{line,404}]},{'Elixir.Config','__eval__!',3,[{file,"lib/config.ex"},{line,260}]},{'Elixir.Config.Reader','read!',2,[{file,"lib/config/reader.ex"},{line,92}]}]}}
init terminating in do_boot ({,[{erl_eval,do_apply,6,[{_},{_},{_}]},{erl_eval,expr,5,[{_},{_}]},{erl_eval,exprs,5,[{_},{_}]},{elixir,recur_eval,3,[{_},{_}]},{elixir,eval_forms,3,[{_},{_}]},{Elixir.Code,validated_eval_string,3,[{_},{_}]},{Elixir.Config,__eval__!,3,[{_},{_}]},{Elixir.Config.Reader,read!,2,[{_},{_}]}]})
** (RuntimeError) environment variable DATABASE_URL is missing.
For example: ecto://USER:PASS@HOST/DATABASE
(stdlib 3.17) erl_eval.erl:685: :erl_eval.do_apply/6
(stdlib 3.17) erl_eval.erl:446: :erl_eval.expr/5
(stdlib 3.17) erl_eval.erl:123: :erl_eval.exprs/5
(elixir 1.13.2) src/elixir.erl:289: :elixir.recur_eval/3
(elixir 1.13.2) src/elixir.erl:274: :elixir.eval_forms/3
(elixir 1.13.2) lib/code.ex:404: Code.validated_eval_string/3
(elixir 1.13.2) lib/config.ex:260: Config.__eval__!/3
(elixir 1.13.2) lib/config/reader.ex:92: Config.Reader.read!/2
Crash dump is being written to: erl_crash.dump...done
From what I see, the container do not detect the Postgres database anywhere.
Other information
This issue seems to be linked to the Docker containerization solely, since I tried the Elixir install using mix
and I worked fine ๐
Add kubernetes configuration
Polls that have more than a few (more than 3-4) options on most mobile devices will take up the entire screen. The poll itself appears to be a modal overlay on top of the backdrop of the web app. The modal itself does not allow for scrolling, which means if you have 5+ options, polls cannot be completed on mobile devices.
Expected behavior: longer polls with many (5+ options) allow for scrolling to select later options as well as voting/submission.
Produced behavior: polls with many options display the poll modal with later options off screen, causing both options and voting to be inaccessible.
We would like to know if there is any way we could inlcude the notes from within the PPTX when uploading the original presentation. These should be then displayed only in the presenters view.
This will greatly help us in maintaing a coherent presentation.
Replace builder image with ARG BUILDER_IMAGE="hexpm/elixir-arm64:1.13.2-erlang-24.2.1-debian-bullseye-20210902-slim"
It would be nice to be able to control the screen settings (show instructions, show messages, show poll results) by keyboard. So the mouse is not needed.
Hello,
I wanted to bring up the idea of adding a feature to hide the current poll results. This would be beneficial for quizzes as it would prevent participants from being influenced by the current voting trends and promote more independent answers.
I can set this up and provide screenshots and demos, but running this for a few presentations this is one of two issues I ran into.
Expected behavior: chat messages sent will wrap at end of word or hyphenate words when feasible.
Produced behavior: chat messages are wrapped at the character limit for lines, regardless of the location within a word.
Basically, allow people to vote a number from 1-10, rating a performer in a talent show or other competition. Then, average all the inputs, making a rating for the performer. Maybe allow a difference of 60-40% weight for judges vs audience, or an adjustable weighting.
When starting the application returns error below
** (CompileError) config/config.exs:8: module Config is not loaded and could not be found.
Kindly review
Improve documentation about domain configuration + fix error:
[error] Could not check origin for Phoenix.Socket transport.
Origin of the request: https://clapper.some.domain/
This happens when you are attempting a socket connection to a different host than the one configured in your config/files.
For example, in development the host is configuredto "localhost" but you may be trying to access it from"127.0.0.1".
To fix this issue, you may either:
1. update [url: [host: ...]] to your actual host in the config file for your current environment (recommended)
2. pass the :check_origin option when configuring your endpoint or when configuring the transport in your UserSocket module, explicitly outlining which origins are allowed: check_origin: ["https://example.com", "//another.com:888", "[//other.com](https://other.com/)"]
The following is an error when I try to run docker run -e DATABASE_URL=claper-db -e SECRET_KEY_BASE=key -p 4000:4000 claper
(Ecto.InvalidURLError) invalid url claper-db, host is not present. The parsed URL is: %URI{authority: nil, fragment: nil, host: nil, path: "claper-db", port: nil, query: nil, scheme: nil, userinfo: nil}
lib/ecto/repo/supervisor.ex:92: Ecto.Repo.Supervisor.parse_url/1
lib/ecto/repo/supervisor.ex:28: Ecto.Repo.Supervisor.runtime_config/4
(claper 1.2.0) lib/claper/repo.ex:2: Claper.Repo.config/0
lib/ecto/migrator.ex:126: Ecto.Migrator.with_repo/3
(claper 1.2.0) lib/claper/release.ex:14: anonymous fn/2 in Claper.Release.migrate/0
(elixir 1.13.2) lib/enum.ex:2396: Enum."-reduce/3-lists^foldl/2-0-"/3
(claper 1.2.0) lib/claper/release.ex:13: Claper.Release.migrate/0
(stdlib 3.17) erl_eval.erl:685: :erl_eval.do_apply/6
Define the persistent volume for PGSQL data, for example:
volumes:
- ./postgres-data:/var/lib/postgresql/data
Hi,
I updated parts of the German translation on POEditor. Is there some way to update the files in the Docker container to check which ones need to be updated as well?
I would appreciate it if you could provide a docker image, which is compiled for amd64.
Until now, when running the docker compose on an apple M1 or Raspberry Pi, there is an error standard_init_linux.go:228: exec user process caused: exec format error
.
This error could be issued by several possibilities. One is the wrong docker image. This could also be issued by wrong script encoding or missing/wrong shebang.
Please take a look and make it runnable on the mentioned platforms.
Related: #16
Hello,
Everytime I deploy a new update of the app, the uploaded presentation stored in upload
gets lost.
How can I prevent that ? I guess I have to add a volume in Docker, but what is the directory in the application to use then?
Thanks.
The discod invite on https://claper.co/ seems to be invalid or expired.
It would be very helpful to have a way to turn on multiple choice answers.
Context
As a developer, I would like to have the possibility to use Claper in the language of my audience.
Solution(s)
Awesome app!
I've got ENABLE_ACCOUNT_CREATION:false in .env but, for some reason, the Create Account link still shows and it's still possible to create an account.
I would appreciate any suggestions about what I'm doing wrong.
Ubuntu 22.04.2 LTS
Docker client 23.0.1
Docker server 20.10.23
This is possibly known or correct behaviour however I had assumed passing the env would disable the ability to create an account however it removes the option to create an account from the UI but allows account creation by navigating to https://example.com/users/register.
This could be handled by LB or proxy but thought it may be worth clarifying in documentation if this is the correct behavior
It would be nice to have all environment variable already added to compose files with a default value.
Hello,
I'm trying to get Claper in Nix, I'm opening this issue just in case if I have questions related to the packaging of the app.
Follow the work in here: NixOS/nixpkgs#201607
Related Claper pull requests:
Also, congrats for this great piece of software, it's a very nice one :)
Keep up the good work!
It would be nice to use a limited formatting in the poll text. At least the ability to enter a new-line with CTRL-ENTER.
Another way is to add a rich formatted filed for the poll introduction.
Example:
Introduction:
Welcome to our presentation !
Please feel free to interact.
Question:
How was the commuting ?
Answers:
( ) good
( ) bad
Hi Claper!
I'm working in my free time for an environmental organization, and we're considering moving from wooclap to Claper.
I've just tested the app and it seems great, thanks a lot for the good work (unfortunately, we don't rely on stable financing, so it's difficult to contribute more than a few bucks)!
Our use case is that we have a template presentation that different people will use to present, with a few slides changing from a presentation to another.
One feature we miss during the test was the possibility to have a template presentation allowing not to rewrite each interaction for each presentation. The system wooclap had in integration with ggl slides was quite simple : a title and a link as metadata in the comment section.
If this is possible to do within a pptx file import, it would greatly help us in our future presentations. I can be more precise in a later comment if useful!
Add an "Embed" interaction on a slide like a Youtube video or any website with an iframe
.
You can take inspiration from other interactions like Polls or Forms.
When an embed is enabled and is in the current slide position, show it in full screen.
When clicking on "Add interraction", add this option to the popup:
Use this icon:
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
<path stroke-linecap="round" stroke-linejoin="round" d="M14.25 9.75L16.5 12l-2.25 2.25m-4.5 0L7.5 12l2.25-2.25M6 20.25h12A2.25 2.25 0 0020.25 18V6A2.25 2.25 0 0018 3.75H6A2.25 2.25 0 003.75 6v12A2.25 2.25 0 006 20.25z" />
</svg>
When selecting "Embed", show a form with fields title
and content
(get your inspirations from other interactions like Polls and Forms).
The content
field is a textarea and the user has to fill it with an iframe. (<iframe></iframe>
)
When added, you can enable it (like any other interactions). Do not forget: By enabling an interaction, you have to disable the others (only one enabled interaction by slide).
Display embed, if present, on the current slide in the report.
When an Embed is added, broadcast it to all (presenter + manager + attendees). Like I said before, take your inspiration from other interactions like Forms or Polls.
When an Embed is enabled, disable any other interaction on the current slide.
Add a table embeds
with columns title
(string), content
(string), position
(int), presentation_file_id
(int / foreign key), enabled
(bool), inserted_at
(timestamp), updated_at
(timestamp).
I have set up Email SMTP but unfortunately it doesn't work.
Tried port 465, port 587 SSL, TLS, everything, unfortunately nothing works.
New to docker just getting setup locally but it seems like I still have a 15mb limit? I have a presentation approx 500mb was hoping to try this out with. Is it possible to accomplish this?
Hello,
as introduced in my last issue I have a feature request.
It would be great, if there is a possibility to create a presentation witout a user account.
So a presentaion could be created and edited with an admin link and not with an account.
This would improve the project so much.
To make the admin much more secure, it would be possible to send a JWT in the link to make sure, the editor is authenticated.
Hi!
Just another note from the testing process.
I must have put a wrong presentation finish time. I've just finished to prepare my intervention, I now have a "Finished" label on it.
Would be great to have the option to either represent or copy the presentation totally.
Thanks again, I hope this is useful feedback.
Secure the endpoint /dev/mailbox
if MAIL_TRANSPORT = local
I'm noticing that the uploads' folder is not being retained, and in fact nothing is being inserted into the folder.
I've tested this on the main and dev branches.
Docker config
services:
db:
image: postgres:9
ports:
- 5432:5432
environment:
POSTGRES_PASSWORD: claper
POSTGRES_USER: claper
POSTGRES_DB: claper
volumes:
- /opt/Claper/db:/var/lib/postgresql/data
app:
image: ghcr.io/claperco/claper:dev
ports:
- 4000:4000
volumes:
- /opt/Claper/uploads:/app/priv/static/uploads
environment:
PRESENTATION_STORAGE: "local"
DATABASE_URL: postgres://claper:claper@db:5432/claper
SECRET_KEY_BASE: 0LZiQBLw4WvqPlz4cz8RsHJlxNiSqM9B48y4ChyJ5v1oA0L/TPIqRjQNdPZN3iEG
MAIL_TRANSPORT: smtp
ENDPOINT_PORT: 443
ENDPOINT_HOST: "hidden"
SMTP_RELAY: "smtp-relay.brevo.com"
MAIL_FROM_NAME: "hidden"
SMTP_USERNAME: "hidden"
SMTP_PASSWORD: "hidden"
SMTP_PORT: "587"
SMTP_TLS: "if_available"
depends_on:
- db
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.