defmodule WeaviateEx.MixProject do
use Mix.Project
@version "0.2.0"
@source_url "https://github.com/yourusername/weaviate_ex"
def project do
[
app: :weaviate_ex,
version: @version,
elixir: "~> 1.18",
start_permanent: Mix.env() == :prod,
deps: deps(),
description: description(),
package: package(),
docs: docs(),
name: "WeaviateEx",
source_url: @source_url,
elixirc_paths: elixirc_paths(Mix.env())
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
def application do
[
extra_applications: [:logger],
mod: {WeaviateEx.Application, []}
]
end
defp deps do
[
# HTTP client with HTTP/2 and connection pooling
{:finch, "~> 0.18"},
# JSON encoding/decoding
{:jason, "~> 1.4"},
# UUID generation
{:uniq, "~> 0.6"},
# Optional: gRPC support (for future enhancement)
# {:grpc, "~> 0.7", optional: true},
# Development and testing
{:ex_doc, "~> 0.31", only: :dev, runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:mox, "~> 1.1", only: :test},
{:bypass, "~> 2.1", only: :test}
]
end
defp description do
"""
A modern Elixir client for Weaviate vector database with support for
collections, objects, batch operations, GraphQL queries, and vector search.
Includes health checks and friendly error messages for missing configuration.
"""
end
defp package do
[
name: "weaviate_ex",
description: description(),
files: ~w(lib mix.exs README.md INSTALL.md CHANGELOG.md LICENSE assets),
licenses: ["MIT"],
links: %{
"GitHub" => @source_url,
"Online documentation" => "https://hexdocs.pm/weaviate_ex",
"Weaviate" => "https://weaviate.io"
},
maintainers: ["nshkrdotcom"],
exclude_patterns: [
"priv/plts",
".DS_Store"
]
]
end
defp docs do
[
main: "readme",
name: "WeaviateEx",
source_ref: "v#{@version}",
source_url: @source_url,
homepage_url: @source_url,
assets: %{"assets" => "assets"},
logo: "assets/weaviate_ex.svg",
extras: [
"README.md",
"INSTALL.md",
"CHANGELOG.md",
"LICENSE"
],
groups_for_extras: [
Guides: ["README.md", "INSTALL.md"],
"Release Notes": ["CHANGELOG.md"]
],
groups_for_modules: [
"Core API": [WeaviateEx],
Application: [WeaviateEx.Application]
],
before_closing_head_tag: fn
:html ->
"""
"""
_ ->
""
end
]
end
end