feat: initial project setup with implementation plan

- Add PLAN.md with 40-step checklist across 10 phases
- Add CLAUDE.md with project-specific instructions
- Set up nix flake with FastHTML/MonsterUI dependencies
- Create Python package skeleton (src/animaltrack)
- Vendor FastHTML and MonsterUI documentation
- Add Docker build configuration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-27 17:37:16 +00:00
parent 852107794b
commit c0b939627b
61 changed files with 18076 additions and 0 deletions

34
packages/apswutils.nix Normal file
View File

@@ -0,0 +1,34 @@
{
lib,
buildPythonPackage,
fetchPypi,
setuptools,
fastcore,
apsw,
}:
buildPythonPackage rec {
pname = "apswutils";
version = "0.1.0";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256:0n5yvm132rdzr7ixp0i07n8hk0zpwijjbnffrmr0z2khkljnnmsc";
};
build-system = [ setuptools ];
dependencies = [
fastcore
apsw
];
doCheck = false;
meta = {
description = "Utilities for working with APSW";
homepage = "https://github.com/AnswerDotAI/apswutils";
license = lib.licenses.asl20;
};
}

30
packages/fastcore.nix Normal file
View File

@@ -0,0 +1,30 @@
{
lib,
buildPythonPackage,
fetchPypi,
setuptools,
packaging,
}:
buildPythonPackage rec {
pname = "fastcore";
version = "1.8.16";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256:1jc47l215dfc5d24pcg5zch25ingxpy1yd4afb2gndlbv08mr38d";
};
build-system = [ setuptools ];
dependencies = [ packaging ];
doCheck = false;
meta = {
description = "Python supercharged for fastai development";
homepage = "https://github.com/fastai/fastcore";
license = lib.licenses.asl20;
};
}

34
packages/fastlite.nix Normal file
View File

@@ -0,0 +1,34 @@
{
lib,
buildPythonPackage,
fetchPypi,
setuptools,
fastcore,
apswutils,
}:
buildPythonPackage rec {
pname = "fastlite";
version = "0.2.1";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256:1hi5i68rpffghp254gpv332baqfkdl41j9zzxrdig5yicbm0p3qb";
};
build-system = [ setuptools ];
dependencies = [
fastcore
apswutils
];
doCheck = false;
meta = {
description = "A bit of extra usability for sqlite";
homepage = "https://github.com/AnswerDotAI/fastlite";
license = lib.licenses.asl20;
};
}

30
packages/fastmigrate.nix Normal file
View File

@@ -0,0 +1,30 @@
{
lib,
buildPythonPackage,
fetchPypi,
setuptools,
apswutils,
}:
buildPythonPackage rec {
pname = "fastmigrate";
version = "0.4.0";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256:02pbmw3bxs4cdr1ni7z9832m8dwb12nmbjmmg5j55pczxjc2656v";
};
build-system = [ setuptools ];
dependencies = [ apswutils ];
doCheck = false;
meta = {
description = "Database migration tool for APSW/SQLite";
homepage = "https://github.com/AnswerDotAI/fastmigrate";
license = lib.licenses.asl20;
};
}

30
packages/mistletoe.nix Normal file
View File

@@ -0,0 +1,30 @@
{
lib,
buildPythonPackage,
fetchPypi,
setuptools,
}:
buildPythonPackage rec {
pname = "mistletoe";
version = "1.5.0";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256:0i2d4v9rrk6275pjqf816izhv79pbinifdg0hb45w1zqigk3pdv8";
};
build-system = [ setuptools ];
# No runtime dependencies
dependencies = [ ];
doCheck = false;
meta = {
description = "A fast, extensible Markdown parser in pure Python";
homepage = "https://github.com/miyuchina/mistletoe";
license = lib.licenses.mit;
};
}

38
packages/monsterui.nix Normal file
View File

@@ -0,0 +1,38 @@
{
lib,
buildPythonPackage,
fetchPypi,
setuptools,
python-fasthtml,
fastcore,
lxml,
mistletoe,
}:
buildPythonPackage rec {
pname = "monsterui";
version = "1.0.34";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256:03krc10adsx6xf09lxw8gs8lq7jja8yyhw5hjrgss24fgal6163b";
};
build-system = [ setuptools ];
dependencies = [
python-fasthtml
fastcore
lxml
mistletoe
];
doCheck = false;
meta = {
description = "Beautiful UI components for FastHTML";
homepage = "https://github.com/AnswerDotAI/MonsterUI";
license = lib.licenses.asl20;
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
buildPythonPackage,
fetchPypi,
setuptools,
fastcore,
python-dateutil,
starlette,
oauthlib,
itsdangerous,
uvicorn,
httpx,
fastlite,
python-multipart,
beautifulsoup4,
}:
buildPythonPackage rec {
pname = "python-fasthtml";
version = "0.12.35";
pyproject = true;
src = fetchPypi {
pname = "python_fasthtml";
inherit version;
hash = "sha256:15iq7zykqa1i7mkir2wzg0js2dvjplarq1jzb9igj61qb5f25p1l";
};
build-system = [ setuptools ];
dependencies = [
fastcore
python-dateutil
starlette
oauthlib
itsdangerous
uvicorn
httpx
fastlite
python-multipart
beautifulsoup4
];
doCheck = false;
meta = {
description = "FastHTML - Modern web applications in pure Python";
homepage = "https://github.com/AnswerDotAI/fasthtml";
license = lib.licenses.asl20;
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
buildPythonPackage,
fetchPypi,
setuptools,
anyio,
}:
buildPythonPackage rec {
pname = "sse-starlette";
version = "3.0.3";
pyproject = true;
src = fetchPypi {
pname = "sse_starlette";
inherit version;
hash = "sha256:0wdr348bi3hd9ivbvcvsahxs441rn1vai30ck7m00qp18y3v1kw8";
};
build-system = [ setuptools ];
dependencies = [ anyio ];
doCheck = false;
meta = {
description = "SSE plugin for Starlette";
homepage = "https://github.com/sysid/sse-starlette";
license = lib.licenses.bsd3;
};
}