lesli 5.0.2 → 5.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/lesli_manifest.js +2 -1
  3. data/app/assets/javascripts/lesli/users/confirmations.js +32 -0
  4. data/app/assets/javascripts/lesli/users/passwords.js +3 -3
  5. data/app/assets/javascripts/lesli/users/registrations.js +2 -2
  6. data/app/assets/javascripts/lesli/users/sessions.js +2 -2
  7. data/app/assets/stylesheets/lesli/users/confirmations.scss +28 -6
  8. data/app/controllers/lesli/abouts_controller.rb +66 -0
  9. data/app/controllers/lesli/interfaces/application/authorization.rb +2 -2
  10. data/app/controllers/lesli/interfaces/application/logger.rb +14 -38
  11. data/app/controllers/lesli/roles_controller.rb +3 -1
  12. data/app/controllers/users/confirmations_controller.rb +63 -27
  13. data/app/controllers/users/passwords_controller.rb +70 -30
  14. data/app/controllers/users/sessions_controller.rb +2 -4
  15. data/app/lib/lesli/system.rb +13 -5
  16. data/app/mailers/lesli/application_lesli_mailer.rb +8 -19
  17. data/app/mailers/lesli/devise_mailer.rb +29 -3
  18. data/app/models/concerns/account_initializer.rb +91 -0
  19. data/app/models/concerns/{user_guard.rb → user_security.rb} +7 -8
  20. data/app/models/lesli/account.rb +8 -26
  21. data/app/models/lesli/application_lesli_record.rb +1 -0
  22. data/app/models/lesli/descriptor/privilege.rb +38 -0
  23. data/app/models/lesli/descriptor.rb +18 -1
  24. data/app/models/lesli/role/power.rb +70 -0
  25. data/app/models/lesli/role/privilege.rb +38 -0
  26. data/app/models/lesli/role.rb +20 -15
  27. data/app/models/lesli/user/{role.rb → power.rb} +1 -1
  28. data/app/{services/lesli/role_service.rb → models/lesli/user/setting.rb} +10 -9
  29. data/app/models/lesli/user.rb +11 -20
  30. data/app/operators/lesli/descriptor_privilege_operator.rb +75 -0
  31. data/app/operators/lesli/role_power_operator.rb +108 -0
  32. data/app/operators/lesli/user_registration_operator.rb +121 -0
  33. data/app/services/lesli/user_service.rb +2 -4
  34. data/app/services/lesli/{user/session_service.rb → user_session_service.rb} +11 -4
  35. data/app/views/devise/confirmations/new.html.erb +0 -14
  36. data/app/views/devise/confirmations/show.html.erb +63 -0
  37. data/app/views/devise/passwords/edit.html.erb +78 -24
  38. data/app/views/devise/passwords/new.html.erb +1 -2
  39. data/app/views/lesli/emails/devise_mailer/confirmation_instructions.html.erb +1 -1
  40. data/app/views/lesli/emails/devise_mailer/reset_password_instructions.html.erb +23 -0
  41. data/app/views/lesli/partials/_application-lesli-header.html.erb +3 -1
  42. data/config/initializers/devise.rb +2 -0
  43. data/config/routes.rb +2 -0
  44. data/db/migrate/v1.0/0010000110_create_lesli_accounts.rb +2 -0
  45. data/db/{tables/0010001010_create_account_settings.rb → migrate/v1.0/0010001010_create_lesli_account_settings.rb} +5 -5
  46. data/db/{tables/0010003110_create_user_settings.rb → migrate/v1.0/0010003110_create_lesli_user_settings.rb} +4 -4
  47. data/db/migrate/v1.0/0010003210_create_lesli_user_sessions.rb +6 -2
  48. data/db/migrate/v1.0/{0010003410_create_lesli_user_roles.rb → 0010003410_create_lesli_user_powers.rb} +4 -4
  49. data/db/migrate/v1.0/0010005010_create_lesli_descriptors.rb +1 -1
  50. data/db/migrate/v1.0/{0010003910_create_lesli_user_agents.rb → 0010005510_create_lesli_role_powers.rb} +7 -9
  51. data/db/{tables/0010005710_create_role_privileges.rb → migrate/v1.0/0010005710_create_lesli_role_privileges.rb} +6 -6
  52. data/db/seed/development/users.rb +4 -4
  53. data/db/seed/tools.rb +4 -4
  54. data/lib/lesli/engine.rb +33 -10
  55. data/lib/lesli/version.rb +1 -1
  56. data/lib/sass/lesli/bulma/loader.scss +3 -0
  57. data/lib/sass/lesli/pages/devise-simple.scss +2 -1
  58. data/lib/tasks/lesli/controllers.rake +3 -6
  59. data/lib/tasks/lesli/db.rake +11 -1
  60. data/lib/tasks/lesli/role.rake +54 -0
  61. data/lib/vue/application.js +9 -2
  62. data/lib/vue/devise/passwords.js +3 -3
  63. data/lib/vue/layouts/application-header.vue +10 -3
  64. data/lib/webpack/core.js +2 -1
  65. data/readme.md +23 -7
  66. data/vendor/bulma/LICENSE +21 -0
  67. data/vendor/bulma/bulma.sass +10 -0
  68. data/vendor/bulma/css/bulma-rtl.css +11851 -0
  69. data/vendor/bulma/css/bulma-rtl.min.css +1 -0
  70. data/vendor/bulma/css/bulma.css +11851 -0
  71. data/vendor/bulma/css/bulma.min.css +1 -0
  72. data/vendor/bulma/sass/base/_all.sass +6 -0
  73. data/vendor/bulma/sass/base/animations.sass +5 -0
  74. data/vendor/bulma/sass/base/generic.sass +145 -0
  75. data/vendor/bulma/sass/base/helpers.sass +1 -0
  76. data/vendor/bulma/sass/base/minireset.sass +79 -0
  77. data/vendor/bulma/sass/components/_all.sass +15 -0
  78. data/vendor/bulma/sass/components/breadcrumb.sass +77 -0
  79. data/vendor/bulma/sass/components/card.sass +103 -0
  80. data/vendor/bulma/sass/components/dropdown.sass +83 -0
  81. data/vendor/bulma/sass/components/level.sass +79 -0
  82. data/vendor/bulma/sass/components/media.sass +59 -0
  83. data/vendor/bulma/sass/components/menu.sass +59 -0
  84. data/vendor/bulma/sass/components/message.sass +101 -0
  85. data/vendor/bulma/sass/components/modal.sass +117 -0
  86. data/vendor/bulma/sass/components/navbar.sass +446 -0
  87. data/vendor/bulma/sass/components/pagination.sass +167 -0
  88. data/vendor/bulma/sass/components/panel.sass +121 -0
  89. data/vendor/bulma/sass/components/tabs.sass +176 -0
  90. data/vendor/bulma/sass/elements/_all.sass +16 -0
  91. data/vendor/bulma/sass/elements/box.sass +26 -0
  92. data/vendor/bulma/sass/elements/button.sass +357 -0
  93. data/vendor/bulma/sass/elements/container.sass +29 -0
  94. data/vendor/bulma/sass/elements/content.sass +162 -0
  95. data/vendor/bulma/sass/elements/form.sass +1 -0
  96. data/vendor/bulma/sass/elements/icon.sass +46 -0
  97. data/vendor/bulma/sass/elements/image.sass +73 -0
  98. data/vendor/bulma/sass/elements/notification.sass +52 -0
  99. data/vendor/bulma/sass/elements/other.sass +31 -0
  100. data/vendor/bulma/sass/elements/progress.sass +73 -0
  101. data/vendor/bulma/sass/elements/table.sass +134 -0
  102. data/vendor/bulma/sass/elements/tag.sass +140 -0
  103. data/vendor/bulma/sass/elements/title.sass +70 -0
  104. data/vendor/bulma/sass/form/_all.sass +9 -0
  105. data/vendor/bulma/sass/form/checkbox-radio.sass +22 -0
  106. data/vendor/bulma/sass/form/file.sass +184 -0
  107. data/vendor/bulma/sass/form/input-textarea.sass +66 -0
  108. data/vendor/bulma/sass/form/select.sass +88 -0
  109. data/vendor/bulma/sass/form/shared.sass +60 -0
  110. data/vendor/bulma/sass/form/tools.sass +215 -0
  111. data/vendor/bulma/sass/grid/_all.sass +5 -0
  112. data/vendor/bulma/sass/grid/columns.sass +513 -0
  113. data/vendor/bulma/sass/grid/tiles.sass +36 -0
  114. data/vendor/bulma/sass/helpers/_all.sass +12 -0
  115. data/vendor/bulma/sass/helpers/color.sass +39 -0
  116. data/vendor/bulma/sass/helpers/flexbox.sass +35 -0
  117. data/vendor/bulma/sass/helpers/float.sass +10 -0
  118. data/vendor/bulma/sass/helpers/other.sass +14 -0
  119. data/vendor/bulma/sass/helpers/overflow.sass +2 -0
  120. data/vendor/bulma/sass/helpers/position.sass +7 -0
  121. data/vendor/bulma/sass/helpers/spacing.sass +31 -0
  122. data/vendor/bulma/sass/helpers/typography.sass +103 -0
  123. data/vendor/bulma/sass/helpers/visibility.sass +122 -0
  124. data/vendor/bulma/sass/layout/_all.sass +6 -0
  125. data/vendor/bulma/sass/layout/footer.sass +11 -0
  126. data/vendor/bulma/sass/layout/hero.sass +153 -0
  127. data/vendor/bulma/sass/layout/section.sass +17 -0
  128. data/vendor/bulma/sass/utilities/_all.sass +9 -0
  129. data/vendor/bulma/sass/utilities/animations.sass +1 -0
  130. data/vendor/bulma/sass/utilities/controls.sass +49 -0
  131. data/vendor/bulma/sass/utilities/derived-variables.sass +114 -0
  132. data/vendor/bulma/sass/utilities/extends.sass +25 -0
  133. data/vendor/bulma/sass/utilities/functions.sass +135 -0
  134. data/vendor/bulma/sass/utilities/initial-variables.sass +79 -0
  135. data/vendor/bulma/sass/utilities/mixins.sass +303 -0
  136. data/vendor/lesli-css/_index.scss +34 -0
  137. data/vendor/lesli-css/lesli.scss +51 -0
  138. data/vendor/lesli-css/license +28 -0
  139. data/vendor/lesli-css/src/base/fonts.scss +50 -0
  140. data/vendor/lesli-css/src/base/normalize.scss +118 -0
  141. data/vendor/lesli-css/src/components/blockquote.scss +61 -0
  142. data/vendor/lesli-css/src/components/columns.scss +92 -0
  143. data/vendor/lesli-css/src/components/container.scss +47 -0
  144. data/vendor/lesli-css/src/components/grid.scss +0 -0
  145. data/vendor/lesli-css/src/components/navigation.scss +59 -0
  146. data/vendor/lesli-css/src/functions/colors.scss +184 -0
  147. data/vendor/lesli-css/src/helpers/units.scss +44 -0
  148. data/vendor/lesli-css/src/mixins/breakpoint.scss +184 -0
  149. data/vendor/lesli-css/src/mixins/flex.scss +80 -0
  150. data/vendor/lesli-css/src/mixins/scrollbar.scss +46 -0
  151. data/vendor/lesli-css/src/settings/variables.scss +26 -0
  152. data/vendor/lesli-css/tests/base/normalize.spec.scss +125 -0
  153. data/vendor/lesli-css/tests/functions/colors.spec.scss +117 -0
  154. data/vendor/lesli-css/tests/mixins/breakpoint.spec.scss +429 -0
  155. data/vendor/lesli-css/tests/mixins/scrollbar.spec.scss +82 -0
  156. data/vendor/lesli-css/vendor/normalize.scss +351 -0
  157. data/vendor/remixicon/License +201 -0
  158. data/vendor/remixicon/fonts/remixicon.css +2583 -0
  159. metadata +116 -18
  160. data/app/models/concerns/account_engines.rb +0 -249
  161. data/app/models/concerns/user_polyfill.rb +0 -134
  162. data/config/locales/translations.en.yml +0 -7
  163. data/config/locales/translations.es.yml +0 -7
  164. data/db/migrate/v1.0/0010001510_create_lesli_account_requests.rb +0 -45
  165. data/db/migrate/v1.0/0010003810_create_lesli_user_requests.rb +0 -44
  166. data/db/tables/0010005510_create_role_descriptors.rb +0 -44
data/lib/lesli/engine.rb CHANGED
@@ -39,6 +39,7 @@ require "L2"
39
39
  require "devise"
40
40
  require "useragent"
41
41
  require "flag-icons-rails"
42
+ require "acts_as_paranoid"
42
43
 
43
44
  module Lesli
44
45
  class Engine < ::Rails::Engine
@@ -46,6 +47,21 @@ module Lesli
46
47
 
47
48
  initializer :lesli do |app|
48
49
 
50
+
51
+ # Lesli standard engine configuration
52
+
53
+
54
+ # register assets manifest
55
+ config.assets.precompile += %w[lesli_manifest.js]
56
+
57
+ # register engine migrations path
58
+ unless app.root.to_s.match root.to_s
59
+ config.paths["db/migrate"].expanded.each do |expanded_path|
60
+ app.config.paths["db/migrate"] << expanded_path
61
+ end
62
+ end
63
+
64
+
49
65
  # Lesli Framework configuration
50
66
 
51
67
 
@@ -65,21 +81,28 @@ module Lesli
65
81
  # if this is not false Rails will fingerprint the assets by default and precompile is needed
66
82
  config.assets.digest = false
67
83
 
84
+
85
+ # Lesli Framework Mailer configuration
86
+
87
+
88
+ # Development mailer by default
89
+ config.action_mailer.delivery_method ||= :letter_opener
90
+
91
+ # Add the Lesli root folder for email development tempaltes
68
92
  config.action_mailer.preview_path = root.join("lib", "mailer_previews")
69
93
 
94
+ config.action_mailer.default_options ||= {
70
95
 
71
- # Lesli standard engine configuration
96
+ # Use the main email in the lesli settings as email sender
97
+ from: config.company.dig(:email)
98
+ }
72
99
 
73
-
74
- # register assets manifest
75
- config.assets.precompile += %w[lesli_manifest.js]
76
100
 
77
- # register engine migrations path
78
- unless app.root.to_s.match root.to_s
79
- config.paths["db/migrate"].expanded.each do |expanded_path|
80
- app.config.paths["db/migrate"] << expanded_path
81
- end
82
- end
101
+
102
+ # Mailer url options for development
103
+ config.action_mailer.default_url_options ||= {
104
+ host: "http://0.0.0.0:3000"
105
+ }
83
106
  end
84
107
  end
85
108
  end
data/lib/lesli/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Lesli
2
- VERSION = "5.0.2"
2
+ VERSION = "5.0.4"
3
3
  BUILD = "1697000148"
4
4
  end
@@ -52,18 +52,21 @@ $navbar-background-color: transparent;
52
52
 
53
53
  @import "bulma/sass/form/all";
54
54
 
55
+ @import "bulma/sass/components/card";
55
56
  @import "bulma/sass/components/tabs";
56
57
  @import "bulma/sass/components/media";
57
58
  @import "bulma/sass/components/level";
58
59
  @import "bulma/sass/components/dropdown";
59
60
  @import "bulma/sass/components/pagination";
60
61
 
62
+ @import "bulma/sass/elements/notification";
61
63
  @import "bulma/sass/elements/container";
62
64
  @import "bulma/sass/elements/button";
63
65
  @import "bulma/sass/elements/image";
64
66
  @import "bulma/sass/elements/title";
65
67
  @import "bulma/sass/elements/table";
66
68
  @import "bulma/sass/elements/icon";
69
+ @import "bulma/sass/elements/tag";
67
70
 
68
71
  @import "bulma/sass/grid/columns";
69
72
 
@@ -41,8 +41,9 @@ main {
41
41
  .hero-head {
42
42
  padding: 8rem 0 4rem;
43
43
 
44
- .app-logo {
44
+ .lesli-logo {
45
45
  max-width: 130px;
46
+ margin-bottom: 1rem;
46
47
  }
47
48
  }
48
49
 
@@ -80,11 +80,8 @@ namespace :lesli do
80
80
 
81
81
  # Global container
82
82
  controller_list = {
83
- "core" => {}
83
+ "app" => {}
84
84
  }
85
-
86
- # Get the name of the instance (builder engine)
87
- instance = "lesli" #Rails.configuration.lesli.dig(:instance, :name)
88
85
 
89
86
  # Get the list of controllers and actions of the core
90
87
  Rails.application.routes.routes.each do |route|
@@ -97,10 +94,10 @@ namespace :lesli do
97
94
  next if route[:controller].include? "active_storage"
98
95
 
99
96
  # create a container for the actions related to a controller
100
- controller_list["core"][route[:controller]] = [] unless controller_list["core"][route[:controller]]
97
+ controller_list["app"][route[:controller]] = [] unless controller_list["app"][route[:controller]]
101
98
 
102
99
  # assign and group all the actions related to the controller
103
- controller_list["core"][route[:controller]].push(route[:action])
100
+ controller_list["app"][route[:controller]].push(route[:action])
104
101
 
105
102
  end
106
103
 
@@ -72,17 +72,27 @@ namespace :lesli do
72
72
 
73
73
  # Seed database (development only)
74
74
  def seed
75
+
76
+ # do not execute this task if we are at production level
75
77
  return if Rails.env.production?
78
+
76
79
  L2.msg("Seed Lesli database for development")
77
80
 
81
+ # scan rails routes to build the controllers index
82
+ Rake::Task['lesli:controllers:build'].invoke
83
+
84
+ # load main app seeders
78
85
  Rake::Task['db:seed'].invoke
79
86
 
87
+ # load Lesli* gems seeders
80
88
  Lesli::Engine.load_seed
81
89
  LesliBell::Engine.load_seed if defined?(LesliBell)
82
90
  LesliAudit::Engine.load_seed if defined?(LesliAudit)
83
- Rake::Task['lesli:controllers:build'].invoke
91
+
92
+ # scan rails routes to build the base of translations
84
93
  Rake::Task['lesli:babel:build'].invoke if defined?(LesliBabel)
85
94
 
95
+ # print the lesli gems
86
96
  Rake::Task['lesli:status'].invoke
87
97
  end
88
98
  end
@@ -0,0 +1,54 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS Development Framework.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+
33
+ # ·
34
+ namespace :lesli do
35
+ namespace :role do
36
+
37
+ desc "Drop, build, migrate & seed Lesli database (development only)"
38
+ task :privileges => :environment do |task, args|
39
+ role_sync_privileges()
40
+ end
41
+ end
42
+
43
+ # Drop, build, migrate & seed database (development only)
44
+ def role_sync_privileges
45
+
46
+ L2.msg("Syncing privileges for all the available roles")
47
+
48
+ Lesli::Descriptor.where(:name => "owner").each do |descriptor|
49
+ descriptor.initialize_descriptor_privileges
50
+ end
51
+
52
+ Lesli::RolePowerOperator.new(Lesli::Role.all.pluck(:id)).synchronize
53
+ end
54
+ end
@@ -68,6 +68,8 @@ import {
68
68
  lesliElementCalendar,
69
69
  lesliElementCard,
70
70
  lesliElementCollapse,
71
+ lesliElementColumn,
72
+ lesliElementColumns,
71
73
  lesliElementControl,
72
74
  lesliElementDropdown,
73
75
  lesliElementEmpty,
@@ -226,6 +228,10 @@ export default (engine, routes=[]) => {
226
228
  application.component("lesli-loading", lesliElementLoading)
227
229
  application.component("lesli-table", lesliElementTable)
228
230
  application.component("lesli-collapse", lesliElementCollapse)
231
+ application.component("lesli-column", lesliElementColumn)
232
+ application.component("lesli-columns", lesliElementColumns)
233
+ application.component("lesli-card", lesliElementCard)
234
+ application.component("lesli-control", lesliElementControl)
229
235
  application.component("lesli-tab-item", lesliElementTabItem)
230
236
  application.component("lesli-tabs", lesliElementTabs)
231
237
  application.component("lesli-panel", lesliElementPanel)
@@ -243,8 +249,9 @@ export default (engine, routes=[]) => {
243
249
  application.component("lesli-pagination", lesliElementPagination)
244
250
  application.component("lesli-form", lesliElementForm)
245
251
  application.component("lesli-input", lesliElementInput)
246
- application.component("lesli-control", lesliElementControl)
247
- application.component("lesli-card", lesliElementCard)
252
+ application.component("lesli-link", lesliElementLink)
253
+
254
+
248
255
 
249
256
 
250
257
  // · Mount app once DOM is ready
@@ -51,8 +51,8 @@ application({
51
51
  password: ""
52
52
  },
53
53
  password_edit: {
54
- new_password: "",
55
- new_password_confirmation: ""
54
+ new_password: "Tardis2023$",
55
+ new_password_confirmation: "Tardis2023$"
56
56
  },
57
57
  notification: {
58
58
  message: "",
@@ -117,7 +117,7 @@ application({
117
117
  }
118
118
  }).then(response => {
119
119
  this.showNotification(this.translations.main.notification_password_updated, "success")
120
- setTimeout(() => { this.url.go("/login") }, 2000)
120
+ //setTimeout(() => { this.url.go("/login") }, 2000)
121
121
  }).catch(error => {
122
122
  this.showNotification(error.message, "danger")
123
123
  }).finally(() => {
@@ -77,6 +77,11 @@ const props = defineProps({
77
77
  type: Boolean,
78
78
  default: false,
79
79
  required: false
80
+ },
81
+ enginePath: {
82
+ type: String,
83
+ default: "/",
84
+ required: false
80
85
  }
81
86
  })
82
87
 
@@ -114,9 +119,11 @@ function toggleEngines() {
114
119
  <template>
115
120
  <header ref="lesliApplicationHeader" class="lesli-application-header">
116
121
  <div class="lesli-application-header-container container">
117
- <figure class="image lesli-brand">
118
- <img alt="App logo" class="is-hidden-touch" src="/assets/lesli/brand/app-logo.svg">
119
- </figure>
122
+ <a :href="props.enginePath">
123
+ <figure class="image lesli-brand">
124
+ <img alt="App logo" class="is-hidden-touch" src="/assets/lesli/brand/app-logo.svg">
125
+ </figure>
126
+ </a>
120
127
  <div class="lesli-application-header-left">
121
128
  <div class="control is-medium has-icons-left has-text-grey">
122
129
  <span class="icon is-left has-text-gray">
data/lib/webpack/core.js CHANGED
@@ -46,7 +46,7 @@ module.exports = (env, requestedEngines) => {
46
46
  "users/sessions": "LesliApp/users/sessions.js",
47
47
  "users/passwords": "LesliApp/users/passwords.js",
48
48
  "users/registrations": "LesliApp/users/registrations.js",
49
- "users/confirmations": "LesliApp/users/confirmations.js",
49
+
50
50
 
51
51
 
52
52
  // alternative logins
@@ -64,6 +64,7 @@ module.exports = (env, requestedEngines) => {
64
64
  },
65
65
  entry: {
66
66
  "lesli/users/registrations": "Lesli/devise/registrations.js",
67
+ "lesli/users/confirmations": "Lesli/devise/confirmations.js",
67
68
  "lesli/users/passwords": "Lesli/devise/passwords.js",
68
69
  "lesli/users/sessions": "Lesli/devise/sessions.js"
69
70
  },
data/readme.md CHANGED
@@ -7,10 +7,13 @@
7
7
  <hr/>
8
8
  <p align="center">
9
9
  <a target="blank" href="https://rubygems.org/gems/lesli">
10
- <img src="https://badge.fury.io/rb/lesli.svg" alt="Gem Version" height="20">
10
+ <img height="22" alt="Gem Version" src="https://badge.fury.io/rb/lesli.svg"/>
11
11
  </a>
12
12
  <a href="https://codecov.io/github/LesliTech/Lesli">
13
- <img src="https://codecov.io/github/LesliTech/Lesli/graph/badge.svg?token=2O12NENK5Y"/>
13
+ <img height="22" src="https://codecov.io/github/LesliTech/Lesli/graph/badge.svg?token=2O12NENK5Y"/>
14
+ </a>
15
+ <a href="https://codecov.io/github/LesliTech/Lesli">
16
+ <img height="22" src="https://sonarcloud.io/api/project_badges/measure?project=LesliTech_Lesli&metric=sqale_rating"/>
14
17
  </a>
15
18
  </p>
16
19
  <hr/>
@@ -18,7 +21,11 @@
18
21
 
19
22
  <br />
20
23
 
21
- <img style="width:100%; border-radius: 6px;" alt="Lesli logo" src="./docs/screenshot.png" />
24
+ <div align="center">
25
+ <img
26
+ style="width:100%;max-width:800px;border-radius:6px;"
27
+ alt="Lesli logo" src="./docs/screenshot.png" />
28
+ </div>
22
29
 
23
30
  ### Introduction
24
31
 
@@ -39,17 +46,26 @@ Lesli is completely open source and comes with features and tools that can save
39
46
 
40
47
  <br />
41
48
 
42
- Lesli is officially released and supported as of version 5
49
+ Lesli is officially released and will be supported as of version 5.1
43
50
 
44
51
  > Lesli goes beyond being just a starter-kit, template, admin panel or dashboard. Lesli is a Ruby on Rails gem that you can use to build modules (a.k.a. engines) and standard Rails applications leveraging its robust set of built-in features, generators, components, and industry standards. With Lesli, you have the flexibility to extend existing functionalities or develop fully customized software tailored to your specific needs.
45
52
 
46
53
 
54
+ <br />
55
+
56
+ ### Demo
57
+
58
+ * online demo (soon)
59
+ * [docker demo](https://github.com/ldonis/lesli-docker-demo)
60
+
61
+
47
62
  <br />
48
63
 
49
64
  ### Documentation
65
+ * [Website](https://www.lesli.dev/lesli/)
50
66
  * [Roadmap](./docs/roadmap.md)
51
- * [Core database](./docs/database.md)
52
- * [Main documentation](https://www.lesli.dev/documentation/)
67
+ * [Database](./docs/database.md)
68
+ * [Documentation](https://www.lesli.dev/documentation/)
53
69
 
54
70
 
55
71
  <br />
@@ -110,7 +126,7 @@ RAILS_SERVE_STATIC_FILES=true rails s --environment=production
110
126
 
111
127
  <br />
112
128
 
113
- ### Get in touch
129
+ ### Get in touch with Lesli
114
130
 
115
131
  * [Website: https://www.lesli.tech](https://www.lesli.tech)
116
132
  * [Email: hello@lesli.tech](hello@lesli.tech)
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2022 Jeremy Thomas
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,10 @@
1
+ @charset "utf-8"
2
+ /*! bulma.io v0.9.4 | MIT License | github.com/jgthms/bulma */
3
+ @import "sass/utilities/_all"
4
+ @import "sass/base/_all"
5
+ @import "sass/elements/_all"
6
+ @import "sass/form/_all"
7
+ @import "sass/components/_all"
8
+ @import "sass/grid/_all"
9
+ @import "sass/helpers/_all"
10
+ @import "sass/layout/_all"