Current section
Files
Jump to
Current section
Files
portfolio_manager
mix.exs
mix.exs
defmodule PortfolioManager.MixProject do
use Mix.Project
@version "0.1.0"
@source_url "https://github.com/nshkrdotcom/portfolio_manager"
def project do
[
app: :portfolio_manager,
version: @version,
elixir: "~> 1.15",
start_permanent: Mix.env() == :prod,
deps: deps(),
elixirc_paths: elixirc_paths(Mix.env()),
# Hex
description: "AI-native personal project intelligence system",
package: package(),
# Docs
name: "Portfolio Manager",
docs: docs(),
# Testing
test_coverage: [tool: ExCoveralls],
preferred_cli_env: [
coveralls: :test,
"coveralls.detail": :test,
"coveralls.html": :test
],
# Dialyzer
dialyzer: [
plt_add_apps: [:mix],
plt_local_path: "priv/plts/project.plt",
plt_core_path: "priv/plts/core.plt"
]
]
end
def application do
[
extra_applications: [:logger],
mod: {PortfolioManager.Application, []}
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
# YAML parsing
{:yaml_elixir, "~> 2.9"},
# JSON
{:jason, "~> 1.4"},
# RAG (Retrieval-Augmented Generation)
{:rag, "~> 0.3.3", hex: :rag_ex},
# File watching (optional)
{:file_system, "~> 1.0", optional: true},
# SQLite caching (optional)
{:exqlite, "~> 0.23", optional: true},
# Testing
{:supertester, "~> 0.3", only: :test},
{:excoveralls, "~> 0.18", only: :test},
{:mox, "~> 1.1", only: :test},
# Docs
{:ex_doc, "~> 0.31", only: :dev, runtime: false},
# Static analysis
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}
]
end
defp package do
[
maintainers: ["nshkrdotcom"],
licenses: ["MIT"],
links: %{
"GitHub" => @source_url
},
files: ~w(lib assets priv .formatter.exs mix.exs README.md LICENSE guides)
]
end
defp docs do
[
main: "readme",
source_url: @source_url,
source_ref: "v#{@version}",
assets: %{"assets" => "assets"},
logo: "assets/portfolio_manager.svg",
extras: [
"README.md",
"LICENSE",
"guides/01_overview.md",
"guides/02_installation_and_init.md",
"guides/03_configuration_and_structure.md",
"guides/04_cli_reference.md",
"guides/05_detection_and_metadata.md",
"guides/06_agentic_detection_and_review.md",
"guides/07_views_and_graph.md",
"guides/08_workflows.md",
"guides/09_search_and_cache.md",
"guides/10_library_api.md",
"guides/11_operations_and_migration.md"
],
groups_for_extras: [
Guides: [
"guides/01_overview.md",
"guides/02_installation_and_init.md",
"guides/03_configuration_and_structure.md",
"guides/04_cli_reference.md",
"guides/05_detection_and_metadata.md",
"guides/06_agentic_detection_and_review.md",
"guides/07_views_and_graph.md",
"guides/08_workflows.md",
"guides/09_search_and_cache.md",
"guides/10_library_api.md",
"guides/11_operations_and_migration.md"
]
],
groups_for_modules: [
Core: [
PortfolioManager,
PortfolioManager.Portfolio,
PortfolioManager.Graph,
PortfolioManager.Views
],
Domain: [
PortfolioManager.Domain.Repo,
PortfolioManager.Domain.Context,
PortfolioManager.Domain.Relationship,
PortfolioManager.Domain.Registry
],
Ports: [
PortfolioManager.Ports.Storage,
PortfolioManager.Ports.Git,
PortfolioManager.Ports.Detection
],
Adapters: [
PortfolioManager.Adapters.YAMLStorage,
PortfolioManager.Adapters.LocalGit,
PortfolioManager.Adapters.FileDetector
],
Detection: [
PortfolioManager.Detection.Agentic
],
Workflow: [
PortfolioManager.Workflow.Engine,
PortfolioManager.Workflow.Parser,
PortfolioManager.Workflow.Context,
PortfolioManager.Workflow.Step
],
Cache: [
PortfolioManager.Cache.SQLite
],
RAG: [
PortfolioManager.Rag,
PortfolioManager.Rag.Tools.SearchRepos,
PortfolioManager.Rag.Tools.GetRepoContext,
PortfolioManager.Rag.Tools.ListRepos,
PortfolioManager.Rag.Tools.FindRelationships,
PortfolioManager.Rag.Tools.CompareRepos,
PortfolioManager.Rag.Tools.GetPortfolioStats
]
]
]
end
end