iex> Projects.moduledoc()
"""
Things I've shipped or am actively building, alongside the platforms where they live. Most projects are open source on Codeberg; the rest are scattered across platforms I've experimented with.
"""
iex> Ken.platforms()
[
%Platform{
name: :codeberg,
about: "Open source contributions and personal projects"
},
%Platform{
name: :exercism,
about: "Programming exercises and solutions in Elixir and other languages"
},
%Platform{
},
%Platform{
}
]
iex> Ken.project!("livebooks")
%Project{
name: "Livebooks",
kind: :notebooks,
platform: :codeberg,
about: "Niche personal-problem tools, built while learning Livebook",
items: [
%Notebook{
status: :live,
about: "Track international Kickstarter pledges across currencies"
},
%Notebook{
status: :live,
about: "Multi-currency budget for subscriptions, rent, utilities & other recurring bills"
}
]
}
iex> Ken.project!("budgeteer")
%Project{
name: "Budgeteer",
kind: :app,
platform: :codeberg,
about: "A local-first household budget app — multi-currency, FX-markup transparency, no cloud. In active development toward v0.1.0; not yet released.",
status: :in_progress
}
iex> Ken.project!("tossdo")
%Project{
name: "TossDo",
kind: :app,
platform: :codeberg,
about: "A local-first, open-source to-do app that's deliberately ephemeral — write it, do it, toss it, nothing remains. No archive, no history, no inbox piling up. The to-do list you're meant to throw away. v0.1.0 released; run from source for now.",
status: :in_progress
}
iex> Ken.roadmap()
[
%Project{
name: "Budgeteer",
kind: :app,
status: :in_progress
}
%Project{
name: "TossDo",
kind: :app,
status: :in_progress
}
%Project{
name: "Git forge",
kind: :app,
about: "(name TBD) A privacy-first Git forge — self-hostable, AI-free, free of Big-Tech ownership and telemetry. The principled alternative to GitHub.",
status: :todo
}
%Project{
name: "Discussion service",
kind: :app,
about: "(name TBD) A community discussion service in the spirit of Hacker News, Reddit, and 5ch — open-source, deployed as a hosted service. No algorithmic feed, no engagement traps.",
status: :todo
}
%Project{
name: "AI agent",
kind: :app,
about: "(name TBD) A self-hosted, open-source AI agent for autonomous research and task automation — your tools, your data, your prompts, all under your roof.",
status: :todo
}
]
iex> Projects.tip()
"If any of these are useful to you, please consider buying me a coffee on Ko-fi ☕. It funds the focused weekends I need to ship the next one."