defmodule Tidewave.MixProject do use Mix.Project @source_url "https://github.com/tidewave-ai/tidewave_phoenix" @homepage_url "https://tidewave.ai/" @version "0.6.0" def project do [ app: :tidewave, version: @version, elixir: "~> 1.15", start_permanent: Mix.env() == :prod, deps: deps(), package: package(), elixirc_paths: if(Mix.env() == :test, do: ["lib", "test/support"], else: ["lib"]), aliases: [ tidewave: "run --no-halt -e 'Agent.start(fn -> Bandit.start_link(plug: Tidewave, port: 4000) end)'" ], # Docs name: "Tidewave", source_url: @source_url, homepage_url: @homepage_url, docs: &docs/0 ] end def application do [ mod: {Tidewave.Application, []}, extra_applications: [:logger] ] end defp package do [ description: "Tidewave for Phoenix", maintainers: ["Steffen Deusch"], licenses: ["Apache-2.0"], links: %{ "Tidewave" => @homepage_url, "GitHub" => @source_url } ] end defp deps do [ {:plug, "~> 1.17"}, {:jason, "~> 1.4"}, {:circular_buffer, "~> 0.4 or ~> 1.0"}, {:igniter, "~> 0.6", optional: true}, # We require v1.6.1 to detect if phoenix live reload is running too early or late {:phoenix_live_reload, ">= 1.6.1", optional: true}, # Dev deps {:bandit, "~> 1.10", only: [:dev, :test]}, {:ex_doc, ">= 0.0.0", only: :dev}, {:makeup_syntect, ">= 0.0.0", only: :dev} ] end defp docs do [ api_reference: false, main: "installation", logo: "logo.svg", footer: false, assets: %{"pages/assets" => "assets"}, filter_modules: fn mod, _ -> raise "you forgot to add \"@moduledoc false\" to #{inspect(mod)}" end, extras: [ "pages/installation.md", "pages/features/accessibility.md", "pages/features/browser_app.md", "pages/features/code_review.md", "pages/features/git.md", "pages/features/inspector.md", "pages/features/mermaid.md", "pages/features/notifications.md", "pages/features/spaces.md", "pages/features/task_board.md", "pages/features/teams.md", "pages/features/ui_variants.md", "pages/features/viewport.md", "pages/features/vision_mode.md", "pages/features/voice_input.md", "pages/providers/claude_code.md", "pages/providers/github_copilot.md", "pages/providers/codex.md", "pages/providers/opencode.md", "pages/providers/third_party.md", "pages/integrations/editors.md", "pages/integrations/figma.md", "pages/integrations/frontend.md", "pages/guides/containers.md", "pages/guides/custom_domains.md", "pages/guides/https.md", "pages/guides/prompting_tips.md", "pages/guides/security.md", "pages/guides/remote_access.md", "pages/mcp/mcp.md", "pages/mcp/mcp_claude_code.md", "pages/mcp/mcp_cursor.md", "pages/mcp/mcp_neovim.md", "pages/mcp/mcp_codex.md", "pages/mcp/mcp_opencode.md", "pages/mcp/mcp_vscode.md", "pages/mcp/mcp_zed.md" ], groups_for_extras: [ Providers: ~r/(pages\/providers\/.?)/, Features: ~r/(pages\/features\/.?)/, Integrations: ~r/(pages\/integrations\/.?)/, Guides: ~r/(pages\/guides\/.?)/, MCP: ~r/pages\/mcp\/.?/ ], redirects: %{ "react" => "frontend", "vue" => "frontend", "mcp_troubleshooting" => "mcp", "providers" => "installation", "tips_and_tricks" => "prompting_tips", "subdomains" => "custom_domains" }, before_closing_head_tag: fn _ -> # Hide version nodes to avoid confusion between TidewaveApp and TidewavePhoenix. # But we still keep go to latest. "" end ] end end