Skip to content

Instantly share code, notes, and snippets.

@drnic
Last active October 27, 2022 23:57
Show Gist options
  • Save drnic/dc8790d4141b2db615a9d9ba90a1a2ac to your computer and use it in GitHub Desktop.
Save drnic/dc8790d4141b2db615a9d9ba90a1a2ac to your computer and use it in GitHub Desktop.
If you found this because you're seeing it too - switch to Node v16
$ rails new my-awesome-site \
-m https://raw.githubusercontent.com/maglevhq/maglev-core/master/template.rb \
--database=postgresql \
--skip-action-cable
create
create README.md
create Rakefile
create .ruby-version
create config.ru
create .gitignore
create .gitattributes
create Gemfile
run git init from "."
Initialized empty Git repository in /Users/drnic/workspace/maglev-demo/my-awesome-site/.git/
create app
create app/assets/config/manifest.js
create app/assets/stylesheets/application.css
create app/channels/application_cable/channel.rb
create app/channels/application_cable/connection.rb
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/jobs/application_job.rb
create app/mailers/application_mailer.rb
create app/models/application_record.rb
create app/views/layouts/application.html.erb
create app/views/layouts/mailer.html.erb
create app/views/layouts/mailer.text.erb
create app/assets/images
create app/assets/images/.keep
create app/controllers/concerns/.keep
create app/models/concerns/.keep
create bin
create bin/rails
create bin/rake
create bin/setup
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/puma.rb
create config/storage.yml
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/assets.rb
create config/initializers/content_security_policy.rb
create config/initializers/cors.rb
create config/initializers/filter_parameter_logging.rb
create config/initializers/inflections.rb
create config/initializers/new_framework_defaults_7_0.rb
create config/initializers/permissions_policy.rb
create config/locales
create config/locales/en.yml
create config/master.key
append .gitignore
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create lib
create lib/tasks
create lib/tasks/.keep
create lib/assets
create lib/assets/.keep
create log
create log/.keep
create public
create public/404.html
create public/422.html
create public/500.html
create public/apple-touch-icon-precomposed.png
create public/apple-touch-icon.png
create public/favicon.ico
create public/robots.txt
create tmp
create tmp/.keep
create tmp/pids
create tmp/pids/.keep
create tmp/cache
create tmp/cache/assets
create vendor
create vendor/.keep
create test/fixtures/files
create test/fixtures/files/.keep
create test/controllers
create test/controllers/.keep
create test/mailers
create test/mailers/.keep
create test/models
create test/models/.keep
create test/helpers
create test/helpers/.keep
create test/integration
create test/integration/.keep
create test/channels/application_cable/connection_test.rb
create test/test_helper.rb
create test/system
create test/system/.keep
create test/application_system_test_case.rb
create storage
create storage/.keep
create tmp/storage
create tmp/storage/.keep
remove app/javascript/channels
remove app/channels
remove test/channels
remove config/initializers/cors.rb
remove config/initializers/new_framework_defaults_7_0.rb
apply https://raw.githubusercontent.com/maglevhq/maglev-core/master/template.rb
gemfile maglevcms (~> 1.0.0)
gemfile maglevcms-hyperui-kit (~> 1.0.1)
gemfile image_processing (~> 1.2)
run bundle install
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies....
Using rake 13.0.6
Using concurrent-ruby 1.1.10
Using minitest 5.16.3
Using builder 3.2.4
Using erubi 1.11.0
Using racc 1.6.0
Using crass 1.0.6
Using rack 2.2.4
Using nio4r 2.5.8
Using websocket-extensions 0.1.5
Using marcel 1.0.2
Using mini_mime 1.1.2
Using timeout 0.3.0
Using public_suffix 5.0.0
Using bindex 0.8.1
Using msgpack 1.6.0
Using bundler 2.3.19
Using matrix 0.4.2
Using regexp_parser 2.6.0
Using childprocess 4.1.0
Using io-console 0.5.11
Using ffi 1.15.5
Using mini_magick 4.11.0
Using method_source 1.0.0
Using maglevcms-hyperui-kit 1.0.2
Using zeitwerk 2.6.1
Using websocket 1.2.9
Using i18n 1.12.0
Using tzinfo 2.0.5
Using nokogiri 1.13.9 (arm64-darwin)
Using rack-test 2.0.2
Using websocket-driver 0.7.5
Using rubyzip 2.3.2
Using pg 1.4.4
Using addressable 2.8.1
Using bootsnap 1.13.0
Using reline 0.3.1
Using thor 1.2.1
Using rack-proxy 0.7.4
Using puma 5.6.5
Using ruby-vips 2.1.4
Using activesupport 7.0.4
Using loofah 2.19.0
Using xpath 3.2.0
Using irb 1.4.2
Using mail 2.7.1
Using kaminari-core 1.2.2
Using net-protocol 0.1.3
Using sprockets 4.1.1
Using maglev-injectable 2.1.1
Using semantic_range 3.0.0
Using rexml 3.2.5
Using rails-html-sanitizer 1.4.3
Using globalid 1.0.0
Using activemodel 7.0.4
Using capybara 3.37.1
Using rails-dom-testing 2.0.3
Using image_processing 1.12.2
Using activejob 7.0.4
Using net-smtp 0.3.2
Using debug 1.6.3
Using actionview 7.0.4
Using activerecord 7.0.4
Using selenium-webdriver 4.5.0
Using net-imap 0.3.1
Using net-pop 0.1.2
Using actionpack 7.0.4
Using kaminari-actionview 1.2.2
Using webdrivers 5.2.0
Using jbuilder 2.11.5
Using actioncable 7.0.4
Using activestorage 7.0.4
Using actionmailer 7.0.4
Using railties 7.0.4
Using kaminari-activerecord 1.2.2
Using sprockets-rails 3.4.2
Using actionmailbox 7.0.4
Using actiontext 7.0.4
Using importmap-rails 1.1.5
Using kaminari 1.2.2
Using rails 7.0.4
Using webpacker 5.4.3
Using turbo-rails 1.3.2
Using stimulus-rails 1.1.0
Using web-console 4.2.0
Using maglevcms 1.0.0
Bundle complete! 18 Gemfile dependencies, 86 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
run bundle binstubs bundler
rails importmap:install
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Add Importmap include tags in application layout
insert app/views/layouts/application.html.erb
Create application.js module as entrypoint
create app/javascript/application.js
Use vendor/javascript for downloaded pins
create vendor/javascript
create vendor/javascript/.keep
Ensure JavaScript files are in the Sprocket manifest
append app/assets/config/manifest.js
Configure importmap paths in config/importmap.rb
create config/importmap.rb
Copying binstub
create bin/importmap
rails turbo:install stimulus:install
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Import Turbo
append app/javascript/application.js
Pin Turbo
append config/importmap.rb
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
ActionCable config file (config/cable.yml) is missing. Uncomment "gem 'redis'" in your Gemfile and create config/cable.yml to use the Turbo Streams broadcast feature.
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Create controllers directory
create app/javascript/controllers
create app/javascript/controllers/index.js
create app/javascript/controllers/application.js
create app/javascript/controllers/hello_controller.js
Import Stimulus controllers
append app/javascript/application.js
Pin Stimulus
Appending: pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true"
append config/importmap.rb
Appending: pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
append config/importmap.rb
Pin all controllers
Appending: pin_all_from "app/javascript/controllers", under: "controllers"
append config/importmap.rb
rails db:create
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Created database 'my_awesome_site_development'
Created database 'my_awesome_site_test'
rails active_storage:install
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Copied migration 20221027234758_create_active_storage_tables.active_storage.rb from active_storage
generate maglev:install
rails generate maglev:install
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
rake maglev:webpacker:compile
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
yarn install v1.22.19
[1/4] 🔍 Resolving packages...
success Already up-to-date.
✨ Done in 0.18s.
Compiling...
Compilation failed:
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
node:internal/crypto/hash:71
this[kHandle] = new _Hash(algorithm, xofLen);
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:133:10)
at module.exports (/Users/drnic/.rvm/gems/ruby-3.1.2/gems/maglevcms-1.0.0/node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (/Users/drnic/.rvm/gems/ruby-3.1.2/gems/maglevcms-1.0.0/node_modules/webpack/lib/NormalModule.js:417:16)
at handleParseError (/Users/drnic/.rvm/gems/ruby-3.1.2/gems/maglevcms-1.0.0/node_modules/webpack/lib/NormalModule.js:471:10)
at /Users/drnic/.rvm/gems/ruby-3.1.2/gems/maglevcms-1.0.0/node_modules/webpack/lib/NormalModule.js:503:5
at /Users/drnic/.rvm/gems/ruby-3.1.2/gems/maglevcms-1.0.0/node_modules/webpack/lib/NormalModule.js:358:12
at /Users/drnic/.rvm/gems/ruby-3.1.2/gems/maglevcms-1.0.0/node_modules/loader-runner/lib/LoaderRunner.js:373:3
at iterateNormalLoaders (/Users/drnic/.rvm/gems/ruby-3.1.2/gems/maglevcms-1.0.0/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
at iterateNormalLoaders (/Users/drnic/.rvm/gems/ruby-3.1.2/gems/maglevcms-1.0.0/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
at /Users/drnic/.rvm/gems/ruby-3.1.2/gems/maglevcms-1.0.0/node_modules/loader-runner/lib/LoaderRunner.js:236:3
at context.callback (/Users/drnic/.rvm/gems/ruby-3.1.2/gems/maglevcms-1.0.0/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
at /Users/drnic/.rvm/gems/ruby-3.1.2/gems/maglevcms-1.0.0/node_modules/babel-loader/lib/index.js:59:71
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
Node.js v18.7.0
rake maglev:install:migrations
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Copied migration 20221027234801_create_maglev_sites.maglev.rb from maglev
Copied migration 20221027234802_create_maglev_pages.maglev.rb from maglev
Copied migration 20221027234803_create_maglev_section_content.maglev.rb from maglev
Copied migration 20221027234804_create_maglev_assets.maglev.rb from maglev
Copied migration 20221027234805_switch_to_localized_page_fields.maglev.rb from maglev
Copied migration 20221027234806_create_maglev_page_paths.maglev.rb from maglev
Copied migration 20221027234807_add_canonical_to_pages.maglev.rb from maglev
Copied migration 20221027234808_add_locales_to_sites.maglev.rb from maglev
Copied migration 20221027234809_translate_section_content.maglev.rb from maglev
Copied migration 20221027234810_add_lock_version_to_maglev_pages.maglev.rb from maglev
Copied migration 20221027234811_better_page_path_canonical_indices.maglev.rb from maglev
Copied migration 20221027234812_fix_page_path_indices.maglev.rb from maglev
Copied migration 20221027234813_add_open_graph_tags_to_pages.maglev.rb from maglev
Copied migration 20221027234814_add_style_to_sites.maglev.rb from maglev
rake db:migrate
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
== 20221027234758 CreateActiveStorageTables: migrating ========================
-- create_table(:active_storage_blobs, {:id=>:primary_key})
-> 0.0038s
-- create_table(:active_storage_attachments, {:id=>:primary_key})
-> 0.0044s
-- create_table(:active_storage_variant_records, {:id=>:primary_key})
-> 0.0030s
== 20221027234758 CreateActiveStorageTables: migrated (0.0113s) ===============
== 20221027234801 CreateMaglevSites: migrating ================================
-- create_table(:maglev_sites)
-> 0.0026s
== 20221027234801 CreateMaglevSites: migrated (0.0026s) =======================
== 20221027234802 CreateMaglevPages: migrating ================================
-- create_table(:maglev_pages)
-> 0.0026s
-- add_index(:maglev_pages, :path, {:unique=>true})
-> 0.0005s
== 20221027234802 CreateMaglevPages: migrated (0.0032s) =======================
== 20221027234803 CreateMaglevSectionContent: migrating =======================
-- change_table(:maglev_sites)
-> 0.0010s
-- change_table(:maglev_pages)
-> 0.0004s
== 20221027234803 CreateMaglevSectionContent: migrated (0.0014s) ==============
== 20221027234804 CreateMaglevAssets: migrating ===============================
-- create_table(:maglev_assets)
-> 0.0029s
== 20221027234804 CreateMaglevAssets: migrated (0.0029s) ======================
== 20221027234805 SwitchToLocalizedPageFields: migrating ======================
-- remove_columns(:maglev_pages, :title, :seo_title, :meta_description)
-> 0.0009s
-- add_column(:maglev_pages, :title_translations, :jsonb, {:default=>{}})
-> 0.0005s
-- add_column(:maglev_pages, :seo_title_translations, :jsonb, {:default=>{}})
-> 0.0004s
-- add_column(:maglev_pages, :meta_description_translations, :jsonb, {:default=>{}})
-> 0.0004s
== 20221027234805 SwitchToLocalizedPageFields: migrated (0.0023s) =============
== 20221027234806 CreateMaglevPagePaths: migrating ============================
-- create_table(:maglev_page_paths)
-> 0.0026s
-- add_index(:maglev_page_paths, [:value, :locale], {:unique=>true})
-> 0.0005s
-- remove_column(:maglev_pages, :path, :string)
-> 0.0005s
== 20221027234806 CreateMaglevPagePaths: migrated (0.0037s) ===================
== 20221027234807 AddCanonicalToPages: migrating ==============================
-- add_column(:maglev_page_paths, :canonical, :boolean, {:null=>true, :default=>true})
-> 0.0008s
-- add_index(:maglev_page_paths, [:canonical, :maglev_page_id, :locale], {:unique=>true, :name=>"canonical_uniqueness"})
-> 0.0007s
== 20221027234807 AddCanonicalToPages: migrated (0.0015s) =====================
== 20221027234808 AddLocalesToSites: migrating ================================
-- add_column(:maglev_sites, :locales, :jsonb, {:default=>[]})
-> 0.0007s
== 20221027234808 AddLocalesToSites: migrated (0.0008s) =======================
== 20221027234809 TranslateSectionContent: migrating ==========================
-- remove_column(:maglev_sites, :sections, :jsonb, {:default=>[]})
-> 0.0006s
-- add_column(:maglev_sites, :sections_translations, :jsonb, {:default=>{}})
-> 0.0004s
-- remove_column(:maglev_pages, :sections, :jsonb, {:default=>[]})
-> 0.0004s
-- add_column(:maglev_pages, :sections_translations, :jsonb, {:default=>{}})
-> 0.0004s
== 20221027234809 TranslateSectionContent: migrated (0.0019s) =================
== 20221027234810 AddLockVersionToMaglevPages: migrating ======================
-- add_column(:maglev_sites, :lock_version, :integer)
-> 0.0006s
-- add_column(:maglev_pages, :lock_version, :integer)
-> 0.0003s
== 20221027234810 AddLockVersionToMaglevPages: migrated (0.0009s) =============
== 20221027234811 BetterPagePathCanonicalIndices: migrating ===================
-- remove_index(:maglev_page_paths, [:value, :locale], {:unique=>true})
-> 0.0031s
-- remove_index(:maglev_page_paths, [:canonical, :maglev_page_id, :locale], {:unique=>true, :name=>"canonical_uniqueness"})
-> 0.0014s
-- add_index(:maglev_page_paths, [:canonical, :locale, :value], {:name=>"canonical_speed"})
-> 0.0007s
-- add_index(:maglev_page_paths, [:canonical, :maglev_page_id, :locale, :value], {:unique=>true, :name=>"canonical_uniqueness"})
-> 0.0008s
== 20221027234811 BetterPagePathCanonicalIndices: migrated (0.0060s) ==========
== 20221027234812 FixPagePathIndices: migrating ===============================
-- remove_index(:maglev_page_paths, [:canonical, :maglev_page_id, :locale, :value], {:unique=>true, :name=>"canonical_uniqueness"})
-> 0.0022s
-- add_index(:maglev_page_paths, [:canonical, :maglev_page_id, :locale], {:name=>"scoped_canonical_speed"})
-> 0.0007s
== 20221027234812 FixPagePathIndices: migrated (0.0029s) ======================
== 20221027234813 AddOpenGraphTagsToPages: migrating ==========================
-- change_table(:maglev_pages)
-> 0.0016s
== 20221027234813 AddOpenGraphTagsToPages: migrated (0.0016s) =================
== 20221027234814 AddStyleToSites: migrating ==================================
-- change_table(:maglev_sites)
-> 0.0008s
== 20221027234814 AddStyleToSites: migrated (0.0008s) =========================
exist config
create config/initializers/maglev.rb
exist public
create public/theme/image-placeholder.jpg
generate maglev:theme
rails generate maglev:theme
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
Missing theme file(s) in /Users/drnic/workspace/maglev-demo/my-awesome-site/app/theme
exist app
create app/theme/theme.yml
create app/views/theme/layout.html.erb
insert config/routes.rb
Done! 🎉
You can now tweak /config/initializers/maglev.rb.
You can also modify your theme (in /app/theme and /app/views/theme)
and generate new sections with rails g maglev:section.
👉 The next step is to create a site using `rails maglev:create_site`.
🚨 Don't forget to do it in production as well!
generate maglev:hyperui:install
rails generate maglev:hyperui:install --force
exist app
create app/theme/sections/banner/banner_01.yml
create app/theme/sections/banner/banner_02.yml
create app/theme/sections/banner/banner_03.yml
create app/theme/sections/cta/cta_01.yml
create app/theme/sections/cta/cta_02.yml
create app/theme/sections/cta/cta_03.yml
create app/theme/sections/faq/faq_01.yml
create app/theme/sections/faq/faq_02.yml
create app/theme/sections/faq/faq_03.yml
create app/theme/sections/feature/feature_01.yml
create app/theme/sections/feature/feature_02.yml
create app/theme/sections/feature/feature_03.yml
create app/theme/sections/footer/footer_01.yml
create app/theme/sections/footer/footer_02.yml
create app/theme/sections/footer/footer_03.yml
create app/theme/sections/footer/footer_04.yml
create app/theme/sections/nav/nav_01.yml
create app/theme/sections/nav/nav_02.yml
create app/theme/sections/nav/nav_03.yml
create app/theme/sections/nav/nav_04.yml
create app/theme/sections/review/review_01.yml
create app/theme/sections/stat/stat_01.yml
create app/theme/sections/testimonial/testimonial_01.yml
create app/theme/sections/testimonial/testimonial_02.yml
create app/theme/sections/testimonial/testimonial_03.yml
force app/theme/theme.yml
create app/views/maglev/editor/_header.html.erb
force app/views/theme/layout.html.erb
create app/views/theme/sections/banner/banner_01.html.erb
create app/views/theme/sections/banner/banner_02.html.erb
create app/views/theme/sections/banner/banner_03.html.erb
create app/views/theme/sections/cta/cta_01.html.erb
create app/views/theme/sections/cta/cta_02.html.erb
create app/views/theme/sections/cta/cta_03.html.erb
create app/views/theme/sections/faq/faq_01.html.erb
create app/views/theme/sections/faq/faq_02.html.erb
create app/views/theme/sections/faq/faq_03.html.erb
create app/views/theme/sections/feature/feature_01.html.erb
create app/views/theme/sections/feature/feature_02.html.erb
create app/views/theme/sections/feature/feature_03.html.erb
create app/views/theme/sections/footer/footer_01.html.erb
create app/views/theme/sections/footer/footer_02.html.erb
create app/views/theme/sections/footer/footer_03.html.erb
create app/views/theme/sections/footer/footer_04.html.erb
create app/views/theme/sections/nav/nav_01.html.erb
create app/views/theme/sections/nav/nav_02.html.erb
create app/views/theme/sections/nav/nav_03.html.erb
create app/views/theme/sections/nav/nav_04.html.erb
create app/views/theme/sections/review/_grades.html.erb
create app/views/theme/sections/review/review_01.html.erb
create app/views/theme/sections/stat/stat_01.html.erb
create app/views/theme/sections/testimonial/testimonial_01.html.erb
create app/views/theme/sections/testimonial/testimonial_02.html.erb
create app/views/theme/sections/testimonial/testimonial_03.html.erb
exist public
create public/theme/banner/banner_01.jpg
create public/theme/banner/banner_02.jpg
create public/theme/banner/banner_03.jpg
create public/theme/cta/cta_01.jpg
create public/theme/cta/cta_02.jpg
create public/theme/cta/cta_03.jpg
create public/theme/faq/faq_01.jpg
create public/theme/faq/faq_02.jpg
create public/theme/faq/faq_03.jpg
create public/theme/feature/feature_01.jpg
create public/theme/feature/feature_02.jpg
create public/theme/feature/feature_03.jpg
create public/theme/footer/footer_01.jpg
create public/theme/footer/footer_02.jpg
create public/theme/footer/footer_03.jpg
create public/theme/footer/footer_04.jpg
identical public/theme/image-placeholder.jpg
create public/theme/logoipsum-white.svg
create public/theme/logoipsum.svg
create public/theme/marie-curie.jpg
create public/theme/nav/nav_01.jpg
create public/theme/nav/nav_02.jpg
create public/theme/nav/nav_03.jpg
create public/theme/nav/nav_04.jpg
create public/theme/review/review_01.jpg
create public/theme/stat/stat_01.jpg
create public/theme/testimonial/testimonial_01.jpg
create public/theme/testimonial/testimonial_02.jpg
create public/theme/testimonial/testimonial_03.jpg
rails maglev:create_site
🎉 Your site has been created with success!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment