open_fresk 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +64 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +248 -0
- data/MIT-LICENSE +20 -0
- data/README.md +130 -0
- data/Rakefile +8 -0
- data/app/.DS_Store +0 -0
- data/app/assets/.DS_Store +0 -0
- data/app/assets/config/manifest.js +20 -0
- data/app/assets/images/open_fresk/.keep +0 -0
- data/app/assets/images/open_fresk/favicon.png +0 -0
- data/app/assets/images/open_fresk/logos/logo.png +0 -0
- data/app/assets/stylesheets/open_fresk/application.scss +90 -0
- data/app/assets/stylesheets/open_fresk/components/_accordion.scss +3 -0
- data/app/assets/stylesheets/open_fresk/components/_btn.scss +25 -0
- data/app/assets/stylesheets/open_fresk/components/_btn_toggle.scss +16 -0
- data/app/assets/stylesheets/open_fresk/components/_card.scss +6 -0
- data/app/assets/stylesheets/open_fresk/components/_checkout.scss +142 -0
- data/app/assets/stylesheets/open_fresk/components/_cursors.scss +35 -0
- data/app/assets/stylesheets/open_fresk/components/_dropdown_toggle.scss +9 -0
- data/app/assets/stylesheets/open_fresk/components/_form.scss +22 -0
- data/app/assets/stylesheets/open_fresk/components/_google_maps_autocomplete.scss +3 -0
- data/app/assets/stylesheets/open_fresk/components/_hamburger_button.scss +41 -0
- data/app/assets/stylesheets/open_fresk/components/_header.scss +57 -0
- data/app/assets/stylesheets/open_fresk/components/_iframe.scss +26 -0
- data/app/assets/stylesheets/open_fresk/components/_index.scss +22 -0
- data/app/assets/stylesheets/open_fresk/components/_nav_pills.scss +26 -0
- data/app/assets/stylesheets/open_fresk/components/_nps_progress_bar.scss +97 -0
- data/app/assets/stylesheets/open_fresk/components/_pagination.scss +11 -0
- data/app/assets/stylesheets/open_fresk/components/_progress_bar.scss +17 -0
- data/app/assets/stylesheets/open_fresk/components/_radio_button.scss +25 -0
- data/app/assets/stylesheets/open_fresk/components/_range.scss +253 -0
- data/app/assets/stylesheets/open_fresk/components/_select_input.scss +9 -0
- data/app/assets/stylesheets/open_fresk/components/_slider.scss +61 -0
- data/app/assets/stylesheets/open_fresk/components/_slim_select.scss +31 -0
- data/app/assets/stylesheets/open_fresk/components/_timeline.scss +165 -0
- data/app/assets/stylesheets/open_fresk/components/_tooltip.scss +20 -0
- data/app/assets/stylesheets/open_fresk/components/_transformation.scss +4 -0
- data/app/assets/stylesheets/open_fresk/config/_belts.scss +38 -0
- data/app/assets/stylesheets/open_fresk/config/_bg.scss +6 -0
- data/app/assets/stylesheets/open_fresk/config/_border.scss +15 -0
- data/app/assets/stylesheets/open_fresk/config/_colors.scss +42 -0
- data/app/assets/stylesheets/open_fresk/config/_index.scss +6 -0
- data/app/assets/stylesheets/open_fresk/config/_text.scss +24 -0
- data/app/assets/stylesheets/open_fresk/config/_typography.scss +26 -0
- data/app/assets/stylesheets/open_fresk/external_libraries/_actiontext.scss +30 -0
- data/app/assets/stylesheets/open_fresk/external_libraries/_slimselect.min.scss +1 -0
- data/app/assets/stylesheets/open_fresk/external_libraries/index.scss +2 -0
- data/app/assets/stylesheets/open_fresk/pages/_index.scss +1 -0
- data/app/assets/stylesheets/open_fresk/pages/_signin.scss +10 -0
- data/app/assets/stylesheets-original/open_fresk/application.css +90 -0
- data/app/controllers/.DS_Store +0 -0
- data/app/controllers/concerns/.keep +0 -0
- data/app/controllers/concerns/open_fresk/authentication.rb +18 -0
- data/app/controllers/open_fresk/application_controller.rb +5 -0
- data/app/controllers/open_fresk/sessions_controller.rb +38 -0
- data/app/controllers/open_fresk/training_sessions_controller.rb +17 -0
- data/app/extensions/open_fresk/core_extensions/string.rb +13 -0
- data/app/helpers/header_helper.rb +2 -0
- data/app/helpers/open_fresk/application_helper.rb +18 -0
- data/app/helpers/plateform_access/rights_helper.rb +15 -0
- data/app/javascript/manifest.json +15 -0
- data/app/javascript/open_fresk/application.js +7 -0
- data/app/javascript/open_fresk/controllers/hello_controller.js +7 -0
- data/app/jobs/open_fresk/application_job.rb +4 -0
- data/app/mailers/open_fresk/application_mailer.rb +6 -0
- data/app/models/.DS_Store +0 -0
- data/app/models/concerns/.keep +0 -0
- data/app/models/open_fresk/application_record.rb +10 -0
- data/app/models/open_fresk/training_session.rb +9 -0
- data/app/models/open_fresk/user.rb +9 -0
- data/app/services/open_fresk/extensions/string_enum.rb +201 -0
- data/app/views/layouts/header/_hamburger.html.erb +7 -0
- data/app/views/layouts/header/_logo.html.erb +5 -0
- data/app/views/layouts/open_fresk/_alert.html.erb +0 -0
- data/app/views/layouts/open_fresk/_footer.html.erb +0 -0
- data/app/views/layouts/open_fresk/_header.html.erb +12 -0
- data/app/views/layouts/open_fresk/_include.html.erb +24 -0
- data/app/views/layouts/open_fresk/_meta.html.erb +10 -0
- data/app/views/layouts/open_fresk/application.html.erb +23 -0
- data/app/views/open_fresk/sessions/_login.html.erb +16 -0
- data/app/views/open_fresk/sessions/new.html.erb +8 -0
- data/app/views/open_fresk/training_sessions/_card.html.erb +0 -0
- data/app/views/open_fresk/training_sessions/index.html.erb +22 -0
- data/bin/rails +14 -0
- data/config/importmap.rb +6 -0
- data/config/locales/en.yml +15 -0
- data/config/locales/fr.yml +15 -0
- data/config/routes.rb +8 -0
- data/lib/.DS_Store +0 -0
- data/lib/open_fresk/engine.rb +93 -0
- data/lib/open_fresk/version.rb +3 -0
- data/lib/open_fresk.rb +6 -0
- data/lib/tasks/open_fresk_tasks.rake +4 -0
- data/open_fresk.gemspec +29 -0
- metadata +250 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f3b7411c12791ed9c4f8b908fd3c0bede0c7a6d80b58d6c85bb0215274e40bdb
|
4
|
+
data.tar.gz: de22c2223823a8028bfde992ab593d8758c2109d131357cf11a26f55ca19c325
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 272612bfb2c1d4e79445a20117d6992705e4dda18477230c67bd82d7efbbbe2d1639cac5de8bc700024e1f0b39d12fc479c7863cec31411e599f97a3b71b4084
|
7
|
+
data.tar.gz: 91fd754be5189d8111024e6535bc6f43d8356aa493498d85e45431050851cd290783d76d7a94170ccaf9e03347b11a30b1b92811c57860fa14c07931060fb876
|
data/.gitignore
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
# Bundler configuration and caches
|
2
|
+
.bundle/
|
3
|
+
vendor/bundle/
|
4
|
+
|
5
|
+
# Ignore built gem packages and packaging directories
|
6
|
+
*.gem
|
7
|
+
pkg/
|
8
|
+
|
9
|
+
# Log and temp files from Rails
|
10
|
+
log/*
|
11
|
+
!log/.keep
|
12
|
+
tmp/*
|
13
|
+
!tmp/.keep
|
14
|
+
*.log
|
15
|
+
|
16
|
+
# Compiled assets and precompiled files
|
17
|
+
public/assets
|
18
|
+
public/packs
|
19
|
+
public/packs-test
|
20
|
+
public/system
|
21
|
+
public/uploads
|
22
|
+
|
23
|
+
# Node.js dependencies and Yarn files (if you are using these)
|
24
|
+
node_modules/
|
25
|
+
yarn-error.log*
|
26
|
+
.yarn-integrity
|
27
|
+
|
28
|
+
# Build and distribution directories
|
29
|
+
build/
|
30
|
+
dist/
|
31
|
+
|
32
|
+
# OS-specific files
|
33
|
+
.DS_Store
|
34
|
+
Thumbs.db
|
35
|
+
|
36
|
+
# Editor and IDE temporary files
|
37
|
+
*.swp
|
38
|
+
*.swo
|
39
|
+
*~
|
40
|
+
.idea/
|
41
|
+
.vscode/
|
42
|
+
*.iml
|
43
|
+
|
44
|
+
# Test and coverage artifacts
|
45
|
+
coverage/
|
46
|
+
spec/reports/
|
47
|
+
.rspec
|
48
|
+
|
49
|
+
# Debug and byebug history
|
50
|
+
.byebug_history
|
51
|
+
|
52
|
+
# Sensitive configuration files (do not commit credentials or master key)
|
53
|
+
config/master.key
|
54
|
+
config/credentials.yml.enc
|
55
|
+
|
56
|
+
# Environment files (used by dotenv or similar gems)
|
57
|
+
.env
|
58
|
+
.env.*
|
59
|
+
|
60
|
+
# Other miscellaneous temporary files
|
61
|
+
*.rbc
|
62
|
+
|
63
|
+
test/dummy/tmp/
|
64
|
+
*.log
|
data/Gemfile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
ruby "3.2.2"
|
4
|
+
|
5
|
+
# Use the gemspec for production dependency resolution.
|
6
|
+
gemspec
|
7
|
+
|
8
|
+
group :development, :test do
|
9
|
+
gem "rubocop-rails-omakase", require: false
|
10
|
+
# Uncomment the next line if you need a debugger during development:
|
11
|
+
# gem "debug", ">= 1.0.0"
|
12
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,248 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
open_fresk (0.1.1)
|
5
|
+
bootstrap (= 5.3.1)
|
6
|
+
concurrent-ruby (= 1.3.4)
|
7
|
+
font_awesome5_rails (= 1.5.0)
|
8
|
+
pg
|
9
|
+
puma
|
10
|
+
rails (= 7.0.8.1)
|
11
|
+
sass-rails (>= 6)
|
12
|
+
sprockets-rails
|
13
|
+
|
14
|
+
GEM
|
15
|
+
remote: https://rubygems.org/
|
16
|
+
specs:
|
17
|
+
actioncable (7.0.8.1)
|
18
|
+
actionpack (= 7.0.8.1)
|
19
|
+
activesupport (= 7.0.8.1)
|
20
|
+
nio4r (~> 2.0)
|
21
|
+
websocket-driver (>= 0.6.1)
|
22
|
+
actionmailbox (7.0.8.1)
|
23
|
+
actionpack (= 7.0.8.1)
|
24
|
+
activejob (= 7.0.8.1)
|
25
|
+
activerecord (= 7.0.8.1)
|
26
|
+
activestorage (= 7.0.8.1)
|
27
|
+
activesupport (= 7.0.8.1)
|
28
|
+
mail (>= 2.7.1)
|
29
|
+
net-imap
|
30
|
+
net-pop
|
31
|
+
net-smtp
|
32
|
+
actionmailer (7.0.8.1)
|
33
|
+
actionpack (= 7.0.8.1)
|
34
|
+
actionview (= 7.0.8.1)
|
35
|
+
activejob (= 7.0.8.1)
|
36
|
+
activesupport (= 7.0.8.1)
|
37
|
+
mail (~> 2.5, >= 2.5.4)
|
38
|
+
net-imap
|
39
|
+
net-pop
|
40
|
+
net-smtp
|
41
|
+
rails-dom-testing (~> 2.0)
|
42
|
+
actionpack (7.0.8.1)
|
43
|
+
actionview (= 7.0.8.1)
|
44
|
+
activesupport (= 7.0.8.1)
|
45
|
+
rack (~> 2.0, >= 2.2.4)
|
46
|
+
rack-test (>= 0.6.3)
|
47
|
+
rails-dom-testing (~> 2.0)
|
48
|
+
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
49
|
+
actiontext (7.0.8.1)
|
50
|
+
actionpack (= 7.0.8.1)
|
51
|
+
activerecord (= 7.0.8.1)
|
52
|
+
activestorage (= 7.0.8.1)
|
53
|
+
activesupport (= 7.0.8.1)
|
54
|
+
globalid (>= 0.6.0)
|
55
|
+
nokogiri (>= 1.8.5)
|
56
|
+
actionview (7.0.8.1)
|
57
|
+
activesupport (= 7.0.8.1)
|
58
|
+
builder (~> 3.1)
|
59
|
+
erubi (~> 1.4)
|
60
|
+
rails-dom-testing (~> 2.0)
|
61
|
+
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
62
|
+
activejob (7.0.8.1)
|
63
|
+
activesupport (= 7.0.8.1)
|
64
|
+
globalid (>= 0.3.6)
|
65
|
+
activemodel (7.0.8.1)
|
66
|
+
activesupport (= 7.0.8.1)
|
67
|
+
activerecord (7.0.8.1)
|
68
|
+
activemodel (= 7.0.8.1)
|
69
|
+
activesupport (= 7.0.8.1)
|
70
|
+
activestorage (7.0.8.1)
|
71
|
+
actionpack (= 7.0.8.1)
|
72
|
+
activejob (= 7.0.8.1)
|
73
|
+
activerecord (= 7.0.8.1)
|
74
|
+
activesupport (= 7.0.8.1)
|
75
|
+
marcel (~> 1.0)
|
76
|
+
mini_mime (>= 1.1.0)
|
77
|
+
activesupport (7.0.8.1)
|
78
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
79
|
+
i18n (>= 1.6, < 2)
|
80
|
+
minitest (>= 5.1)
|
81
|
+
tzinfo (~> 2.0)
|
82
|
+
ast (2.4.3)
|
83
|
+
autoprefixer-rails (10.4.21.0)
|
84
|
+
execjs (~> 2)
|
85
|
+
base64 (0.2.0)
|
86
|
+
bootstrap (5.3.1)
|
87
|
+
autoprefixer-rails (>= 9.1.0)
|
88
|
+
popper_js (>= 2.11.8, < 3)
|
89
|
+
sassc-rails (>= 2.0.0)
|
90
|
+
builder (3.3.0)
|
91
|
+
concurrent-ruby (1.3.4)
|
92
|
+
crass (1.0.6)
|
93
|
+
date (3.4.1)
|
94
|
+
erubi (1.13.1)
|
95
|
+
execjs (2.10.0)
|
96
|
+
ffi (1.17.2-arm64-darwin)
|
97
|
+
font_awesome5_rails (1.5.0)
|
98
|
+
nokogiri (>= 1.11.3)
|
99
|
+
railties (>= 4.2)
|
100
|
+
globalid (1.2.1)
|
101
|
+
activesupport (>= 6.1)
|
102
|
+
i18n (1.14.7)
|
103
|
+
concurrent-ruby (~> 1.0)
|
104
|
+
json (2.12.0)
|
105
|
+
language_server-protocol (3.17.0.5)
|
106
|
+
lint_roller (1.1.0)
|
107
|
+
logger (1.7.0)
|
108
|
+
loofah (2.24.1)
|
109
|
+
crass (~> 1.0.2)
|
110
|
+
nokogiri (>= 1.12.0)
|
111
|
+
mail (2.8.1)
|
112
|
+
mini_mime (>= 0.1.1)
|
113
|
+
net-imap
|
114
|
+
net-pop
|
115
|
+
net-smtp
|
116
|
+
marcel (1.0.4)
|
117
|
+
method_source (1.1.0)
|
118
|
+
mini_mime (1.1.5)
|
119
|
+
minitest (5.25.5)
|
120
|
+
net-imap (0.5.8)
|
121
|
+
date
|
122
|
+
net-protocol
|
123
|
+
net-pop (0.1.2)
|
124
|
+
net-protocol
|
125
|
+
net-protocol (0.2.2)
|
126
|
+
timeout
|
127
|
+
net-smtp (0.5.1)
|
128
|
+
net-protocol
|
129
|
+
nio4r (2.7.4)
|
130
|
+
nokogiri (1.18.8-arm64-darwin)
|
131
|
+
racc (~> 1.4)
|
132
|
+
parallel (1.27.0)
|
133
|
+
parser (3.3.8.0)
|
134
|
+
ast (~> 2.4.1)
|
135
|
+
racc
|
136
|
+
pg (1.5.9)
|
137
|
+
popper_js (2.11.8)
|
138
|
+
prism (1.4.0)
|
139
|
+
puma (6.6.0)
|
140
|
+
nio4r (~> 2.0)
|
141
|
+
racc (1.8.1)
|
142
|
+
rack (2.2.14)
|
143
|
+
rack-test (2.2.0)
|
144
|
+
rack (>= 1.3)
|
145
|
+
rails (7.0.8.1)
|
146
|
+
actioncable (= 7.0.8.1)
|
147
|
+
actionmailbox (= 7.0.8.1)
|
148
|
+
actionmailer (= 7.0.8.1)
|
149
|
+
actionpack (= 7.0.8.1)
|
150
|
+
actiontext (= 7.0.8.1)
|
151
|
+
actionview (= 7.0.8.1)
|
152
|
+
activejob (= 7.0.8.1)
|
153
|
+
activemodel (= 7.0.8.1)
|
154
|
+
activerecord (= 7.0.8.1)
|
155
|
+
activestorage (= 7.0.8.1)
|
156
|
+
activesupport (= 7.0.8.1)
|
157
|
+
bundler (>= 1.15.0)
|
158
|
+
railties (= 7.0.8.1)
|
159
|
+
rails-dom-testing (2.2.0)
|
160
|
+
activesupport (>= 5.0.0)
|
161
|
+
minitest
|
162
|
+
nokogiri (>= 1.6)
|
163
|
+
rails-html-sanitizer (1.6.2)
|
164
|
+
loofah (~> 2.21)
|
165
|
+
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
|
166
|
+
railties (7.0.8.1)
|
167
|
+
actionpack (= 7.0.8.1)
|
168
|
+
activesupport (= 7.0.8.1)
|
169
|
+
method_source
|
170
|
+
rake (>= 12.2)
|
171
|
+
thor (~> 1.0)
|
172
|
+
zeitwerk (~> 2.5)
|
173
|
+
rainbow (3.1.1)
|
174
|
+
rake (13.2.1)
|
175
|
+
regexp_parser (2.10.0)
|
176
|
+
rubocop (1.75.5)
|
177
|
+
json (~> 2.3)
|
178
|
+
language_server-protocol (~> 3.17.0.2)
|
179
|
+
lint_roller (~> 1.1.0)
|
180
|
+
parallel (~> 1.10)
|
181
|
+
parser (>= 3.3.0.2)
|
182
|
+
rainbow (>= 2.2.2, < 4.0)
|
183
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
184
|
+
rubocop-ast (>= 1.44.0, < 2.0)
|
185
|
+
ruby-progressbar (~> 1.7)
|
186
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
187
|
+
rubocop-ast (1.44.1)
|
188
|
+
parser (>= 3.3.7.2)
|
189
|
+
prism (~> 1.4)
|
190
|
+
rubocop-performance (1.25.0)
|
191
|
+
lint_roller (~> 1.1)
|
192
|
+
rubocop (>= 1.75.0, < 2.0)
|
193
|
+
rubocop-ast (>= 1.38.0, < 2.0)
|
194
|
+
rubocop-rails (2.31.0)
|
195
|
+
activesupport (>= 4.2.0)
|
196
|
+
lint_roller (~> 1.1)
|
197
|
+
rack (>= 1.1)
|
198
|
+
rubocop (>= 1.75.0, < 2.0)
|
199
|
+
rubocop-ast (>= 1.38.0, < 2.0)
|
200
|
+
rubocop-rails-omakase (1.1.0)
|
201
|
+
rubocop (>= 1.72)
|
202
|
+
rubocop-performance (>= 1.24)
|
203
|
+
rubocop-rails (>= 2.30)
|
204
|
+
ruby-progressbar (1.13.0)
|
205
|
+
sass-rails (6.0.0)
|
206
|
+
sassc-rails (~> 2.1, >= 2.1.1)
|
207
|
+
sassc (2.4.0)
|
208
|
+
ffi (~> 1.9)
|
209
|
+
sassc-rails (2.1.2)
|
210
|
+
railties (>= 4.0.0)
|
211
|
+
sassc (>= 2.0)
|
212
|
+
sprockets (> 3.0)
|
213
|
+
sprockets-rails
|
214
|
+
tilt
|
215
|
+
sprockets (4.2.2)
|
216
|
+
concurrent-ruby (~> 1.0)
|
217
|
+
logger
|
218
|
+
rack (>= 2.2.4, < 4)
|
219
|
+
sprockets-rails (3.5.2)
|
220
|
+
actionpack (>= 6.1)
|
221
|
+
activesupport (>= 6.1)
|
222
|
+
sprockets (>= 3.0.0)
|
223
|
+
thor (1.3.2)
|
224
|
+
tilt (2.6.0)
|
225
|
+
timeout (0.4.3)
|
226
|
+
tzinfo (2.0.6)
|
227
|
+
concurrent-ruby (~> 1.0)
|
228
|
+
unicode-display_width (3.1.4)
|
229
|
+
unicode-emoji (~> 4.0, >= 4.0.4)
|
230
|
+
unicode-emoji (4.0.4)
|
231
|
+
websocket-driver (0.7.7)
|
232
|
+
base64
|
233
|
+
websocket-extensions (>= 0.1.0)
|
234
|
+
websocket-extensions (0.1.5)
|
235
|
+
zeitwerk (2.7.2)
|
236
|
+
|
237
|
+
PLATFORMS
|
238
|
+
arm64-darwin-22
|
239
|
+
|
240
|
+
DEPENDENCIES
|
241
|
+
open_fresk!
|
242
|
+
rubocop-rails-omakase
|
243
|
+
|
244
|
+
RUBY VERSION
|
245
|
+
ruby 3.2.2p53
|
246
|
+
|
247
|
+
BUNDLED WITH
|
248
|
+
2.4.10
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2025 Vincent Daubry
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
<a href="https://github.com/yourusername/open_fresk">
|
2
|
+
<img src="app/assets/images/open_fresk/favicon.png" width="100px" alt="OpenFresk Logo">
|
3
|
+
</a>
|
4
|
+
|
5
|
+
# OpenFresk
|
6
|
+
|
7
|
+
OpenFresk is a 100% open-source project for non-profit organizations to deploy and manage interactive “Fresque” workshops on a self-hosted web platform.
|
8
|
+
|
9
|
+
> **Self-hosted.** Deploy on your own infrastructure and retain full control over your data.
|
10
|
+
> **Extensible.** Customize views, controllers, and assets to match your brand and workflow.
|
11
|
+
> **Rapid setup.** Launch a platform in minutes with the built-in dummy host app.
|
12
|
+
> **100% Open source.** Free to use, modify, and contribute.
|
13
|
+
|
14
|
+
---
|
15
|
+
|
16
|
+
**With OpenFresk, you can:**
|
17
|
+
|
18
|
+
- 📅 **Create and schedule workshops** to manage time slots and sessions.
|
19
|
+
- 🙍 **Manage participant registration and authentication** with built-in user flows.
|
20
|
+
- 💳 **Sell tickets and manage payments** (via Stripe, PayPal, etc.).
|
21
|
+
- 🤝 **Facilitate collaborative exercises and collect feedback** during workshops.
|
22
|
+
|
23
|
+
---
|
24
|
+
|
25
|
+
## Key Benefits
|
26
|
+
|
27
|
+
- 🔒 **Ownership.** Fully self-hosted and branded.
|
28
|
+
- ⚡️ **Speed.** Rapid deployment with minimal configuration.
|
29
|
+
- 🛠️ **Flexibility.** Override any part of the engine to fit your needs.
|
30
|
+
- ❤️ **Community.** Backed by a growing open-source community.
|
31
|
+
|
32
|
+
---
|
33
|
+
|
34
|
+
## Prerequisites
|
35
|
+
|
36
|
+
- Git (https://git-scm.com/)
|
37
|
+
- Ruby 3.2.2 (recommended via rbenv or RVM)
|
38
|
+
- Bundler (`gem install bundler`)
|
39
|
+
- PostgreSQL >= 9.3 with development headers (`libpq-dev` on Debian/Ubuntu or `postgresql` on macOS)
|
40
|
+
- Node.js and Yarn (optional, for JavaScript dependencies)
|
41
|
+
|
42
|
+
---
|
43
|
+
|
44
|
+
## Getting Started
|
45
|
+
|
46
|
+
1. **Clone the repository**:
|
47
|
+
|
48
|
+
```bash
|
49
|
+
git clone https://github.com/yourusername/open_fresk.git
|
50
|
+
cd open_fresk
|
51
|
+
```
|
52
|
+
|
53
|
+
2. **Install dependencies**:
|
54
|
+
|
55
|
+
```bash
|
56
|
+
bundle install
|
57
|
+
```
|
58
|
+
|
59
|
+
3. **Switch to the dummy host app**:
|
60
|
+
|
61
|
+
```bash
|
62
|
+
cd test/dummy
|
63
|
+
```
|
64
|
+
|
65
|
+
4. **Set up the app** (gems, database, assets):
|
66
|
+
|
67
|
+
```bash
|
68
|
+
bin/setup
|
69
|
+
```
|
70
|
+
|
71
|
+
5. **Run the server**:
|
72
|
+
|
73
|
+
```bash
|
74
|
+
bin/rails server
|
75
|
+
```
|
76
|
+
|
77
|
+
6. **Visit** `http://localhost:3000/open_fresk` in your browser.
|
78
|
+
|
79
|
+
To run on a different port (e.g., 3001):
|
80
|
+
|
81
|
+
```bash
|
82
|
+
bin/rails server -p 3001
|
83
|
+
```
|
84
|
+
|
85
|
+
---
|
86
|
+
|
87
|
+
## Built With
|
88
|
+
|
89
|
+
- Ruby on Rails 7
|
90
|
+
- Puma (web server)
|
91
|
+
- PostgreSQL (database)
|
92
|
+
- Sprockets & Importmap (asset management)
|
93
|
+
- Stimulus (JavaScript controllers)
|
94
|
+
- FontAwesome5 (icons)
|
95
|
+
|
96
|
+
---
|
97
|
+
|
98
|
+
## Contributing
|
99
|
+
|
100
|
+
We welcome contributions! To get started:
|
101
|
+
|
102
|
+
1. Fork the repository on GitHub.
|
103
|
+
2. Clone your fork and create a branch:
|
104
|
+
```bash
|
105
|
+
git clone https://github.com/yourusername/open_fresk.git
|
106
|
+
cd open_fresk
|
107
|
+
git checkout -b my-feature
|
108
|
+
```
|
109
|
+
3. Follow the **Getting Started** guide to run the dummy host app.
|
110
|
+
4. Implement your feature or bugfix, and add tests.
|
111
|
+
5. Run the test suite:
|
112
|
+
```bash
|
113
|
+
bundle exec rails test
|
114
|
+
```
|
115
|
+
6. Commit your changes and push to your fork.
|
116
|
+
7. Open a Pull Request on GitHub.
|
117
|
+
|
118
|
+
Please adhere to the existing code style and write tests for new functionality.
|
119
|
+
|
120
|
+
---
|
121
|
+
|
122
|
+
## Security
|
123
|
+
|
124
|
+
Please report any security issues via GitHub Issues or by contacting the maintainers directly.
|
125
|
+
|
126
|
+
---
|
127
|
+
|
128
|
+
## License
|
129
|
+
|
130
|
+
OpenFresk is released under the MIT License. See the [MIT-LICENSE](MIT-LICENSE) file for details.
|
data/Rakefile
ADDED
data/app/.DS_Store
ADDED
Binary file
|
Binary file
|
@@ -0,0 +1,20 @@
|
|
1
|
+
// app/assets/config/manifest.js
|
2
|
+
|
3
|
+
//= link_directory ../stylesheets/open_fresk .css
|
4
|
+
//= link open_fresk/application.css
|
5
|
+
//= link open_fresk/application.js
|
6
|
+
|
7
|
+
// explicitly declare your favicon and any other images you reference by path
|
8
|
+
//= link open_fresk/favicon.png
|
9
|
+
//= link open_fresk/logos/logo.png
|
10
|
+
|
11
|
+
// (optional) if you want the rest of the png’s in that folder available:
|
12
|
+
//= link_directory ../images/open_fresk .png
|
13
|
+
|
14
|
+
// other generic images
|
15
|
+
//= link_tree ../images
|
16
|
+
|
17
|
+
// fonts, etc.
|
18
|
+
//= link_tree ../fonts
|
19
|
+
|
20
|
+
//= link manifest.json
|
File without changes
|
Binary file
|
Binary file
|
@@ -0,0 +1,90 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's
|
6
|
+
* vendor/assets/stylesheets directory can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
9
|
+
* compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
|
10
|
+
* files in this directory. Styles in this file should be added after the last require_* statement.
|
11
|
+
* It is generally better to create a new file per style scope.
|
12
|
+
*
|
13
|
+
*/
|
14
|
+
|
15
|
+
label.required:after {
|
16
|
+
content: "*";
|
17
|
+
}
|
18
|
+
|
19
|
+
// Main stylesheet
|
20
|
+
|
21
|
+
// CSS partials
|
22
|
+
@import "config/index";
|
23
|
+
@import "external_libraries/index";
|
24
|
+
@import "components/index";
|
25
|
+
@import "pages/index";
|
26
|
+
@import "font_awesome5_webfont";
|
27
|
+
// $fa-font-path: "@fortawesome/fontawesome-free/webfonts";
|
28
|
+
// @import "@fortawesome/fontawesome-free/scss/fontawesome";
|
29
|
+
// @import "@fortawesome/fontawesome-free/scss/brands";
|
30
|
+
// @import "@fortawesome/fontawesome-free/scss/solid";
|
31
|
+
// @import "@fortawesome/fontawesome-free/scss/regular";
|
32
|
+
// @import "@fortawesome/fontawesome-free/scss/v4-shims";
|
33
|
+
@import "bootstrap";
|
34
|
+
|
35
|
+
// External libraries
|
36
|
+
body,
|
37
|
+
html {
|
38
|
+
width: 100%;
|
39
|
+
height: 100%;
|
40
|
+
}
|
41
|
+
|
42
|
+
* {
|
43
|
+
font-family: "Roboto", sans-serif;
|
44
|
+
}
|
45
|
+
|
46
|
+
body {
|
47
|
+
display: flex !important;
|
48
|
+
align-items: center;
|
49
|
+
padding-top: 0px;
|
50
|
+
padding-bottom: 0px;
|
51
|
+
font-weight: 400 !important;
|
52
|
+
margin-bottom: 20px !important;
|
53
|
+
margin-top: 20px !important;
|
54
|
+
}
|
55
|
+
|
56
|
+
img {
|
57
|
+
aspect-ratio: attr(width) / attr(height);
|
58
|
+
}
|
59
|
+
|
60
|
+
p.copyright {
|
61
|
+
margin: 15px 0 0;
|
62
|
+
}
|
63
|
+
|
64
|
+
.rounded-4 {
|
65
|
+
border-radius: 8px;
|
66
|
+
}
|
67
|
+
.rounded-5 {
|
68
|
+
border-radius: 10px;
|
69
|
+
}
|
70
|
+
|
71
|
+
.square-50 {
|
72
|
+
width: 50px;
|
73
|
+
height: 50px;
|
74
|
+
display: flex;
|
75
|
+
flex-direction: column;
|
76
|
+
justify-content: center;
|
77
|
+
}
|
78
|
+
|
79
|
+
.nav-item.dropdown .dropdown-item:active {
|
80
|
+
background-color: transparent !important;
|
81
|
+
}
|
82
|
+
|
83
|
+
.list-style-none {
|
84
|
+
list-style-type: none;
|
85
|
+
}
|
86
|
+
|
87
|
+
input[type="radio"] {
|
88
|
+
width: 16px;
|
89
|
+
height: 16px;
|
90
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
// MAIN
|
2
|
+
.btn-sm {
|
3
|
+
border: 1px solid 099e9b !important;
|
4
|
+
}
|
5
|
+
|
6
|
+
// DANGER
|
7
|
+
.btn-danger {
|
8
|
+
background-color: rgba($danger, 0.3) !important;
|
9
|
+
border: 0px !important;
|
10
|
+
color: $danger !important;
|
11
|
+
}
|
12
|
+
.btn-danger:hover {
|
13
|
+
background-color: rgba($danger, 0.5) !important;
|
14
|
+
}
|
15
|
+
|
16
|
+
// SQUARE
|
17
|
+
.btn-square-40 {
|
18
|
+
width: 40px;
|
19
|
+
height: 40px;
|
20
|
+
display: flex;
|
21
|
+
justify-content: center;
|
22
|
+
align-items: center;
|
23
|
+
border: none;
|
24
|
+
text-decoration: none;
|
25
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
.form-switch .form-check-input {
|
2
|
+
height: 24px;
|
3
|
+
width: 48px;
|
4
|
+
}
|
5
|
+
.form-switch .form-check-input:focus {
|
6
|
+
border-color: rgba(0, 0, 0, 0.25);
|
7
|
+
outline: 0;
|
8
|
+
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);
|
9
|
+
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba(0,0,0,0.25)'/></svg>");
|
10
|
+
}
|
11
|
+
.form-switch .form-check-input:checked {
|
12
|
+
background-color: $primary;
|
13
|
+
border-color: $primary;
|
14
|
+
border: none;
|
15
|
+
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba(255,255,255,1.0)'/></svg>");
|
16
|
+
}
|