diff --git a/.drone.yml b/.drone.yml index 037f8ab..ceaf12e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,6 +1,6 @@ kind: pipeline type: docker -name: lokal +name: memex steps: - name: restore-cache @@ -19,7 +19,7 @@ steps: - name: test image: elixir:1.14.1-alpine environment: - TEST_DATABASE_URL: ecto://postgres:postgres@database/lokal_test + TEST_DATABASE_URL: ecto://postgres:postgres@database/memex_test HOST: testing.example.tld MIX_HOME: /drone/src/.mix MIX_ARCHIVES: /drone/src/.mix/archives @@ -39,7 +39,7 @@ steps: image: thegeeklab/drone-docker-buildx privileged: true settings: - repo: shibaobun/lokal + repo: shibaobun/memex purge: true compress: true platforms: linux/amd64,linux/arm/v7 @@ -56,7 +56,7 @@ steps: image: thegeeklab/drone-docker-buildx privileged: true settings: - repo: shibaobun/lokal + repo: shibaobun/memex purge: true compress: true platforms: linux/amd64,linux/arm/v7 diff --git a/.gitignore b/.gitignore index 4f6ce1e..e2c2b69 100644 --- a/.gitignore +++ b/.gitignore @@ -20,7 +20,7 @@ erl_crash.dump *.ez # Ignore package tarball (built via "mix hex.build"). -lokal-*.tar +memex-*.tar # If NPM crashes, it generates a log, let's ignore it too. npm-debug.log diff --git a/Dockerfile b/Dockerfile index e38af29..b76d8b4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -45,10 +45,10 @@ RUN chown nobody:nobody /app USER nobody:nobody -COPY --from=build --chown=nobody:nobody /app/_build/prod/rel/lokal ./ +COPY --from=build --chown=nobody:nobody /app/_build/prod/rel/memex ./ COPY --from=build --chown=nobody:nobody /app/priv /app/priv RUN chmod +x /app/priv/random.sh ENV HOME=/app -CMD ["bin/lokal", "start"] +CMD ["bin/memex", "start"] diff --git a/assets/js/app.js b/assets/js/app.js index bb1b470..a399256 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -60,7 +60,7 @@ liveSocket.connect() window.liveSocket = liveSocket // Copy to clipboard -window.addEventListener('lokal:clipcopy', (event) => { +window.addEventListener('memex:clipcopy', (event) => { if ('clipboard' in navigator) { const text = event.target.textContent navigator.clipboard.writeText(text) diff --git a/config/config.exs b/config/config.exs index 2f42758..af29e4e 100644 --- a/config/config.exs +++ b/config/config.exs @@ -7,24 +7,24 @@ # General application configuration import Config -config :lokal, - ecto_repos: [Lokal.Repo], +config :memex, + ecto_repos: [Memex.Repo], generators: [binary_id: true] -config :lokal, Lokal.Accounts, registration: System.get_env("REGISTRATION", "invite") +config :memex, Memex.Accounts, registration: System.get_env("REGISTRATION", "invite") # Configures the endpoint -config :lokal, LokalWeb.Endpoint, +config :memex, MemexWeb.Endpoint, url: [scheme: "https", host: System.get_env("HOST") || "localhost", port: "443"], http: [port: String.to_integer(System.get_env("PORT") || "4000")], secret_key_base: "KH59P0iZixX5gP/u+zkxxG8vAAj6vgt0YqnwEB5JP5K+E567SsqkCz69uWShjE7I", - render_errors: [view: LokalWeb.ErrorView, accepts: ~w(html json), layout: false], - pubsub_server: Lokal.PubSub, + render_errors: [view: MemexWeb.ErrorView, accepts: ~w(html json), layout: false], + pubsub_server: Memex.PubSub, live_view: [signing_salt: "zOLgd3lr"] -config :lokal, Lokal.Application, automigrate: false +config :memex, Memex.Application, automigrate: false -config :lokal, :generators, +config :memex, :generators, migration: true, binary_id: true, sample_binary_id: "11111111-1111-1111-1111-111111111111" @@ -36,7 +36,7 @@ config :lokal, :generators, # # For production it's recommended to configure a different adapter # at the `config/runtime.exs`. -config :lokal, Lokal.Mailer, adapter: Swoosh.Adapters.Local +config :memex, Memex.Mailer, adapter: Swoosh.Adapters.Local # Swoosh API client is needed for adapters other than SMTP. config :swoosh, :api_client, false @@ -45,8 +45,8 @@ config :swoosh, :api_client, false config :gettext, :default_locale, "en_US" # Configure Oban -config :lokal, Oban, - repo: Lokal.Repo, +config :memex, Oban, + repo: Memex.Repo, plugins: [Oban.Plugins.Pruner], queues: [default: 10, mailers: 20] diff --git a/config/dev.exs b/config/dev.exs index 0a42474..5d8d90d 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -1,7 +1,7 @@ import Config # Configure your database -config :lokal, Lokal.Repo, +config :memex, Memex.Repo, show_sensitive_data_on_connection_error: true, pool_size: 10 @@ -11,7 +11,7 @@ config :lokal, Lokal.Repo, # The watchers configuration can be used to run external # watchers to your application. For example, we use it # with esbuild to bundle .js and .css sources. -config :lokal, LokalWeb.Endpoint, +config :memex, MemexWeb.Endpoint, check_origin: false, code_reloader: true, debug_errors: true, @@ -54,13 +54,13 @@ config :lokal, LokalWeb.Endpoint, # different ports. # Watch static and templates for browser reloading. -config :lokal, LokalWeb.Endpoint, +config :memex, MemexWeb.Endpoint, live_reload: [ patterns: [ ~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$", ~r"priv/gettext/.*(po)$", - ~r"lib/lokal_web/(live|views)/.*(ex)$", - ~r"lib/lokal_web/templates/.*(eex)$" + ~r"lib/memex_web/(live|views)/.*(ex)$", + ~r"lib/memex_web/templates/.*(eex)$" ] ] diff --git a/config/prod.exs b/config/prod.exs index 6bdebd1..36fcb4c 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -9,7 +9,7 @@ import Config # manifest is generated by the `mix phx.digest` task, # which you should run after static files are built and # before starting your production server. -config :lokal, LokalWeb.Endpoint, cache_static_manifest: "priv/static/cache_manifest.json" +config :memex, MemexWeb.Endpoint, cache_static_manifest: "priv/static/cache_manifest.json" # Do not print debug messages in production config :logger, level: :info @@ -19,7 +19,7 @@ config :logger, level: :info # To get SSL working, you will need to add the `https` key # to the previous section and set your `:url` port to 443: # -# config :lokal, LokalWeb.Endpoint, +# config :memex, MemexWeb.Endpoint, # ..., # url: [host: "example.com", port: 443], # https: [ @@ -43,7 +43,7 @@ config :logger, level: :info # We also recommend setting `force_ssl` in your endpoint, ensuring # no data is ever sent via http, always redirecting to https: # -# config :lokal, LokalWeb.Endpoint, +# config :memex, MemexWeb.Endpoint, # force_ssl: [hsts: true] # # Check `Plug.SSL` for all available options in `force_ssl`. diff --git a/config/runtime.exs b/config/runtime.exs index ddba190..d1a32a8 100644 --- a/config/runtime.exs +++ b/config/runtime.exs @@ -9,7 +9,7 @@ import Config # Start the phoenix server if environment is set and running in a release if System.get_env("PHX_SERVER") && System.get_env("RELEASE_NAME") do - config :lokal, LokalWeb.Endpoint, server: true + config :memex, MemexWeb.Endpoint, server: true end # Set default locale @@ -21,28 +21,28 @@ database_url = if config_env() == :test do System.get_env( "TEST_DATABASE_URL", - "ecto://postgres:postgres@localhost/lokal_test#{System.get_env("MIX_TEST_PARTITION")}" + "ecto://postgres:postgres@localhost/memex_test#{System.get_env("MIX_TEST_PARTITION")}" ) else - System.get_env("DATABASE_URL", "ecto://postgres:postgres@lokal-db/lokal") + System.get_env("DATABASE_URL", "ecto://postgres:postgres@memex-db/memex") end host = System.get_env("HOST") || - raise "No hostname set! Must be the domain and tld like `lokal.bubbletea.dev`." + raise "No hostname set! Must be the domain and tld like `memex.bubbletea.dev`." interface = if config_env() in [:dev, :test], do: {0, 0, 0, 0}, else: {0, 0, 0, 0, 0, 0, 0, 0} -config :lokal, Lokal.Repo, +config :memex, Memex.Repo, # ssl: true, url: database_url, pool_size: String.to_integer(System.get_env("POOL_SIZE", "10")), socket_options: maybe_ipv6 -config :lokal, LokalWeb.Endpoint, +config :memex, MemexWeb.Endpoint, url: [scheme: "https", host: host, port: 443], http: [ # See the documentation on https://hexdocs.pm/plug_cowboy/Plug.Cowboy.html @@ -53,7 +53,7 @@ config :lokal, LokalWeb.Endpoint, server: true if config_env() in [:dev, :prod] do - config :lokal, Lokal.Accounts, registration: System.get_env("REGISTRATION", "invite") + config :memex, Memex.Accounts, registration: System.get_env("REGISTRATION", "invite") end if config_env() == :prod do @@ -69,13 +69,13 @@ if config_env() == :prod do You can generate one by calling: mix phx.gen.secret """ - config :lokal, LokalWeb.Endpoint, secret_key_base: secret_key_base + config :memex, MemexWeb.Endpoint, secret_key_base: secret_key_base # Automatically apply migrations - config :lokal, Lokal.Application, automigrate: true + config :memex, Memex.Application, automigrate: true # Set up SMTP settings - config :lokal, Lokal.Mailer, + config :memex, Memex.Mailer, adapter: Swoosh.Adapters.SMTP, relay: System.get_env("SMTP_HOST") || raise("No SMTP_HOST set!"), port: System.get_env("SMTP_PORT", "587"), @@ -83,14 +83,14 @@ if config_env() == :prod do password: System.get_env("SMTP_PASSWORD") || raise("No SMTP_PASSWORD set!"), ssl: System.get_env("SMTP_SSL") == "true", email_from: System.get_env("EMAIL_FROM", "no-reply@#{System.get_env("HOST")}"), - email_name: System.get_env("EMAIL_NAME", "Lokal") + email_name: System.get_env("EMAIL_NAME", "Memex") # ## Using releases # # If you are doing OTP releases, you need to instruct Phoenix # to start each relevant endpoint: # - # config :lokal, LokalWeb.Endpoint, server: true + # config :memex, MemexWeb.Endpoint, server: true # # Then you can assemble a release by calling `mix release`. # See `mix help release` for more information. diff --git a/config/test.exs b/config/test.exs index 2011229..086a97c 100644 --- a/config/test.exs +++ b/config/test.exs @@ -8,22 +8,22 @@ config :bcrypt_elixir, :log_rounds, 1 # The MIX_TEST_PARTITION environment variable can be used # to provide built-in test partitioning in CI environment. # Run `mix help test` for more information. -config :lokal, Lokal.Repo, +config :memex, Memex.Repo, pool: Ecto.Adapters.SQL.Sandbox, pool_size: 10 # We don't run a server during test. If one is required, # you can enable the server option below. -config :lokal, LokalWeb.Endpoint, +config :memex, MemexWeb.Endpoint, http: [ip: {0, 0, 0, 0}, port: 4002], secret_key_base: "S3qq9QtUdsFtlYej+HTjAVN95uP5i5tf2sPYINWSQfCKJghFj2B1+wTAoljZyHOK", server: false # In test we don't send emails. -config :lokal, Lokal.Mailer, adapter: Swoosh.Adapters.Test +config :memex, Memex.Mailer, adapter: Swoosh.Adapters.Test # Don't require invites for signups -config :lokal, Lokal.Accounts, registration: "public" +config :memex, Memex.Accounts, registration: "public" # Print only warnings and errors during test config :logger, level: :warn @@ -32,4 +32,4 @@ config :logger, level: :warn config :phoenix, :plug_init_mode, :runtime # Disable Oban -config :lokal, Oban, queues: false, plugins: false +config :memex, Oban, queues: false, plugins: false diff --git a/contributing.md b/contributing.md index 7ffed2f..699493b 100644 --- a/contributing.md +++ b/contributing.md @@ -77,21 +77,21 @@ Check them out! For development, I recommend setting environment variables with [direnv](https://direnv.net). -By default, Lokal will always bind to all external IPv4 and IPv6 addresses in +By default, Memex will always bind to all external IPv4 and IPv6 addresses in `dev` and `prod` mode, respectively. If you would like to use different values, they will need to be overridden in `config/dev.exs` and `config/runtime.exs` for `dev` and `prod` modes, respectively. ## `MIX_ENV=dev` -In `dev` mode, Lokal will listen for these environment variables at runtime. +In `dev` mode, Memex will listen for these environment variables at runtime. - `HOST`: External url to generate links with. Set this especially if you're behind a reverse proxy. Defaults to `localhost`. External URLs will always be generated with `https://` and port `443`. - `PORT`: Internal port to bind to. Defaults to `4000`. - `DATABASE_URL`: Controls the database url to connect to. Defaults to - `ecto://postgres:postgres@localhost/lokal_dev`. + `ecto://postgres:postgres@localhost/memex_dev`. - `ECTO_IPV6`: Controls if Ecto should use IPv6 to connect to PostgreSQL. Defaults to `false`. - `POOL_SIZE`: Controls the pool size to use with PostgreSQL. Defaults to `10`. @@ -100,20 +100,20 @@ In `dev` mode, Lokal will listen for these environment variables at runtime. ## `MIX_ENV=test` -In `test` mode (or in the Docker container), Lokal will listen for the same environment variables as dev mode, but also include the following at runtime: +In `test` mode (or in the Docker container), Memex will listen for the same environment variables as dev mode, but also include the following at runtime: - `TEST_DATABASE_URL`: REPLACES `DATABASE_URL`. Controls the database url to - connect to. Defaults to `ecto://postgres:postgres@localhost/lokal_test`. + connect to. Defaults to `ecto://postgres:postgres@localhost/memex_test`. - `MIX_TEST_PARTITION`: Only used if `TEST_DATABASE_URL` is not specified. Appended to the default database url if you would like to partition your test databases. Defaults to not set. ## `MIX_ENV=prod` -In `prod` mode (or in the Docker container), Lokal will listen for the same environment variables as dev mode, but also include the following at runtime: +In `prod` mode (or in the Docker container), Memex will listen for the same environment variables as dev mode, but also include the following at runtime: - `SECRET_KEY_BASE`: Secret key base used to sign cookies. Must be generated - with `docker run -it shibaobun/lokal mix phx.gen.secret` and set for server to start. + with `docker run -it shibaobun/memex mix phx.gen.secret` and set for server to start. - `SMTP_HOST`: The url for your SMTP email provider. Must be set - `SMTP_PORT`: The port for your SMTP relay. Defaults to `587`. - `SMTP_USERNAME`: The username for your SMTP relay. Must be set! @@ -121,4 +121,4 @@ In `prod` mode (or in the Docker container), Lokal will listen for the same envi - `SMTP_SSL`: Set to `true` to enable SSL for emails. Defaults to `false`. - `EMAIL_FROM`: Sets the sender email in sent emails. Defaults to `no-reply@HOST` where `HOST` was previously defined. -- `EMAIL_NAME`: Sets the sender name in sent emails. Defaults to "Lokal". +- `EMAIL_NAME`: Sets the sender name in sent emails. Defaults to "Memex". diff --git a/docker-compose.yml b/docker-compose.yml index 00dc048..2f2c309 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,16 +1,16 @@ version: '3' services: - lokal: + memex: build: context: . - container_name: lokal + container_name: memex restart: always environment: # HOST must be set! # - HOST=your.domain.com - - DATABASE_URL=ecto://postgres:postgres@lokal-db/lokal - # Use `docker run -it shibaobun/lokal /app/priv/random.sh` to generate a secret key base + - DATABASE_URL=ecto://postgres:postgres@memex-db/memex + # Use `docker run -it shibaobun/memex /app/priv/random.sh` to generate a secret key base # - SECRET_KEY_BASE=change-me-this-is-really-important-seriously-change-it # uncomment to enable public sign ups, not recommended # - REGISTRATION=public @@ -24,21 +24,21 @@ services: # optional, default is false # - SMTP_SSL=false # optional, default is format below - # - EMAIL_FROM=no-reply@lokal.example.tld - # optional, default is "Lokal" - # - EMAIL_NAME=Lokal + # - EMAIL_FROM=no-reply@memex.example.tld + # optional, default is "Memex" + # - EMAIL_NAME=Memex expose: - "4000" depends_on: - - lokal-db + - memex-db - lokal-db: + memex-db: image: postgres:13 - container_name: lokal-db + container_name: memex-db environment: - POSTGRES_USER="postgres" - POSTGRES_PASSWORD="postgres" - - POSTGRES_DB="lokal" + - POSTGRES_DB="memex" restart: always volumes: - ./data:/var/lib/postgresql/data diff --git a/lib/lokal_web/views/email_view.ex b/lib/lokal_web/views/email_view.ex deleted file mode 100644 index 3900c9d..0000000 --- a/lib/lokal_web/views/email_view.ex +++ /dev/null @@ -1,7 +0,0 @@ -defmodule LokalWeb.EmailView do - @moduledoc """ - A view for email-related helper functions - """ - use LokalWeb, :view - alias LokalWeb.{Endpoint, HomeLive} -end diff --git a/lib/lokal_web/views/home_view.ex b/lib/lokal_web/views/home_view.ex deleted file mode 100644 index e35e20d..0000000 --- a/lib/lokal_web/views/home_view.ex +++ /dev/null @@ -1,3 +0,0 @@ -defmodule LokalWeb.PageView do - use LokalWeb, :view -end diff --git a/lib/lokal_web/views/user_confirmation_view.ex b/lib/lokal_web/views/user_confirmation_view.ex deleted file mode 100644 index c9ed551..0000000 --- a/lib/lokal_web/views/user_confirmation_view.ex +++ /dev/null @@ -1,4 +0,0 @@ -defmodule LokalWeb.UserConfirmationView do - use LokalWeb, :view - alias Lokal.Accounts -end diff --git a/lib/lokal_web/views/user_registration_view.ex b/lib/lokal_web/views/user_registration_view.ex deleted file mode 100644 index 73a9405..0000000 --- a/lib/lokal_web/views/user_registration_view.ex +++ /dev/null @@ -1,3 +0,0 @@ -defmodule LokalWeb.UserRegistrationView do - use LokalWeb, :view -end diff --git a/lib/lokal_web/views/user_reset_password_view.ex b/lib/lokal_web/views/user_reset_password_view.ex deleted file mode 100644 index 6232dc4..0000000 --- a/lib/lokal_web/views/user_reset_password_view.ex +++ /dev/null @@ -1,4 +0,0 @@ -defmodule LokalWeb.UserResetPasswordView do - use LokalWeb, :view - alias Lokal.Accounts -end diff --git a/lib/lokal_web/views/user_session_view.ex b/lib/lokal_web/views/user_session_view.ex deleted file mode 100644 index bb9bf6f..0000000 --- a/lib/lokal_web/views/user_session_view.ex +++ /dev/null @@ -1,4 +0,0 @@ -defmodule LokalWeb.UserSessionView do - use LokalWeb, :view - alias Lokal.Accounts -end diff --git a/lib/lokal_web/views/user_settings_view.ex b/lib/lokal_web/views/user_settings_view.ex deleted file mode 100644 index 3cbe04c..0000000 --- a/lib/lokal_web/views/user_settings_view.ex +++ /dev/null @@ -1,3 +0,0 @@ -defmodule LokalWeb.UserSettingsView do - use LokalWeb, :view -end diff --git a/lib/lokal.ex b/lib/memex.ex similarity index 71% rename from lib/lokal.ex rename to lib/memex.ex index f9e54e4..3ac7ac1 100644 --- a/lib/lokal.ex +++ b/lib/memex.ex @@ -1,6 +1,6 @@ -defmodule Lokal do +defmodule Memex do @moduledoc """ - Lokal keeps the contexts that define your domain + Memex keeps the contexts that define your domain and business logic. Contexts are also responsible for managing your data, regardless diff --git a/lib/lokal/accounts.ex b/lib/memex/accounts.ex similarity index 98% rename from lib/lokal/accounts.ex rename to lib/memex/accounts.ex index f3e9de3..40a8a3c 100644 --- a/lib/lokal/accounts.ex +++ b/lib/memex/accounts.ex @@ -1,11 +1,11 @@ -defmodule Lokal.Accounts do +defmodule Memex.Accounts do @moduledoc """ The Accounts context. """ import Ecto.Query, warn: false - alias Lokal.{Mailer, Repo} - alias Lokal.Accounts.{Invite, Invites, User, UserToken} + alias Memex.{Mailer, Repo} + alias Memex.Accounts.{Invite, Invites, User, UserToken} alias Ecto.{Changeset, Multi} alias Oban.Job @@ -385,7 +385,7 @@ defmodule Lokal.Accounts do """ @spec allow_registration?() :: boolean() def allow_registration? do - Application.get_env(:lokal, Lokal.Accounts)[:registration] == "public" or + Application.get_env(:memex, Memex.Accounts)[:registration] == "public" or list_users_by_role(:admin) |> Enum.empty?() end diff --git a/lib/lokal/accounts/email.ex b/lib/memex/accounts/email.ex similarity index 66% rename from lib/lokal/accounts/email.ex rename to lib/memex/accounts/email.ex index 7c38e0a..1f487ec 100644 --- a/lib/lokal/accounts/email.ex +++ b/lib/memex/accounts/email.ex @@ -1,16 +1,16 @@ -defmodule Lokal.Email do +defmodule Memex.Email do @moduledoc """ Emails that can be sent using Swoosh. You can find the base email templates at - `lib/Lokal_web/templates/layout/email.html.heex` for html emails and - `lib/Lokal_web/templates/layout/email.txt.heex` for text emails. + `lib/Memex_web/templates/layout/email.html.heex` for html emails and + `lib/Memex_web/templates/layout/email.txt.heex` for text emails. """ - use Phoenix.Swoosh, view: LokalWeb.EmailView, layout: {LokalWeb.LayoutView, :email} - import LokalWeb.Gettext - alias Lokal.Accounts.User - alias LokalWeb.EmailView + use Phoenix.Swoosh, view: MemexWeb.EmailView, layout: {MemexWeb.LayoutView, :email} + import MemexWeb.Gettext + alias Memex.Accounts.User + alias MemexWeb.EmailView @typedoc """ Represents an HTML and text body email that can be sent @@ -19,29 +19,29 @@ defmodule Lokal.Email do @spec base_email(User.t(), String.t()) :: t() defp base_email(%User{email: email}, subject) do - from = Application.get_env(:Lokal, Lokal.Mailer)[:email_from] || "noreply@localhost" - name = Application.get_env(:Lokal, Lokal.Mailer)[:email_name] + from = Application.get_env(:Memex, Memex.Mailer)[:email_from] || "noreply@localhost" + name = Application.get_env(:Memex, Memex.Mailer)[:email_name] new() |> to(email) |> from({name, from}) |> subject(subject) end @spec generate_email(key :: String.t(), User.t(), attrs :: map()) :: t() def generate_email("welcome", user, %{"url" => url}) do user - |> base_email(dgettext("emails", "Confirm your Lokal account")) + |> base_email(dgettext("emails", "Confirm your Memex account")) |> render_body("confirm_email.html", %{user: user, url: url}) |> text_body(EmailView.render("confirm_email.txt", %{user: user, url: url})) end def generate_email("reset_password", user, %{"url" => url}) do user - |> base_email(dgettext("emails", "Reset your Lokal password")) + |> base_email(dgettext("emails", "Reset your Memex password")) |> render_body("reset_password.html", %{user: user, url: url}) |> text_body(EmailView.render("reset_password.txt", %{user: user, url: url})) end def generate_email("update_email", user, %{"url" => url}) do user - |> base_email(dgettext("emails", "Update your Lokal email")) + |> base_email(dgettext("emails", "Update your Memex email")) |> render_body("update_email.html", %{user: user, url: url}) |> text_body(EmailView.render("update_email.txt", %{user: user, url: url})) end diff --git a/lib/lokal/accounts/email_worker.ex b/lib/memex/accounts/email_worker.ex similarity index 82% rename from lib/lokal/accounts/email_worker.ex rename to lib/memex/accounts/email_worker.ex index fc94144..0818cfd 100644 --- a/lib/lokal/accounts/email_worker.ex +++ b/lib/memex/accounts/email_worker.ex @@ -1,10 +1,10 @@ -defmodule Lokal.EmailWorker do +defmodule Memex.EmailWorker do @moduledoc """ Oban worker that dispatches emails """ use Oban.Worker, queue: :mailers, tags: ["email"] - alias Lokal.{Accounts, Email, Mailer} + alias Memex.{Accounts, Email, Mailer} @impl Oban.Worker def perform(%Oban.Job{args: %{"email" => email, "user_id" => user_id, "attrs" => attrs}}) do diff --git a/lib/lokal/accounts/invite.ex b/lib/memex/accounts/invite.ex similarity index 96% rename from lib/lokal/accounts/invite.ex rename to lib/memex/accounts/invite.ex index 35951a8..d887cf2 100644 --- a/lib/lokal/accounts/invite.ex +++ b/lib/memex/accounts/invite.ex @@ -1,4 +1,4 @@ -defmodule Lokal.Accounts.Invite do +defmodule Memex.Accounts.Invite do @moduledoc """ An invite, created by an admin to allow someone to join their instance. An invite can be enabled or disabled, and can have an optional number of uses if @@ -8,7 +8,7 @@ defmodule Lokal.Accounts.Invite do use Ecto.Schema import Ecto.Changeset alias Ecto.{Association, Changeset, UUID} - alias Lokal.Accounts.User + alias Memex.Accounts.User @primary_key {:id, :binary_id, autogenerate: true} @foreign_key_type :binary_id diff --git a/lib/lokal/accounts/invites.ex b/lib/memex/accounts/invites.ex similarity index 98% rename from lib/lokal/accounts/invites.ex rename to lib/memex/accounts/invites.ex index 06fd39c..2bc74cf 100644 --- a/lib/lokal/accounts/invites.ex +++ b/lib/memex/accounts/invites.ex @@ -1,12 +1,12 @@ -defmodule Lokal.Accounts.Invites do +defmodule Memex.Accounts.Invites do @moduledoc """ The Invites context. """ import Ecto.Query, warn: false alias Ecto.Multi - alias Lokal.Accounts.{Invite, User} - alias Lokal.Repo + alias Memex.Accounts.{Invite, User} + alias Memex.Repo @invite_token_length 20 diff --git a/lib/lokal/accounts/user.ex b/lib/memex/accounts/user.ex similarity index 97% rename from lib/lokal/accounts/user.ex rename to lib/memex/accounts/user.ex index e75d84c..14d4d51 100644 --- a/lib/lokal/accounts/user.ex +++ b/lib/memex/accounts/user.ex @@ -1,13 +1,13 @@ -defmodule Lokal.Accounts.User do +defmodule Memex.Accounts.User do @moduledoc """ - A Lokal user + A Memex user """ use Ecto.Schema import Ecto.Changeset - import LokalWeb.Gettext + import MemexWeb.Gettext alias Ecto.{Association, Changeset, UUID} - alias Lokal.Accounts.{Invite, User} + alias Memex.Accounts.{Invite, User} @derive {Jason.Encoder, only: [ @@ -99,7 +99,7 @@ defmodule Lokal.Accounts.User do message: dgettext("errors", "must have the @ sign and no spaces") ) |> validate_length(:email, max: 160) - |> unsafe_validate_unique(:email, Lokal.Repo) + |> unsafe_validate_unique(:email, Memex.Repo) |> unique_constraint(:email) end diff --git a/lib/lokal/accounts/user_token.ex b/lib/memex/accounts/user_token.ex similarity index 98% rename from lib/lokal/accounts/user_token.ex rename to lib/memex/accounts/user_token.ex index 5cc012d..74f387d 100644 --- a/lib/lokal/accounts/user_token.ex +++ b/lib/memex/accounts/user_token.ex @@ -1,4 +1,4 @@ -defmodule Lokal.Accounts.UserToken do +defmodule Memex.Accounts.UserToken do @moduledoc """ Schema for a user's session token """ @@ -6,7 +6,7 @@ defmodule Lokal.Accounts.UserToken do use Ecto.Schema import Ecto.Query alias Ecto.{Association, UUID} - alias Lokal.Accounts.User + alias Memex.Accounts.User @hash_algorithm :sha256 @rand_size 32 diff --git a/lib/lokal/application.ex b/lib/memex/application.ex similarity index 70% rename from lib/lokal/application.ex rename to lib/memex/application.ex index 93f9644..0331b08 100644 --- a/lib/lokal/application.ex +++ b/lib/memex/application.ex @@ -1,27 +1,27 @@ -defmodule Lokal.Application do +defmodule Memex.Application do # See https://hexdocs.pm/elixir/Application.html # for more information on OTP Applications @moduledoc false use Application - alias Lokal.Logger + alias Memex.Logger @impl true def start(_type, _args) do children = [ # Start the Ecto repository - Lokal.Repo, + Memex.Repo, # Start the Telemetry supervisor - LokalWeb.Telemetry, + MemexWeb.Telemetry, # Start the PubSub system - {Phoenix.PubSub, name: Lokal.PubSub}, + {Phoenix.PubSub, name: Memex.PubSub}, # Start the Endpoint (http/https) - LokalWeb.Endpoint, + MemexWeb.Endpoint, # Add Oban {Oban, oban_config()}, - Lokal.Repo.Migrator - # Start a worker by calling: Lokal.Worker.start_link(arg) - # {Lokal.Worker, arg} + Memex.Repo.Migrator + # Start a worker by calling: Memex.Worker.start_link(arg) + # {Memex.Worker, arg} ] # Oban events logging https://hexdocs.pm/oban/Oban.html#module-reporting-errors @@ -39,7 +39,7 @@ defmodule Lokal.Application do # See https://hexdocs.pm/elixir/Supervisor.html # for other strategies and supported options - opts = [strategy: :one_for_one, name: Lokal.Supervisor] + opts = [strategy: :one_for_one, name: Memex.Supervisor] Supervisor.start_link(children, opts) end @@ -47,11 +47,11 @@ defmodule Lokal.Application do # whenever the application is updated. @impl true def config_change(changed, _new, removed) do - LokalWeb.Endpoint.config_change(changed, removed) + MemexWeb.Endpoint.config_change(changed, removed) :ok end defp oban_config do - Application.fetch_env!(:lokal, Oban) + Application.fetch_env!(:memex, Oban) end end diff --git a/lib/lokal/logger.ex b/lib/memex/logger.ex similarity index 98% rename from lib/lokal/logger.ex rename to lib/memex/logger.ex index 0e32b43..098bdfc 100644 --- a/lib/lokal/logger.ex +++ b/lib/memex/logger.ex @@ -1,4 +1,4 @@ -defmodule Lokal.Logger do +defmodule Memex.Logger do @moduledoc """ Custom logger for telemetry events diff --git a/lib/lokal/mailer.ex b/lib/memex/mailer.ex similarity index 91% rename from lib/lokal/mailer.ex rename to lib/memex/mailer.ex index 792696f..e5a1d98 100644 --- a/lib/lokal/mailer.ex +++ b/lib/memex/mailer.ex @@ -1,4 +1,4 @@ -defmodule Lokal.Mailer do +defmodule Memex.Mailer do @moduledoc """ Mailer adapter for emails @@ -6,8 +6,8 @@ defmodule Lokal.Mailer do json with Jason, which restricts the use of structs. """ - use Swoosh.Mailer, otp_app: :lokal - alias Lokal.{Accounts.User, EmailWorker} + use Swoosh.Mailer, otp_app: :memex + alias Memex.{Accounts.User, EmailWorker} alias Oban.Job @doc """ diff --git a/lib/lokal/release.ex b/lib/memex/release.ex similarity index 92% rename from lib/lokal/release.ex rename to lib/memex/release.ex index 0726cc5..a1ba65a 100644 --- a/lib/lokal/release.ex +++ b/lib/memex/release.ex @@ -1,9 +1,9 @@ -defmodule Lokal.Release do +defmodule Memex.Release do @moduledoc """ Contains mix tasks that can used in generated releases """ - @app :lokal + @app :memex def rollback(repo, version) do load_app() diff --git a/lib/lokal/repo.ex b/lib/memex/repo.ex similarity index 55% rename from lib/lokal/repo.ex rename to lib/memex/repo.ex index bd4a401..254c067 100644 --- a/lib/lokal/repo.ex +++ b/lib/memex/repo.ex @@ -1,5 +1,5 @@ -defmodule Lokal.Repo do +defmodule Memex.Repo do use Ecto.Repo, - otp_app: :lokal, + otp_app: :memex, adapter: Ecto.Adapters.Postgres end diff --git a/lib/lokal/repo/migrator.ex b/lib/memex/repo/migrator.ex similarity index 63% rename from lib/lokal/repo/migrator.ex rename to lib/memex/repo/migrator.ex index b1892c8..5ea929f 100644 --- a/lib/lokal/repo/migrator.ex +++ b/lib/memex/repo/migrator.ex @@ -1,4 +1,4 @@ -defmodule Lokal.Repo.Migrator do +defmodule Memex.Repo.Migrator do @moduledoc """ Genserver to automatically perform all migration on app start """ @@ -15,11 +15,11 @@ defmodule Lokal.Repo.Migrator do end def migrate! do - path = Application.app_dir(:lokal, "priv/repo/migrations") - Ecto.Migrator.run(Lokal.Repo, path, :up, all: true) + path = Application.app_dir(:memex, "priv/repo/migrations") + Ecto.Migrator.run(Memex.Repo, path, :up, all: true) end defp automigrate_enabled? do - Application.get_env(:lokal, Lokal.Application, automigrate: false)[:automigrate] + Application.get_env(:memex, Memex.Application, automigrate: false)[:automigrate] end end diff --git a/lib/lokal_web.ex b/lib/memex_web.ex similarity index 80% rename from lib/lokal_web.ex rename to lib/memex_web.ex index ff65685..8035f6f 100644 --- a/lib/lokal_web.ex +++ b/lib/memex_web.ex @@ -1,12 +1,12 @@ -defmodule LokalWeb do +defmodule MemexWeb do @moduledoc """ The entrypoint for defining your web interface, such as controllers, views, channels and so on. This can be used in your application as: - use LokalWeb, :controller - use LokalWeb, :view + use MemexWeb, :controller + use MemexWeb, :view The definitions below will be executed for every view, controller, etc, so keep them short and clean, focused @@ -19,19 +19,19 @@ defmodule LokalWeb do def controller do quote do - use Phoenix.Controller, namespace: LokalWeb + use Phoenix.Controller, namespace: MemexWeb import Plug.Conn - import LokalWeb.Gettext - alias LokalWeb.Router.Helpers, as: Routes + import MemexWeb.Gettext + alias MemexWeb.Router.Helpers, as: Routes end end def view do quote do use Phoenix.View, - root: "lib/lokal_web/templates", - namespace: LokalWeb + root: "lib/memex_web/templates", + namespace: MemexWeb # Import convenience functions from controllers import Phoenix.Controller, @@ -45,9 +45,9 @@ defmodule LokalWeb do def live_view do quote do use Phoenix.LiveView, - layout: {LokalWeb.LayoutView, "live.html"} + layout: {MemexWeb.LayoutView, "live.html"} - on_mount LokalWeb.InitAssigns + on_mount MemexWeb.InitAssigns unquote(view_helpers()) end end @@ -82,7 +82,7 @@ defmodule LokalWeb do quote do use Phoenix.Channel # credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse - import LokalWeb.Gettext + import MemexWeb.Gettext end end @@ -95,9 +95,9 @@ defmodule LokalWeb do # Import LiveView and .heex helpers (live_render, link, <.form>, etc) # Import basic rendering functionality (render, render_layout, etc) import Phoenix.{Component, View} - import LokalWeb.{ErrorHelpers, Gettext, LiveHelpers, ViewHelpers} + import MemexWeb.{ErrorHelpers, Gettext, LiveHelpers, ViewHelpers} - alias LokalWeb.Router.Helpers, as: Routes + alias MemexWeb.Router.Helpers, as: Routes end end diff --git a/lib/lokal_web/components/invite_card.ex b/lib/memex_web/components/invite_card.ex similarity index 93% rename from lib/lokal_web/components/invite_card.ex rename to lib/memex_web/components/invite_card.ex index 6dd0af6..175d000 100644 --- a/lib/lokal_web/components/invite_card.ex +++ b/lib/memex_web/components/invite_card.ex @@ -1,11 +1,11 @@ -defmodule LokalWeb.Components.InviteCard do +defmodule MemexWeb.Components.InviteCard do @moduledoc """ Display card for an invite """ - use LokalWeb, :component - alias Lokal.Accounts.{Invite, Invites, User} - alias LokalWeb.Endpoint + use MemexWeb, :component + alias Memex.Accounts.{Invite, Invites, User} + alias MemexWeb.Endpoint attr :invite, Invite, required: true attr :current_user, User, required: true diff --git a/lib/lokal_web/components/table_component.ex b/lib/memex_web/components/table_component.ex similarity index 97% rename from lib/lokal_web/components/table_component.ex rename to lib/memex_web/components/table_component.ex index 67b383e..16fe3c5 100644 --- a/lib/lokal_web/components/table_component.ex +++ b/lib/memex_web/components/table_component.ex @@ -1,4 +1,4 @@ -defmodule LokalWeb.Components.TableComponent do +defmodule MemexWeb.Components.TableComponent do @moduledoc """ Livecomponent that presents a resortable table @@ -19,7 +19,7 @@ defmodule LokalWeb.Components.TableComponent do content. """ - use LokalWeb, :live_component + use MemexWeb, :live_component alias Phoenix.LiveView.Socket require Integer diff --git a/lib/lokal_web/components/table_component.html.heex b/lib/memex_web/components/table_component.html.heex similarity index 100% rename from lib/lokal_web/components/table_component.html.heex rename to lib/memex_web/components/table_component.html.heex diff --git a/lib/lokal_web/components/topbar.ex b/lib/memex_web/components/topbar.ex similarity index 95% rename from lib/lokal_web/components/topbar.ex rename to lib/memex_web/components/topbar.ex index 2ef62cd..72e5fde 100644 --- a/lib/lokal_web/components/topbar.ex +++ b/lib/memex_web/components/topbar.ex @@ -1,12 +1,12 @@ -defmodule LokalWeb.Components.Topbar do +defmodule MemexWeb.Components.Topbar do @moduledoc """ Component that renders a topbar with user functions/links """ - use LokalWeb, :component + use MemexWeb, :component - alias Lokal.Accounts - alias LokalWeb.{Endpoint, HomeLive} + alias Memex.Accounts + alias MemexWeb.{Endpoint, HomeLive} def topbar(assigns) do assigns = @@ -20,7 +20,7 @@ defmodule LokalWeb.Components.Topbar do navigate={Routes.live_path(Endpoint, HomeLive)} class="mx-2 my-1 leading-5 text-xl text-white hover:underline" > - <%= gettext("Lokal") %> + <%= gettext("Memex") %> <%= if @title_content do %> diff --git a/lib/lokal_web/components/user_card.ex b/lib/memex_web/components/user_card.ex similarity index 93% rename from lib/lokal_web/components/user_card.ex rename to lib/memex_web/components/user_card.ex index 12ccc74..161217d 100644 --- a/lib/lokal_web/components/user_card.ex +++ b/lib/memex_web/components/user_card.ex @@ -1,10 +1,10 @@ -defmodule LokalWeb.Components.UserCard do +defmodule MemexWeb.Components.UserCard do @moduledoc """ Display card for a user """ - use LokalWeb, :component - alias Lokal.Accounts.User + use MemexWeb, :component + alias Memex.Accounts.User attr :user, User, required: true slot(:inner_block, required: true) diff --git a/lib/lokal_web/controllers/email_controller.ex b/lib/memex_web/controllers/email_controller.ex similarity index 64% rename from lib/lokal_web/controllers/email_controller.ex rename to lib/memex_web/controllers/email_controller.ex index 497cae0..c9f890c 100644 --- a/lib/lokal_web/controllers/email_controller.ex +++ b/lib/memex_web/controllers/email_controller.ex @@ -1,16 +1,16 @@ -defmodule LokalWeb.EmailController do +defmodule MemexWeb.EmailController do @moduledoc """ A dev controller used to develop on emails """ - use LokalWeb, :controller - alias Lokal.Accounts.User + use MemexWeb, :controller + alias Memex.Accounts.User - plug :put_layout, {LokalWeb.LayoutView, :email} + plug :put_layout, {MemexWeb.LayoutView, :email} @sample_assigns %{ email: %{subject: "Example subject"}, - url: "https://lokal.bubbletea.dev/sample_url", + url: "https://memex.bubbletea.dev/sample_url", user: %User{email: "sample@email.com"} } diff --git a/lib/lokal_web/controllers/home_controller.ex b/lib/memex_web/controllers/home_controller.ex similarity index 65% rename from lib/lokal_web/controllers/home_controller.ex rename to lib/memex_web/controllers/home_controller.ex index 3f3b44b..445bc79 100644 --- a/lib/lokal_web/controllers/home_controller.ex +++ b/lib/memex_web/controllers/home_controller.ex @@ -1,9 +1,9 @@ -defmodule LokalWeb.HomeController do +defmodule MemexWeb.HomeController do @moduledoc """ Controller for home page """ - use LokalWeb, :controller + use MemexWeb, :controller def index(conn, _params) do render(conn, "index.html") diff --git a/lib/lokal_web/controllers/user_auth.ex b/lib/memex_web/controllers/user_auth.ex similarity index 94% rename from lib/lokal_web/controllers/user_auth.ex rename to lib/memex_web/controllers/user_auth.ex index 6620f5f..a1a9d90 100644 --- a/lib/lokal_web/controllers/user_auth.ex +++ b/lib/memex_web/controllers/user_auth.ex @@ -1,20 +1,20 @@ -defmodule LokalWeb.UserAuth do +defmodule MemexWeb.UserAuth do @moduledoc """ Functions for user session and authentication """ import Plug.Conn import Phoenix.Controller - import LokalWeb.Gettext - alias Lokal.{Accounts, Accounts.User} - alias LokalWeb.HomeLive - alias LokalWeb.Router.Helpers, as: Routes + import MemexWeb.Gettext + alias Memex.{Accounts, Accounts.User} + alias MemexWeb.HomeLive + alias MemexWeb.Router.Helpers, as: Routes # Make the remember me cookie valid for 60 days. # If you want bump or reduce this value, also change # the token expiry itself in UserToken. @max_age 60 * 60 * 24 * 60 - @remember_me_cookie "_lokal_web_user_remember_me" + @remember_me_cookie "_memex_web_user_remember_me" @remember_me_options [sign: true, max_age: @max_age, same_site: "Lax"] @doc """ @@ -99,7 +99,7 @@ defmodule LokalWeb.UserAuth do user_token && Accounts.delete_session_token(user_token) if live_socket_id = get_session(conn, :live_socket_id) do - LokalWeb.Endpoint.broadcast(live_socket_id, "disconnect", %{}) + MemexWeb.Endpoint.broadcast(live_socket_id, "disconnect", %{}) end conn diff --git a/lib/lokal_web/controllers/user_confirmation_controller.ex b/lib/memex_web/controllers/user_confirmation_controller.ex similarity index 93% rename from lib/lokal_web/controllers/user_confirmation_controller.ex rename to lib/memex_web/controllers/user_confirmation_controller.ex index c03782f..b6d279c 100644 --- a/lib/lokal_web/controllers/user_confirmation_controller.ex +++ b/lib/memex_web/controllers/user_confirmation_controller.ex @@ -1,8 +1,8 @@ -defmodule LokalWeb.UserConfirmationController do - use LokalWeb, :controller +defmodule MemexWeb.UserConfirmationController do + use MemexWeb, :controller - import LokalWeb.Gettext - alias Lokal.Accounts + import MemexWeb.Gettext + alias Memex.Accounts def new(conn, _params) do render(conn, "new.html", page_title: gettext("Confirm your account")) diff --git a/lib/lokal_web/controllers/user_registration_controller.ex b/lib/memex_web/controllers/user_registration_controller.ex similarity index 92% rename from lib/lokal_web/controllers/user_registration_controller.ex rename to lib/memex_web/controllers/user_registration_controller.ex index 11e5f5f..194fab0 100644 --- a/lib/lokal_web/controllers/user_registration_controller.ex +++ b/lib/memex_web/controllers/user_registration_controller.ex @@ -1,8 +1,8 @@ -defmodule LokalWeb.UserRegistrationController do - use LokalWeb, :controller - import LokalWeb.Gettext - alias Lokal.{Accounts, Accounts.Invites} - alias LokalWeb.{Endpoint, HomeLive} +defmodule MemexWeb.UserRegistrationController do + use MemexWeb, :controller + import MemexWeb.Gettext + alias Memex.{Accounts, Accounts.Invites} + alias MemexWeb.{Endpoint, HomeLive} def new(conn, %{"invite" => invite_token}) do if Invites.valid_invite_token?(invite_token) do diff --git a/lib/lokal_web/controllers/user_reset_password_controller.ex b/lib/memex_web/controllers/user_reset_password_controller.ex similarity index 94% rename from lib/lokal_web/controllers/user_reset_password_controller.ex rename to lib/memex_web/controllers/user_reset_password_controller.ex index 0028bda..839eaa8 100644 --- a/lib/lokal_web/controllers/user_reset_password_controller.ex +++ b/lib/memex_web/controllers/user_reset_password_controller.ex @@ -1,7 +1,7 @@ -defmodule LokalWeb.UserResetPasswordController do - use LokalWeb, :controller +defmodule MemexWeb.UserResetPasswordController do + use MemexWeb, :controller - alias Lokal.Accounts + alias Memex.Accounts plug :get_user_by_reset_password_token when action in [:edit, :update] diff --git a/lib/lokal_web/controllers/user_session_controller.ex b/lib/memex_web/controllers/user_session_controller.ex similarity index 83% rename from lib/lokal_web/controllers/user_session_controller.ex rename to lib/memex_web/controllers/user_session_controller.ex index 23b6b84..0706a69 100644 --- a/lib/lokal_web/controllers/user_session_controller.ex +++ b/lib/memex_web/controllers/user_session_controller.ex @@ -1,8 +1,8 @@ -defmodule LokalWeb.UserSessionController do - use LokalWeb, :controller +defmodule MemexWeb.UserSessionController do + use MemexWeb, :controller - alias Lokal.Accounts - alias LokalWeb.UserAuth + alias Memex.Accounts + alias MemexWeb.UserAuth def new(conn, _params) do render(conn, "new.html", error_message: nil, page_title: gettext("Log in")) diff --git a/lib/lokal_web/controllers/user_settings_controller.ex b/lib/memex_web/controllers/user_settings_controller.ex similarity index 95% rename from lib/lokal_web/controllers/user_settings_controller.ex rename to lib/memex_web/controllers/user_settings_controller.ex index b6be99e..1fdf126 100644 --- a/lib/lokal_web/controllers/user_settings_controller.ex +++ b/lib/memex_web/controllers/user_settings_controller.ex @@ -1,8 +1,8 @@ -defmodule LokalWeb.UserSettingsController do - use LokalWeb, :controller - import LokalWeb.Gettext - alias Lokal.Accounts - alias LokalWeb.{HomeLive, UserAuth} +defmodule MemexWeb.UserSettingsController do + use MemexWeb, :controller + import MemexWeb.Gettext + alias Memex.Accounts + alias MemexWeb.{HomeLive, UserAuth} plug :assign_email_and_password_changesets diff --git a/lib/lokal_web/endpoint.ex b/lib/memex_web/endpoint.ex similarity index 87% rename from lib/lokal_web/endpoint.ex rename to lib/memex_web/endpoint.ex index 06e4baa..c5fed71 100644 --- a/lib/lokal_web/endpoint.ex +++ b/lib/memex_web/endpoint.ex @@ -1,12 +1,12 @@ -defmodule LokalWeb.Endpoint do - use Phoenix.Endpoint, otp_app: :lokal +defmodule MemexWeb.Endpoint do + use Phoenix.Endpoint, otp_app: :memex # The session will be stored in the cookie and signed, # this means its contents can be read but not tampered with. # Set :encryption_salt if you would also like to encrypt it. @session_options [ store: :cookie, - key: "_lokal_key", + key: "_memex_key", signing_salt: "fxAnJltS" ] @@ -18,7 +18,7 @@ defmodule LokalWeb.Endpoint do # when deploying your static files in production. plug Plug.Static, at: "/", - from: :lokal, + from: :memex, gzip: false, only: ~w(css fonts images js favicon.ico robots.txt) @@ -28,7 +28,7 @@ defmodule LokalWeb.Endpoint do socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket plug Phoenix.LiveReloader plug Phoenix.CodeReloader - plug Phoenix.Ecto.CheckRepoStatus, otp_app: :lokal + plug Phoenix.Ecto.CheckRepoStatus, otp_app: :memex end plug Phoenix.LiveDashboard.RequestLogger, @@ -46,5 +46,5 @@ defmodule LokalWeb.Endpoint do plug Plug.MethodOverride plug Plug.Head plug Plug.Session, @session_options - plug LokalWeb.Router + plug MemexWeb.Router end diff --git a/lib/lokal_web/gettext.ex b/lib/memex_web/gettext.ex similarity index 87% rename from lib/lokal_web/gettext.ex rename to lib/memex_web/gettext.ex index d7921d1..612b80d 100644 --- a/lib/lokal_web/gettext.ex +++ b/lib/memex_web/gettext.ex @@ -1,11 +1,11 @@ -defmodule LokalWeb.Gettext do +defmodule MemexWeb.Gettext do @moduledoc """ A module providing Internationalization with a gettext-based API. By using [Gettext](https://hexdocs.pm/gettext), your module gains a set of macros for translations, for example: - import LokalWeb.Gettext + import MemexWeb.Gettext # Simple translation gettext("Here is the string to translate") @@ -20,5 +20,5 @@ defmodule LokalWeb.Gettext do See the [Gettext Docs](https://hexdocs.pm/gettext) for detailed usage. """ - use Gettext, otp_app: :lokal + use Gettext, otp_app: :memex end diff --git a/lib/lokal_web/live/home_live.ex b/lib/memex_web/live/home_live.ex similarity index 75% rename from lib/lokal_web/live/home_live.ex rename to lib/memex_web/live/home_live.ex index fb45bcd..c129903 100644 --- a/lib/lokal_web/live/home_live.ex +++ b/lib/memex_web/live/home_live.ex @@ -1,11 +1,11 @@ -defmodule LokalWeb.HomeLive do +defmodule MemexWeb.HomeLive do @moduledoc """ Liveview for the home page """ - use LokalWeb, :live_view - alias Lokal.Accounts - alias LokalWeb.Endpoint + use MemexWeb, :live_view + alias Memex.Accounts + alias MemexWeb.Endpoint @version Mix.Project.config()[:version] diff --git a/lib/lokal_web/live/home_live.html.heex b/lib/memex_web/live/home_live.html.heex similarity index 88% rename from lib/lokal_web/live/home_live.html.heex rename to lib/memex_web/live/home_live.html.heex index f156a70..d70236c 100644 --- a/lib/lokal_web/live/home_live.html.heex +++ b/lib/memex_web/live/home_live.html.heex @@ -1,6 +1,6 @@

- <%= gettext("Welcome to Lokal") %> + <%= gettext("Welcome to Memex") %>

@@ -16,7 +16,7 @@ <%= gettext("Easy to Use:") %>

- <%= gettext("Lokal lets you easily shop from your local community") %> + <%= gettext("Memex lets you easily shop from your local community") %>

  • @@ -53,7 +53,7 @@

    <%= if @admins |> Enum.empty?() do %> <.link href={Routes.user_registration_path(Endpoint, :new)} class="hover:underline"> - <%= dgettext("prompts", "Register to setup Lokal") %> + <%= dgettext("prompts", "Register to setup Memex") %> <% else %>

    @@ -68,7 +68,7 @@
  • <%= gettext("Registration:") %>

    - <%= case Application.get_env(:lokal, Lokal.Accounts)[:registration] do + <%= case Application.get_env(:memex, Memex.Accounts)[:registration] do "public" -> gettext("Public Signups") _ -> gettext("Invite Only") end %> @@ -78,7 +78,7 @@

  • <%= gettext("Version:") %> <.link - href="https://gitea.bubbletea.dev/shibao/lokal/src/branch/stable/CHANGELOG.md" + href="https://gitea.bubbletea.dev/shibao/memex/src/branch/stable/CHANGELOG.md" class="flex flex-row justify-center items-center space-x-2 hover:underline" target="_blank" rel="noopener noreferrer" @@ -101,7 +101,7 @@
  • <.link class="flex flex-row justify-center items-center space-x-2 hover:underline" - href="https://gitea.bubbletea.dev/shibao/lokal" + href="https://gitea.bubbletea.dev/shibao/memex" target="_blank" rel="noopener noreferrer" > @@ -112,7 +112,7 @@
  • <.link class="flex flex-row justify-center items-center space-x-2 hover:underline" - href="https://weblate.bubbletea.dev/engage/lokal" + href="https://weblate.bubbletea.dev/engage/memex" target="_blank" rel="noopener noreferrer" > @@ -123,7 +123,7 @@
  • <.link class="flex flex-row justify-center items-center space-x-2 hover:underline" - href="https://gitea.bubbletea.dev/shibao/lokal/issues/new" + href="https://gitea.bubbletea.dev/shibao/memex/issues/new" target="_blank" rel="noopener noreferrer" > diff --git a/lib/lokal_web/live/init_assigns.ex b/lib/memex_web/live/init_assigns.ex similarity index 89% rename from lib/lokal_web/live/init_assigns.ex rename to lib/memex_web/live/init_assigns.ex index 9c5bcb7..910713a 100644 --- a/lib/lokal_web/live/init_assigns.ex +++ b/lib/memex_web/live/init_assigns.ex @@ -1,9 +1,9 @@ -defmodule LokalWeb.InitAssigns do +defmodule MemexWeb.InitAssigns do @moduledoc """ Ensures common `assigns` are applied to all LiveViews attaching this hook. """ import Phoenix.Component - alias Lokal.Accounts + alias Memex.Accounts def on_mount(:default, _params, %{"locale" => locale, "user_token" => user_token}, socket) do Gettext.put_locale(locale) diff --git a/lib/lokal_web/live/invite_live/form_component.ex b/lib/memex_web/live/invite_live/form_component.ex similarity index 92% rename from lib/lokal_web/live/invite_live/form_component.ex rename to lib/memex_web/live/invite_live/form_component.ex index 274a4fc..41cde7b 100644 --- a/lib/lokal_web/live/invite_live/form_component.ex +++ b/lib/memex_web/live/invite_live/form_component.ex @@ -1,11 +1,11 @@ -defmodule LokalWeb.InviteLive.FormComponent do +defmodule MemexWeb.InviteLive.FormComponent do @moduledoc """ - Livecomponent that can update or create an Lokal.Accounts.Invite + Livecomponent that can update or create an Memex.Accounts.Invite """ - use LokalWeb, :live_component + use MemexWeb, :live_component alias Ecto.Changeset - alias Lokal.Accounts.{Invite, Invites, User} + alias Memex.Accounts.{Invite, Invites, User} alias Phoenix.LiveView.Socket @impl true diff --git a/lib/lokal_web/live/invite_live/form_component.html.heex b/lib/memex_web/live/invite_live/form_component.html.heex similarity index 100% rename from lib/lokal_web/live/invite_live/form_component.html.heex rename to lib/memex_web/live/invite_live/form_component.html.heex diff --git a/lib/lokal_web/live/invite_live/index.ex b/lib/memex_web/live/invite_live/index.ex similarity index 94% rename from lib/lokal_web/live/invite_live/index.ex rename to lib/memex_web/live/invite_live/index.ex index 20ca622..9fd03da 100644 --- a/lib/lokal_web/live/invite_live/index.ex +++ b/lib/memex_web/live/invite_live/index.ex @@ -1,13 +1,13 @@ -defmodule LokalWeb.InviteLive.Index do +defmodule MemexWeb.InviteLive.Index do @moduledoc """ - Liveview to show a Lokal.Accounts.Invite index + Liveview to show a Memex.Accounts.Invite index """ - use LokalWeb, :live_view - import LokalWeb.Components.{InviteCard, UserCard} - alias Lokal.Accounts - alias Lokal.Accounts.{Invite, Invites} - alias LokalWeb.{Endpoint, HomeLive} + use MemexWeb, :live_view + import MemexWeb.Components.{InviteCard, UserCard} + alias Memex.Accounts + alias Memex.Accounts.{Invite, Invites} + alias MemexWeb.{Endpoint, HomeLive} alias Phoenix.LiveView.JS @impl true diff --git a/lib/lokal_web/live/invite_live/index.html.heex b/lib/memex_web/live/invite_live/index.html.heex similarity index 97% rename from lib/lokal_web/live/invite_live/index.html.heex rename to lib/memex_web/live/invite_live/index.html.heex index 6b40124..3ba5ba0 100644 --- a/lib/lokal_web/live/invite_live/index.html.heex +++ b/lib/memex_web/live/invite_live/index.html.heex @@ -24,7 +24,7 @@ @@ -138,7 +138,7 @@ <.modal :if={@live_action in [:new, :edit]} return_to={Routes.invite_index_path(Endpoint, :index)}> <.live_component - module={LokalWeb.InviteLive.FormComponent} + module={MemexWeb.InviteLive.FormComponent} id={@invite.id || :new} title={@page_title} action={@live_action} diff --git a/lib/lokal_web/live/live_helpers.ex b/lib/memex_web/live/live_helpers.ex similarity index 98% rename from lib/lokal_web/live/live_helpers.ex rename to lib/memex_web/live/live_helpers.ex index 3aeecf3..4016796 100644 --- a/lib/lokal_web/live/live_helpers.ex +++ b/lib/memex_web/live/live_helpers.ex @@ -1,4 +1,4 @@ -defmodule LokalWeb.LiveHelpers do +defmodule MemexWeb.LiveHelpers do @moduledoc """ Contains common helper functions for liveviews """ diff --git a/lib/lokal_web/router.ex b/lib/memex_web/router.ex similarity index 86% rename from lib/lokal_web/router.ex rename to lib/memex_web/router.ex index c99d995..1a72139 100644 --- a/lib/lokal_web/router.ex +++ b/lib/memex_web/router.ex @@ -1,13 +1,13 @@ -defmodule LokalWeb.Router do - use LokalWeb, :router +defmodule MemexWeb.Router do + use MemexWeb, :router import Phoenix.LiveDashboard.Router - import LokalWeb.UserAuth + import MemexWeb.UserAuth pipeline :browser do plug :accepts, ["html"] plug :fetch_session plug :fetch_live_flash - plug :put_root_layout, {LokalWeb.LayoutView, :root} + plug :put_root_layout, {MemexWeb.LayoutView, :root} plug :protect_from_forgery plug :put_secure_browser_headers plug :fetch_current_user @@ -34,7 +34,7 @@ defmodule LokalWeb.Router do plug :accepts, ["json"] end - scope "/", LokalWeb do + scope "/", MemexWeb do pipe_through :browser live "/", HomeLive @@ -42,7 +42,7 @@ defmodule LokalWeb.Router do ## Authentication routes - scope "/", LokalWeb do + scope "/", MemexWeb do pipe_through [:browser, :redirect_if_user_is_authenticated] get "/users/register", UserRegistrationController, :new @@ -55,7 +55,7 @@ defmodule LokalWeb.Router do put "/users/reset_password/:token", UserResetPasswordController, :update end - scope "/", LokalWeb do + scope "/", MemexWeb do pipe_through [:browser, :require_authenticated_user] get "/users/settings", UserSettingsController, :edit @@ -64,17 +64,17 @@ defmodule LokalWeb.Router do get "/users/settings/confirm_email/:token", UserSettingsController, :confirm_email end - scope "/", LokalWeb do + scope "/", MemexWeb do pipe_through [:browser, :require_authenticated_user, :require_admin] - live_dashboard "/dashboard", metrics: LokalWeb.Telemetry, ecto_repos: [Lokal.Repo] + live_dashboard "/dashboard", metrics: MemexWeb.Telemetry, ecto_repos: [Memex.Repo] live "/invites", InviteLive.Index, :index live "/invites/new", InviteLive.Index, :new live "/invites/:id/edit", InviteLive.Index, :edit end - scope "/", LokalWeb do + scope "/", MemexWeb do pipe_through [:browser] delete "/users/log_out", UserSessionController, :delete @@ -95,7 +95,7 @@ defmodule LokalWeb.Router do end scope "/dev" do - get "/preview/:id", LokalWeb.EmailController, :preview + get "/preview/:id", MemexWeb.EmailController, :preview end end end diff --git a/lib/lokal_web/telemetry.ex b/lib/memex_web/telemetry.ex similarity index 90% rename from lib/lokal_web/telemetry.ex rename to lib/memex_web/telemetry.ex index 1966629..cf69c84 100644 --- a/lib/lokal_web/telemetry.ex +++ b/lib/memex_web/telemetry.ex @@ -1,4 +1,4 @@ -defmodule LokalWeb.Telemetry do +defmodule MemexWeb.Telemetry do @moduledoc """ Collects telemetry """ @@ -35,23 +35,23 @@ defmodule LokalWeb.Telemetry do ), # Database Metrics - summary("lokal.repo.query.total_time", + summary("memex.repo.query.total_time", unit: {:native, :millisecond}, description: "The sum of the other measurements" ), - summary("lokal.repo.query.decode_time", + summary("memex.repo.query.decode_time", unit: {:native, :millisecond}, description: "The time spent decoding the data received from the database" ), - summary("lokal.repo.query.query_time", + summary("memex.repo.query.query_time", unit: {:native, :millisecond}, description: "The time spent executing the query" ), - summary("lokal.repo.query.queue_time", + summary("memex.repo.query.queue_time", unit: {:native, :millisecond}, description: "The time spent waiting for a database connection" ), - summary("lokal.repo.query.idle_time", + summary("memex.repo.query.idle_time", unit: {:native, :millisecond}, description: "The time the connection spent waiting before being checked out for the query" @@ -93,7 +93,7 @@ defmodule LokalWeb.Telemetry do [ # A module, function and arguments to be invoked periodically. # This function must call :telemetry.execute/3 and a metric must be added above. - # {LokalWeb, :count_users, []} + # {MemexWeb, :count_users, []} ] end end diff --git a/lib/lokal_web/templates/email/confirm_email.html.heex b/lib/memex_web/templates/email/confirm_email.html.heex similarity index 78% rename from lib/lokal_web/templates/email/confirm_email.html.heex rename to lib/memex_web/templates/email/confirm_email.html.heex index 5568a9b..8a1d24e 100644 --- a/lib/lokal_web/templates/email/confirm_email.html.heex +++ b/lib/memex_web/templates/email/confirm_email.html.heex @@ -6,7 +6,7 @@
    - <%= dgettext("emails", "Welcome to Lokal") %> + <%= dgettext("emails", "Welcome to Memex") %>
    @@ -19,5 +19,5 @@
    - <%= dgettext("emails", "If you didn't create an account at Lokal, please ignore this.") %> + <%= dgettext("emails", "If you didn't create an account at Memex, please ignore this.") %>
  • diff --git a/lib/lokal_web/templates/email/confirm_email.txt.eex b/lib/memex_web/templates/email/confirm_email.txt.eex similarity index 86% rename from lib/lokal_web/templates/email/confirm_email.txt.eex rename to lib/memex_web/templates/email/confirm_email.txt.eex index 987f414..7a49d5f 100644 --- a/lib/lokal_web/templates/email/confirm_email.txt.eex +++ b/lib/memex_web/templates/email/confirm_email.txt.eex @@ -1,7 +1,7 @@ <%= dgettext("emails", "Hi %{email},", email: @user.email) %> -<%= dgettext("emails", "Welcome to Lokal") %> +<%= dgettext("emails", "Welcome to Memex") %> <%= dgettext("emails", "You can confirm your account by visiting the URL below:") %> diff --git a/lib/lokal_web/templates/email/reset_password.html.heex b/lib/memex_web/templates/email/reset_password.html.heex similarity index 93% rename from lib/lokal_web/templates/email/reset_password.html.heex rename to lib/memex_web/templates/email/reset_password.html.heex index 87c46e2..88f4b17 100644 --- a/lib/lokal_web/templates/email/reset_password.html.heex +++ b/lib/memex_web/templates/email/reset_password.html.heex @@ -13,5 +13,5 @@
    - <%= dgettext("emails", "If you didn't request this change from Lokal, please ignore this.") %> + <%= dgettext("emails", "If you didn't request this change from Memex, please ignore this.") %> diff --git a/lib/lokal_web/templates/email/reset_password.txt.eex b/lib/memex_web/templates/email/reset_password.txt.eex similarity index 100% rename from lib/lokal_web/templates/email/reset_password.txt.eex rename to lib/memex_web/templates/email/reset_password.txt.eex diff --git a/lib/lokal_web/templates/email/update_email.html.heex b/lib/memex_web/templates/email/update_email.html.heex similarity index 88% rename from lib/lokal_web/templates/email/update_email.html.heex rename to lib/memex_web/templates/email/update_email.html.heex index dc9a001..7dfda00 100644 --- a/lib/lokal_web/templates/email/update_email.html.heex +++ b/lib/memex_web/templates/email/update_email.html.heex @@ -15,6 +15,6 @@ <%= dgettext( "emails", - "If you didn't request this change from Lokal, please ignore this." + "If you didn't request this change from Memex, please ignore this." ) %> diff --git a/lib/lokal_web/templates/email/update_email.txt.eex b/lib/memex_web/templates/email/update_email.txt.eex similarity index 100% rename from lib/lokal_web/templates/email/update_email.txt.eex rename to lib/memex_web/templates/email/update_email.txt.eex diff --git a/lib/lokal_web/templates/error/error.html.heex b/lib/memex_web/templates/error/error.html.heex similarity index 94% rename from lib/lokal_web/templates/error/error.html.heex rename to lib/memex_web/templates/error/error.html.heex index 004f773..cd99762 100644 --- a/lib/lokal_web/templates/error/error.html.heex +++ b/lib/memex_web/templates/error/error.html.heex @@ -5,7 +5,7 @@ - <%= dgettext("errors", "Error") %> | <%= gettext("Lokal") %> + <%= dgettext("errors", "Error") %> | <%= gettext("Memex") %>