You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## ⚠️ Breaking changes
- S3 variables are now named: S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_REGION and S3_BUCKET
- Users now have roles. Refer to the `roles` table and assign a role to a user with the `role_id` column in the `users` table.
## Features
- Add Admin Panel to manage users and presentations
- Add user roles: user, admin
- Add `LANGUAGES` setting to configure available languages in the app
- Add hideable presenter attendee count (#183#155)
- Add Hungarian translation (#161)
- Add Latvian translation (#163)
- Add custom S3 endpoint with `S3_SCHEME`, `S3_HOST`, `S3_PORT` and `S3_PUBLIC_URL`
## Fixes and improvements
- Upgrade JS dependencies
- Upgrade Elixir dependencies, including Phoenix Live View to 1.0.17
- Upgrade to Tailwind 4+
- Refactor view templates to use {} instead of <%= %>
- Fix event name validation to be required
- Docker image is now using Ubuntu instead of Alpine for better dependencies support
- Fix scrollbar not showing in event manager when no presentation file (#164) (@aryel780)
- Fix settings scroll for small screen (#168)
- Fix duplicate key quiz when duplicate (#182)
- Fix email change confirmation (#172)
- Fix italian translation (#179)
- Fix random poll choices (#184)
Claper is an interactive presentation platform built with Phoenix Framework and Elixir. It enables real-time audience interaction during presentations through polls, forms, messages, and quizzes.
60
+
61
+
### Core Components
62
+
63
+
1.**Phoenix LiveView Architecture**
64
+
- Real-time updates without JavaScript through WebSocket connections
65
+
- LiveView modules in `lib/claper_web/live/` handle interactive UI
66
+
- Presence tracking for real-time user counts
67
+
68
+
2.**Main Domain Contexts** (in `lib/claper/`)
69
+
-`Accounts` - User management, authentication, OIDC integration
70
+
-`Events` - Core presentation/event management
71
+
-`Posts` - Audience messages and reactions
72
+
-`Polls` - Interactive polls with real-time voting
73
+
-`Forms` - Custom forms for audience feedback
74
+
-`Quizzes` - Quiz functionality with LTI support
75
+
-`Presentations` - Slide management and state tracking
76
+
-`Embeds` - External content embedding
77
+
78
+
3.**Authentication & Authorization**
79
+
- Multiple auth methods: email/password, OIDC
80
+
- Role-based access control with admin panel
81
+
- LTI 1.3 support for educational platforms
82
+
83
+
4.**Real-time Features**
84
+
- Phoenix PubSub for broadcasting updates
85
+
- Phoenix Presence for tracking online users
86
+
- LiveView for reactive UI without custom JavaScript
87
+
88
+
5.**Background Jobs**
89
+
- Oban for background job processing
90
+
- Email sending
91
+
92
+
6.**Frontend Stack**
93
+
- Tailwind CSS for styling (with DaisyUI components)
94
+
- Alpine.js for minimal JavaScript interactions
95
+
- esbuild for JavaScript bundling
96
+
- Separate admin and user interfaces
97
+
98
+
7.**Key LiveView Modules**
99
+
-`EventLive.Show` - Attendee view
100
+
-`EventLive.Presenter` - Presenter control view
101
+
-`EventLive.Manage` - Event management interface
102
+
-`AdminLive.*` - Admin panel components
103
+
104
+
8.**Database Structure**
105
+
- PostgreSQL with Ecto
106
+
- Key models: User, Event, Post, Poll, Quiz, PresentationState
107
+
- Soft deletes for users
108
+
- UUID-based public identifiers
109
+
110
+
9.**LTI Integration**
111
+
- LTI 1.3 support for quizzes, publish score to LMS
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,7 +34,7 @@ Claper has a two-sided mission:
34
34
- The first one is to help these people presenting an idea or a message by giving them the opportunity to make their presentation unique and to have real-time feedback from their audience.
35
35
- The second one is to help each participant to take their place, to be an actor in the presentation, in the meeting and to feel important and useful.
0 commit comments