Commit Diff


commit - 160c2c60efb53d06d2086cc8ab2baf548b87fab2
commit + 9e8448028c925b352290fd78bec02da092edcc82
blob - 32dc8a03c9eeee1534b5d6023c33820a6b162c50
blob + f3f2cbdeb281ebd0c684b5389bada54b6f087e61
--- Makefile
+++ Makefile
@@ -3,7 +3,7 @@
 AUTH_TOKEN := demo
 BASE_URL := http://localhost
 PORT := 4000
-DB_PATH := shortener.db
+DB_PATH := shirts.db
 
 export AUTH_TOKEN
 export BASE_URL
blob - 76b1eda62e1420008576386407e4836ba2aceb0f
blob + 4c71fded6ba028239409f1abb6fd337c85dd2d66
--- config/config.exs
+++ config/config.exs
@@ -1,6 +1,6 @@
 import Config
 
-config :shortener,
+config :shirts,
   port: System.get_env("PORT", "4000") |> String.to_integer(),
   host: System.get_env("HOST", "127.0.0.1"),
   auth_token: System.get_env("AUTH_TOKEN", "changeme"),
blob - bc6cff4c1baef67c58d544d64561664a311e9fbd
blob + 38d357f7c440babbac320f31b5cab51bc8194f0b
--- config/runtime.exs
+++ config/runtime.exs
@@ -31,7 +31,7 @@ if config_env() == :prod do
     end
   end
 
-  config :shortener,
+  config :shirts,
     port: get.("PORT", "4000") |> String.to_integer(),
     host: get.("HOST", "127.0.0.1"),
     auth_token:
blob - 4e5971a9bfa966d720359b2b4be6ac7ab3fd2ead
blob + b7b692ef95c8974eb0e19479274c393fbc44d791
--- flake.nix
+++ flake.nix
@@ -16,7 +16,7 @@
     };
 
     packages.x86_64-linux.default = beamPackages.mixRelease {
-      pname = "shortener";
+      pname = "shirts";
       inherit version;
       src = ./.;
 
@@ -27,7 +27,7 @@
       ELIXIR_MAKE_CACHE_DIR = "nix-elixir-make";
 
       mixFodDeps = beamPackages.fetchMixDeps {
-        pname = "shortener-deps";
+        pname = "shirts-deps";
         inherit version;
         src = ./.;
         sha256 = "sha256-U/tNP3s7b4bBUrQx5l4VtDHpV9DsWj6zBYj8jsM4Acw=";
blob - 87d59f64389a6b86b3177a046b36a8ef2709ec49
blob + 3ee23c57ff7e3893e87caa78f254442781a1656d
--- lib/shortener/application.ex
+++ lib/shortener/application.ex
@@ -1,6 +1,6 @@
-defmodule Shortener.Application do
+defmodule Shirts.Application do
   @moduledoc """
-  Shortener application entry point.
+  Shirts application entry point.
   Starts the database and the HTTP server (Bandit).
   """
   use Application
@@ -8,23 +8,23 @@ defmodule Shortener.Application do
 
   @impl true
   def start(_type, _args) do
-    port = Application.fetch_env!(:shortener, :port)
-    host = Application.fetch_env!(:shortener, :host)
-    db_path = Application.fetch_env!(:shortener, :db_path)
+    port = Application.fetch_env!(:shirts, :port)
+    host = Application.fetch_env!(:shirts, :host)
+    db_path = Application.fetch_env!(:shirts, :db_path)
 
     children = [
-      {Shortener.DB, db_path},
-      {Bandit, plug: Shortener.Router, port: port, ip: parse_ip(host)}
+      {Shirts.DB, db_path},
+      {Bandit, plug: Shirts.Router, port: port, ip: parse_ip(host)}
     ]
 
-    Logger.info("Starting shortener on #{host}:#{port}")
+    Logger.info("Starting shirts on #{host}:#{port}")
 
-    Supervisor.start_link(children, strategy: :one_for_one, name: Shortener.Supervisor)
+    Supervisor.start_link(children, strategy: :one_for_one, name: Shirts.Supervisor)
   end
 
   @impl true
   def stop(_state) do
-    Logger.info("Shortener application stopped")
+    Logger.info("Shirts application stopped")
     :ok
   end
 
blob - b97d1f28a4d6a733674ec2078b6e0eafabceb6ec
blob + adb477250409be8a3b1985e36c99c421eecbc76b
--- lib/shortener/db.ex
+++ lib/shortener/db.ex
@@ -1,4 +1,4 @@
-defmodule Shortener.DB do
+defmodule Shirts.DB do
   @moduledoc """
   SQLite database interface using Exqlite.
   Stores and retrieves short links.
blob - 8eaad91102aa62b00e48cd8024faee3bdc187d13
blob + d698f2418635d4afd161d46dd441a3e975820a41
--- lib/shortener/router.ex
+++ lib/shortener/router.ex
@@ -1,4 +1,4 @@
-defmodule Shortener.Router do
+defmodule Shirts.Router do
   @moduledoc """
   Plug router:
     POST /curtail  — create a short link (requires Bearer token)
@@ -22,8 +22,8 @@ defmodule Shortener.Router do
     with :ok <- check_auth(conn),
          {:ok, url} <- fetch_url(conn),
          code <- Map.get(conn.body_params, "code") || random_code(),
-         :ok <- Shortener.DB.insert(code, url) do
-      base_url = Application.fetch_env!(:shortener, :base_url)
+         :ok <- Shirts.DB.insert(code, url) do
+      base_url = Application.fetch_env!(:shirts, :base_url)
       short_url = "#{base_url}/s/#{code}"
 
       conn
@@ -48,7 +48,7 @@ defmodule Shortener.Router do
   # GET /s/:code  — redirect
   # ---------------------------------------------------------------------------
   get "/s/:code" do
-    case Shortener.DB.lookup(code) do
+    case Shirts.DB.lookup(code) do
       {:ok, url} ->
         conn
         |> put_resp_header("location", url)
@@ -74,7 +74,7 @@ defmodule Shortener.Router do
   # ---------------------------------------------------------------------------
 
   defp check_auth(conn) do
-    expected = "Bearer #{Application.fetch_env!(:shortener, :auth_token)}"
+    expected = "Bearer #{Application.fetch_env!(:shirts, :auth_token)}"
 
     case get_req_header(conn, "authorization") do
       [^expected] -> :ok
blob - 2a6f448fb2400bf5622fad451f0595a517025202
blob + 38a4c06e5ae4ecfdf40fb6dd3bfb2ac78e6b7638
--- mix.exs
+++ mix.exs
@@ -1,9 +1,9 @@
-defmodule Shortener.MixProject do
+defmodule Shirts.MixProject do
   use Mix.Project
 
   def project do
     [
-      app: :shortener,
+      app: :shirts,
       version: "0.3.0",
       elixir: "~> 1.18",
       start_permanent: Mix.env() == :prod,
@@ -14,7 +14,7 @@ defmodule Shortener.MixProject do
   def application do
     [
       extra_applications: [:logger],
-      mod: {Shortener.Application, []}
+      mod: {Shirts.Application, []}
     ]
   end