{ "version": "1.0.0", "gitCommitHash": "c86c04ca220672fb012bb69916e930102be44ef4", "generatedAt": "2026-07-10T12:53:39.706Z", "files": { ".dockerignore": { "filePath": ".dockerignore", "contentHash": "72d51e57c64e7583ccb9b122eca019a2a4e49244463af8d4adf6342ac4739047", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 17, "hasStructuralAnalysis": false }, ".env.example": { "filePath": ".env.example", "contentHash": "8e05f50c3676e3d6bc2d2eb5baff7308efa83e6563a074562dc0b10f6a3f6621", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 23, "hasStructuralAnalysis": true }, ".gitea/workflows/ci.yml": { "filePath": ".gitea/workflows/ci.yml", "contentHash": "1e72222548adfad22b442eae11a55041dc6de667741b131cd060e08fd26fb7ed", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 36, "hasStructuralAnalysis": true }, ".ua/.understandignore": { "filePath": ".ua/.understandignore", "contentHash": "27a2034ecb02b6e160e33cc37257d2492552856f76550bd3c91af50e61a2d79f", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 53, "hasStructuralAnalysis": false }, ".ua/config.json": { "filePath": ".ua/config.json", "contentHash": "3a60666fa673e1d392185dec6f91c716860a481acd510ac86736cd6c832e2809", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 2, "hasStructuralAnalysis": true }, "app/__init__.py": { "filePath": "app/__init__.py", "contentHash": "abf9e17668dd6c771481dd5daf0f0439a3bba0be70165baa09ae1a9c82380112", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 2, "hasStructuralAnalysis": true }, "app/auth/__init__.py": { "filePath": "app/auth/__init__.py", "contentHash": "9b2c4beedc2273bdd8c348b6f7247fe5fa7b722dc5617006a291048973a76843", "functions": [], "classes": [], "imports": [ { "source": "app.auth.oauth", "specifiers": [ "GiteaOAuth" ] }, { "source": "app.auth.session", "specifiers": [ "SessionManager", "get_current_user" ] } ], "exports": [], "totalLines": 4, "hasStructuralAnalysis": true }, "app/auth/oauth.py": { "filePath": "app/auth/oauth.py", "contentHash": "62fca284b1c19a1513ec58cd4b8960eac1b4d14e5b5e9802480608fe406d4e4f", "functions": [], "classes": [ { "name": "GiteaOAuth", "methods": [ "__init__", "enabled", "get_authorize_url", "exchange_code", "get_user" ], "properties": [], "exported": true, "lineCount": 60 } ], "imports": [ { "source": "logging", "specifiers": [ "logging" ] }, { "source": "urllib.parse", "specifiers": [ "urlencode" ] }, { "source": "httpx", "specifiers": [ "httpx" ] }, { "source": "app.config", "specifiers": [ "settings" ] } ], "exports": [ "GiteaOAuth" ], "totalLines": 78, "hasStructuralAnalysis": true }, "app/auth/session.py": { "filePath": "app/auth/session.py", "contentHash": "1706b71bfa6546d954796e4444c3410dcd70d62c221441c36318fbece0fe487a", "functions": [ { "name": "get_current_user", "params": [ "request" ], "returnType": "dict | None", "exported": true, "lineCount": 7 } ], "classes": [ { "name": "SessionManager", "methods": [ "create_session", "decode_session", "store_token", "get_token" ], "properties": [], "exported": true, "lineCount": 45 } ], "imports": [ { "source": "json", "specifiers": [ "json" ] }, { "source": "datetime", "specifiers": [ "datetime", "timedelta" ] }, { "source": "itsdangerous", "specifiers": [ "URLSafeTimedSerializer", "BadSignature", "SignatureExpired" ] }, { "source": "app.config", "specifiers": [ "settings" ] } ], "exports": [ "SessionManager", "get_current_user" ], "totalLines": 69, "hasStructuralAnalysis": true }, "app/config.py": { "filePath": "app/config.py", "contentHash": "dd5a86aae2cd722b90028f2d3fa8ad6afc21aacfe92ad3b2a15506463ce7f8fa", "functions": [], "classes": [ { "name": "Settings", "methods": [ "db_path" ], "properties": [ "gitea_url", "gitea_token", "gitea_oauth_client_id", "gitea_oauth_client_secret", "gitea_webhook_secret", "oauth_redirect_uri", "webhook_base_url", "app_secret_key", "app_host", "app_port", "log_level", "default_lang", "rate_limit_enabled", "rate_limit_requests", "database_url", "sync_interval", "gitea_cache_ttl" ], "exported": true, "lineCount": 43 } ], "imports": [ { "source": "pathlib", "specifiers": [ "Path" ] }, { "source": "pydantic_settings", "specifiers": [ "BaseSettings", "SettingsConfigDict" ] } ], "exports": [ "Settings" ], "totalLines": 54, "hasStructuralAnalysis": true }, "app/db.py": { "filePath": "app/db.py", "contentHash": "7354c63a66ecc73a9228816edeaef575e85492b0a13e8a273ad123a6e63d5e58", "functions": [ { "name": "get_db_path", "params": [], "returnType": "Path", "exported": true, "lineCount": 3 }, { "name": "init_db", "params": [], "exported": true, "lineCount": 282 }, { "name": "get_conn", "params": [], "exported": true, "lineCount": 11 } ], "classes": [], "imports": [ { "source": "sqlite3", "specifiers": [ "sqlite3" ] }, { "source": "contextlib", "specifiers": [ "contextmanager" ] }, { "source": "pathlib", "specifiers": [ "Path" ] } ], "exports": [ "get_db_path", "init_db", "get_conn" ], "totalLines": 310, "hasStructuralAnalysis": true }, "app/main.py": { "filePath": "app/main.py", "contentHash": "6ce18cabb0f092319d7657ad2ca7a39b2ab40d215edb8e85b3f748b86de8fd14", "functions": [ { "name": "lifespan", "params": [ "_app" ], "exported": true, "lineCount": 11 }, { "name": "pwa_manifest", "params": [], "exported": true, "lineCount": 10 } ], "classes": [], "imports": [ { "source": "logging", "specifiers": [ "logging" ] }, { "source": "contextlib", "specifiers": [ "asynccontextmanager" ] }, { "source": "fastapi", "specifiers": [ "FastAPI" ] }, { "source": "fastapi.staticfiles", "specifiers": [ "StaticFiles" ] }, { "source": "fastapi.middleware.cors", "specifiers": [ "CORSMiddleware" ] }, { "source": "starlette.middleware.sessions", "specifiers": [ "SessionMiddleware" ] }, { "source": "app.config", "specifiers": [ "settings" ] }, { "source": "app.db", "specifiers": [ "init_db" ] }, { "source": "app.middleware.csrf", "specifiers": [ "CSRFMiddleware" ] }, { "source": "app.routers", "specifiers": [ "dashboard", "board", "notes", "api", "auth", "webhooks", "collections", "my_tasks", "workspace", "public_api" ] }, { "source": "app.services.gitea_client", "specifiers": [ "gitea" ] }, { "source": "app.services.webhook_outbound", "specifiers": [ "init_webhook_tables" ] } ], "exports": [ "lifespan", "pwa_manifest" ], "totalLines": 77, "hasStructuralAnalysis": true }, "app/middleware/__init__.py": { "filePath": "app/middleware/__init__.py", "contentHash": "e060b3e6ddbe46184e17ae08884508acbaa45cf80549b91c91bd592d0005c752", "functions": [], "classes": [], "imports": [ { "source": "app.middleware.csrf", "specifiers": [ "CSRFMiddleware" ] } ], "exports": [], "totalLines": 3, "hasStructuralAnalysis": true }, "app/middleware/csrf.py": { "filePath": "app/middleware/csrf.py", "contentHash": "41736bde320c1ceee4c6ff698da74b52017008935762a26ff045722eaa46dd35", "functions": [], "classes": [ { "name": "CSRFMiddleware", "methods": [ "dispatch" ], "properties": [], "exported": true, "lineCount": 39 } ], "imports": [ { "source": "secrets", "specifiers": [ "secrets" ] }, { "source": "starlette.middleware.base", "specifiers": [ "BaseHTTPMiddleware" ] }, { "source": "starlette.responses", "specifiers": [ "JSONResponse" ] }, { "source": "starlette.requests", "specifiers": [ "Request" ] } ], "exports": [ "CSRFMiddleware" ], "totalLines": 50, "hasStructuralAnalysis": true }, "app/models/__init__.py": { "filePath": "app/models/__init__.py", "contentHash": "2d9800f0c58ae44cf71f439e9d8dd635bac5d9ee89d378f574b8e30b1641dcb9", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 2, "hasStructuralAnalysis": true }, "app/routers/__init__.py": { "filePath": "app/routers/__init__.py", "contentHash": "953cd8e76e85d3d0a12706d5531ce1e6579db58b44329dd7d0859f543d747622", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 2, "hasStructuralAnalysis": true }, "app/routers/api.py": { "filePath": "app/routers/api.py", "contentHash": "190f5c8953d8cf4b8cff28c0ab31b57110956d47c301655c09326b79c6586c2d", "functions": [ { "name": "_check_rate_limit", "params": [ "request" ], "returnType": "bool", "exported": true, "lineCount": 14 }, { "name": "health", "params": [], "exported": true, "lineCount": 22 }, { "name": "stats", "params": [], "exported": true, "lineCount": 14 }, { "name": "projects", "params": [ "search", "show_archived" ], "exported": true, "lineCount": 13 }, { "name": "move_card", "params": [ "request", "owner", "repo", "issue_id", "column" ], "exported": true, "lineCount": 67 }, { "name": "_get_status_labels", "params": [ "owner", "repo", "board_id" ], "returnType": "list[str]", "exported": true, "lineCount": 7 }, { "name": "set_col_mapping", "params": [ "owner", "repo", "column", "gitea_label", "close_issue" ], "exported": true, "lineCount": 27 }, { "name": "delete_col_mapping", "params": [ "owner", "repo", "column" ], "exported": true, "lineCount": 22 }, { "name": "get_board_config", "params": [ "owner", "repo" ], "exported": true, "lineCount": 18 }, { "name": "update_board_config", "params": [ "owner", "repo", "columns", "wip_limits" ], "exported": true, "lineCount": 23 }, { "name": "create_issue", "params": [ "request", "owner", "repo", "title", "body", "labels", "milestone", "assignee" ], "exported": true, "lineCount": 38 }, { "name": "update_issue_api", "params": [ "request", "owner", "repo", "issue_id", "title", "body", "state", "labels", "milestone", "assignee" ], "exported": true, "lineCount": 55 }, { "name": "get_issue_detail", "params": [ "owner", "repo", "issue_id", "format" ], "exported": true, "lineCount": 70 }, { "name": "create_checklist", "params": [ "owner", "repo", "issue_id", "title" ], "exported": true, "lineCount": 21 }, { "name": "add_checklist_item", "params": [ "owner", "repo", "issue_id", "checklist_id", "content" ], "exported": true, "lineCount": 15 }, { "name": "toggle_checklist_item", "params": [ "item_id", "checked", "content" ], "exported": true, "lineCount": 19 }, { "name": "delete_checklist_item", "params": [ "item_id" ], "exported": true, "lineCount": 6 }, { "name": "delete_checklist", "params": [ "checklist_id" ], "exported": true, "lineCount": 7 }, { "name": "get_my_profile", "params": [ "request" ], "exported": true, "lineCount": 12 }, { "name": "update_my_profile", "params": [ "request", "full_name", "email" ], "exported": true, "lineCount": 14 }, { "name": "update_card", "params": [ "owner", "repo", "issue_id", "priority", "due_date" ], "exported": true, "lineCount": 35 }, { "name": "get_collaborators", "params": [ "owner", "repo" ], "exported": true, "lineCount": 7 } ], "classes": [], "imports": [ { "source": "json", "specifiers": [ "json" ] }, { "source": "logging", "specifiers": [ "logging" ] }, { "source": "datetime", "specifiers": [ "datetime" ] }, { "source": "typing", "specifiers": [ "Optional" ] }, { "source": "fastapi", "specifiers": [ "APIRouter", "HTTPException", "Query", "Request" ] }, { "source": "fastapi.responses", "specifiers": [ "HTMLResponse" ] }, { "source": "app.config", "specifiers": [ "settings" ] }, { "source": "app.db", "specifiers": [ "get_conn" ] }, { "source": "app.routers.board", "specifiers": [ "_issue_column", "_map_issue_to_card", "STATUS_COLORS", "STATUS_LABELS" ] }, { "source": "app.services.gitea_client", "specifiers": [ "gitea" ] }, { "source": "app.auth.session", "specifiers": [ "SessionManager" ] } ], "exports": [ "_check_rate_limit", "health", "stats", "projects", "move_card", "_get_status_labels", "set_col_mapping", "delete_col_mapping", "get_board_config", "update_board_config", "create_issue", "update_issue_api", "get_issue_detail", "create_checklist", "add_checklist_item", "toggle_checklist_item", "delete_checklist_item", "delete_checklist", "get_my_profile", "update_my_profile", "update_card", "get_collaborators" ], "totalLines": 626, "hasStructuralAnalysis": true }, "app/routers/auth.py": { "filePath": "app/routers/auth.py", "contentHash": "dd2bf3c70d14fd200aa1dc2e61db0336f9d9f8a6c0f802dcd858413dcc7ee9dc", "functions": [ { "name": "login", "params": [ "request" ], "exported": true, "lineCount": 21 }, { "name": "callback", "params": [ "request", "code", "state" ], "exported": true, "lineCount": 50 }, { "name": "logout", "params": [], "exported": true, "lineCount": 5 }, { "name": "current_user", "params": [ "request" ], "exported": true, "lineCount": 7 } ], "classes": [], "imports": [ { "source": "logging", "specifiers": [ "logging" ] }, { "source": "secrets", "specifiers": [ "secrets" ] }, { "source": "fastapi", "specifiers": [ "APIRouter", "Request", "Query" ] }, { "source": "fastapi.responses", "specifiers": [ "RedirectResponse", "HTMLResponse" ] }, { "source": "app.auth.session", "specifiers": [ "SessionManager" ] }, { "source": "app.auth.oauth", "specifiers": [ "gitea_oauth" ] }, { "source": "app.config", "specifiers": [ "settings" ] } ], "exports": [ "login", "callback", "logout", "current_user" ], "totalLines": 111, "hasStructuralAnalysis": true }, "app/routers/board.py": { "filePath": "app/routers/board.py", "contentHash": "5d076489d2b006a63393cc9e8e1e33c7400192ace26b039ad32e33f8fbafc67a", "functions": [ { "name": "_issue_column", "params": [ "issue", "columns", "board_id" ], "returnType": "str", "exported": true, "lineCount": 12 }, { "name": "_map_issue_to_card", "params": [ "issue", "owner", "repo" ], "returnType": "dict", "exported": true, "lineCount": 75 }, { "name": "_build_page_tree", "params": [ "conn", "parent_id", "ws_key", "depth", "max_depth" ], "returnType": "list[dict]", "exported": true, "lineCount": 23 }, { "name": "_sidebar_data", "params": [ "request", "owner", "repo" ], "returnType": "dict", "exported": true, "lineCount": 34 }, { "name": "_extract_ai_keywords", "params": [ "owner", "repo", "labels", "body" ], "exported": true, "lineCount": 32 }, { "name": "_get_project_properties", "params": [ "owner", "repo" ], "returnType": "list[dict]", "exported": true, "lineCount": 7 }, { "name": "_get_dynamic_groups", "params": [ "owner", "repo" ], "returnType": "list[str]", "exported": true, "lineCount": 9 }, { "name": "asyncio_get_labels", "params": [ "owner", "repo" ], "exported": true, "lineCount": 2 }, { "name": "_apply_filters", "params": [ "cards", "status_filter", "filters" ], "returnType": "list[dict]", "exported": true, "lineCount": 16 }, { "name": "_apply_sorts", "params": [ "cards", "sorts" ], "returnType": "list[dict]", "exported": true, "lineCount": 18 }, { "name": "library_page", "params": [ "request" ], "exported": true, "lineCount": 12 }, { "name": "list_trash", "params": [ "request" ], "exported": true, "lineCount": 4 }, { "name": "restore_page", "params": [ "request", "page_id" ], "exported": true, "lineCount": 5 }, { "name": "permanent_delete", "params": [ "request", "page_id" ], "exported": true, "lineCount": 6 }, { "name": "trash_page", "params": [ "request" ], "exported": true, "lineCount": 5 }, { "name": "board", "params": [ "request", "owner", "repo", "view" ], "exported": true, "lineCount": 7 }, { "name": "board_view", "params": [ "request", "owner", "repo", "view", "status", "filter", "sort" ], "exported": true, "lineCount": 72 }, { "name": "get_properties", "params": [ "owner", "repo" ], "exported": true, "lineCount": 2 }, { "name": "create_property", "params": [ "owner", "repo", "name", "prop_type", "options" ], "exported": true, "lineCount": 14 }, { "name": "delete_property", "params": [ "owner", "repo", "name" ], "exported": true, "lineCount": 8 }, { "name": "set_property_value", "params": [ "owner", "repo", "issue_id", "name", "value" ], "exported": true, "lineCount": 15 }, { "name": "get_ai_keywords", "params": [ "owner", "repo" ], "exported": true, "lineCount": 7 }, { "name": "extract_ai_keywords", "params": [ "owner", "repo" ], "exported": true, "lineCount": 10 }, { "name": "create_page", "params": [ "request", "title", "section", "project", "parent_id" ], "exported": true, "lineCount": 24 }, { "name": "get_page", "params": [ "page_id" ], "exported": true, "lineCount": 7 }, { "name": "update_page", "params": [ "request", "page_id", "title", "content", "content_format" ], "exported": true, "lineCount": 13 }, { "name": "save_page_blocks", "params": [ "request", "page_id" ], "exported": true, "lineCount": 17 }, { "name": "move_page", "params": [ "request", "page_id", "new_parent_id", "new_order" ], "exported": true, "lineCount": 36 }, { "name": "delete_page", "params": [ "request", "page_id" ], "exported": true, "lineCount": 10 }, { "name": "view_page", "params": [ "request", "page_id" ], "exported": true, "lineCount": 12 }, { "name": "sync_project", "params": [ "owner", "repo" ], "exported": true, "lineCount": 25 } ], "classes": [], "imports": [ { "source": "json", "specifiers": [ "json" ] }, { "source": "logging", "specifiers": [ "logging" ] }, { "source": "fastapi", "specifiers": [ "APIRouter", "Request", "HTTPException", "Query" ] }, { "source": "fastapi.responses", "specifiers": [ "HTMLResponse" ] }, { "source": "app.db", "specifiers": [ "get_conn" ] }, { "source": "app.services.gitea_client", "specifiers": [ "gitea" ] }, { "source": "app.auth.session", "specifiers": [ "SessionManager" ] } ], "exports": [ "_issue_column", "_map_issue_to_card", "_build_page_tree", "_sidebar_data", "_extract_ai_keywords", "_get_project_properties", "_get_dynamic_groups", "asyncio_get_labels", "_apply_filters", "_apply_sorts", "library_page", "list_trash", "restore_page", "permanent_delete", "trash_page", "board", "board_view", "get_properties", "create_property", "delete_property", "set_property_value", "get_ai_keywords", "extract_ai_keywords", "create_page", "get_page", "update_page", "save_page_blocks", "move_page", "delete_page", "view_page", "sync_project" ], "totalLines": 659, "hasStructuralAnalysis": true }, "app/routers/collections.py": { "filePath": "app/routers/collections.py", "contentHash": "0f3a77021db14d77bb564b7d63d512f6ea543d9ece63ee5b3132b7b81c07ea80", "functions": [ { "name": "list_collections", "params": [ "request" ], "exported": true, "lineCount": 13 }, { "name": "list_collections_api", "params": [ "request" ], "exported": true, "lineCount": 7 }, { "name": "create_collection_api", "params": [ "request" ], "exported": true, "lineCount": 40 }, { "name": "update_collection_api", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 32 }, { "name": "delete_collection_api", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 13 }, { "name": "get_page_api", "params": [ "request", "page_id" ], "exported": true, "lineCount": 10 }, { "name": "update_page_api", "params": [ "request", "page_id" ], "exported": true, "lineCount": 32 }, { "name": "delete_page_api", "params": [ "request", "page_id" ], "exported": true, "lineCount": 13 }, { "name": "list_boards_as_collections", "params": [ "request" ], "exported": true, "lineCount": 5 }, { "name": "get_board_as_collection", "params": [ "request", "owner", "repo" ], "exported": true, "lineCount": 12 }, { "name": "sync_board_to_collection", "params": [ "request", "owner", "repo" ], "exported": true, "lineCount": 11 }, { "name": "list_property_types_api", "params": [ "request" ], "exported": true, "lineCount": 4 }, { "name": "list_properties_api", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 11 }, { "name": "create_property_api", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 40 }, { "name": "update_property_api", "params": [ "request", "prop_id" ], "exported": true, "lineCount": 29 }, { "name": "delete_property_api", "params": [ "request", "prop_id" ], "exported": true, "lineCount": 12 }, { "name": "create_relation_property", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 49 }, { "name": "link_pages", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 71 }, { "name": "compute_rollup", "params": [ "request" ], "exported": true, "lineCount": 23 }, { "name": "evaluate_formula", "params": [ "request" ], "exported": true, "lineCount": 18 }, { "name": "get_view_api", "params": [ "request", "view_id" ], "exported": true, "lineCount": 7 }, { "name": "update_view_config", "params": [ "request", "view_id" ], "exported": true, "lineCount": 25 }, { "name": "save_view_as", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 27 }, { "name": "list_views_api", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 8 }, { "name": "list_sub_items", "params": [ "request", "collection_id", "page_id" ], "exported": true, "lineCount": 8 }, { "name": "create_sub_item", "params": [ "request", "collection_id", "page_id" ], "exported": true, "lineCount": 28 }, { "name": "aggregate_child_status", "params": [ "request", "collection_id", "page_id" ], "exported": true, "lineCount": 21 }, { "name": "set_dependencies", "params": [ "request", "collection_id", "page_id" ], "exported": true, "lineCount": 24 }, { "name": "check_dependencies", "params": [ "request", "collection_id", "page_id" ], "exported": true, "lineCount": 42 }, { "name": "view_collection", "params": [ "request", "collection_id", "view_type" ], "exported": true, "lineCount": 24 }, { "name": "_render_view", "params": [ "view_type", "collection", "pages", "config" ], "returnType": "str", "exported": true, "lineCount": 11 }, { "name": "_base_html", "params": [ "title", "icon", "view_type", "body" ], "returnType": "str", "exported": true, "lineCount": 21 }, { "name": "_render_calendar", "params": [ "view_type", "collection", "pages", "config" ], "returnType": "str", "exported": true, "lineCount": 65 }, { "name": "_render_gallery", "params": [ "view_type", "collection", "pages", "config" ], "returnType": "str", "exported": true, "lineCount": 44 }, { "name": "_render_list", "params": [ "view_type", "collection", "pages", "config" ], "returnType": "str", "exported": true, "lineCount": 25 }, { "name": "_render_timeline", "params": [ "view_type", "collection", "pages", "config" ], "returnType": "str", "exported": true, "lineCount": 57 }, { "name": "_render_table", "params": [ "view_type", "collection", "pages", "config" ], "returnType": "str", "exported": true, "lineCount": 17 }, { "name": "get_collection_api", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 23 }, { "name": "create_page_api", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 36 } ], "classes": [], "imports": [ { "source": "json", "specifiers": [ "json" ] }, { "source": "logging", "specifiers": [ "logging" ] }, { "source": "fastapi", "specifiers": [ "APIRouter", "Request", "HTTPException", "Query" ] }, { "source": "fastapi.responses", "specifiers": [ "HTMLResponse" ] }, { "source": "app.db", "specifiers": [ "get_conn" ] }, { "source": "app.auth.session", "specifiers": [ "SessionManager" ] } ], "exports": [ "list_collections", "list_collections_api", "create_collection_api", "update_collection_api", "delete_collection_api", "get_page_api", "update_page_api", "delete_page_api", "list_boards_as_collections", "get_board_as_collection", "sync_board_to_collection", "list_property_types_api", "list_properties_api", "create_property_api", "update_property_api", "delete_property_api", "create_relation_property", "link_pages", "compute_rollup", "evaluate_formula", "get_view_api", "update_view_config", "save_view_as", "list_views_api", "list_sub_items", "create_sub_item", "aggregate_child_status", "set_dependencies", "check_dependencies", "view_collection", "_render_view", "_base_html", "_render_calendar", "_render_gallery", "_render_list", "_render_timeline", "_render_table", "get_collection_api", "create_page_api" ], "totalLines": 1113, "hasStructuralAnalysis": true }, "app/routers/dashboard.py": { "filePath": "app/routers/dashboard.py", "contentHash": "74e1b45a18bef8d9fbf8ca738824c05db325a726ef5c3f4b46f7caa5922fe946", "functions": [ { "name": "_sidebar_data", "params": [ "request", "repos" ], "returnType": "dict", "exported": true, "lineCount": 29 }, { "name": "trash_page", "params": [ "request" ], "exported": true, "lineCount": 7 }, { "name": "library_page", "params": [ "request" ], "exported": true, "lineCount": 10 }, { "name": "view_page_root", "params": [ "request", "page_id" ], "exported": true, "lineCount": 23 }, { "name": "accounts_page", "params": [ "request" ], "exported": true, "lineCount": 11 }, { "name": "dashboard", "params": [ "request", "search", "show_archived" ], "exported": true, "lineCount": 24 } ], "classes": [], "imports": [ { "source": "logging", "specifiers": [ "logging" ] }, { "source": "fastapi", "specifiers": [ "APIRouter", "Request", "Query" ] }, { "source": "fastapi.responses", "specifiers": [ "HTMLResponse" ] }, { "source": "app.services.gitea_client", "specifiers": [ "gitea" ] }, { "source": "app.auth.session", "specifiers": [ "SessionManager" ] }, { "source": "app.db", "specifiers": [ "get_conn" ] } ], "exports": [ "_sidebar_data", "trash_page", "library_page", "view_page_root", "accounts_page", "dashboard" ], "totalLines": 136, "hasStructuralAnalysis": true }, "app/routers/my_tasks.py": { "filePath": "app/routers/my_tasks.py", "contentHash": "204729bdd7ae5916255228c7a5b51a35176b673fb09dc95003a6c80b44feb04f", "functions": [ { "name": "_get_current_user", "params": [ "request" ], "returnType": "dict | None", "exported": true, "lineCount": 3 }, { "name": "my_tasks_dashboard", "params": [ "request", "view", "days" ], "exported": true, "lineCount": 126 }, { "name": "my_tasks_api", "params": [ "request", "view", "days" ], "exported": true, "lineCount": 27 } ], "classes": [], "imports": [ { "source": "json", "specifiers": [ "json" ] }, { "source": "logging", "specifiers": [ "logging" ] }, { "source": "fastapi", "specifiers": [ "APIRouter", "Request", "HTTPException", "Query" ] }, { "source": "fastapi.responses", "specifiers": [ "HTMLResponse" ] }, { "source": "app.db", "specifiers": [ "get_conn" ] }, { "source": "app.auth.session", "specifiers": [ "SessionManager" ] } ], "exports": [ "_get_current_user", "my_tasks_dashboard", "my_tasks_api" ], "totalLines": 179, "hasStructuralAnalysis": true }, "app/routers/notes.py": { "filePath": "app/routers/notes.py", "contentHash": "a6bba0b09eb6957cbb4fc6b1e26b722414a9f3a91477fd917b896b6e2f715cd3", "functions": [ { "name": "get_notes", "params": [ "request", "owner", "repo" ], "exported": true, "lineCount": 14 }, { "name": "save_notes", "params": [ "request", "owner", "repo" ], "exported": true, "lineCount": 20 } ], "classes": [], "imports": [ { "source": "logging", "specifiers": [ "logging" ] }, { "source": "fastapi", "specifiers": [ "APIRouter", "Request" ] }, { "source": "fastapi.responses", "specifiers": [ "HTMLResponse" ] }, { "source": "app.db", "specifiers": [ "get_conn" ] } ], "exports": [ "get_notes", "save_notes" ], "totalLines": 53, "hasStructuralAnalysis": true }, "app/routers/public_api.py": { "filePath": "app/routers/public_api.py", "contentHash": "5b1cccebb692285c4a8d2df1f18aa9bc5e8d3a2b07efa99f1609fc21ec4676e2", "functions": [ { "name": "verify_token", "params": [ "authorization" ], "exported": true, "lineCount": 11 }, { "name": "generate_token", "params": [ "request" ], "exported": true, "lineCount": 10 }, { "name": "public_list_collections", "params": [ "request" ], "exported": true, "lineCount": 4 }, { "name": "public_get_collection", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 10 }, { "name": "public_list_pages", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 7 }, { "name": "public_get_page", "params": [ "request", "page_id" ], "exported": true, "lineCount": 6 }, { "name": "public_my_tasks", "params": [ "request" ], "exported": true, "lineCount": 7 } ], "classes": [], "imports": [ { "source": "json", "specifiers": [ "json" ] }, { "source": "logging", "specifiers": [ "logging" ] }, { "source": "secrets", "specifiers": [ "token_urlsafe" ] }, { "source": "fastapi", "specifiers": [ "APIRouter", "Request", "HTTPException", "Header", "Depends" ] }, { "source": "app.db", "specifiers": [ "get_conn" ] } ], "exports": [ "verify_token", "generate_token", "public_list_collections", "public_get_collection", "public_list_pages", "public_get_page", "public_my_tasks" ], "totalLines": 90, "hasStructuralAnalysis": true }, "app/routers/webhooks.py": { "filePath": "app/routers/webhooks.py", "contentHash": "276989c4b4dc1f90a654a2b5b35af5ec3db620c031121bc64554f9039c95faf3", "functions": [ { "name": "verify_signature", "params": [ "request" ], "returnType": "bool", "exported": true, "lineCount": 17 }, { "name": "receive_webhook", "params": [ "request" ], "exported": true, "lineCount": 18 }, { "name": "_handle_issue_event", "params": [ "payload" ], "exported": true, "lineCount": 64 }, { "name": "_handle_pr_event", "params": [ "payload" ], "exported": true, "lineCount": 9 }, { "name": "_handle_repo_event", "params": [ "payload" ], "exported": true, "lineCount": 5 }, { "name": "register_webhook", "params": [ "owner", "repo", "request" ], "exported": true, "lineCount": 22 }, { "name": "webhook_status", "params": [ "owner", "repo" ], "exported": true, "lineCount": 13 } ], "classes": [], "imports": [ { "source": "json", "specifiers": [ "json" ] }, { "source": "hmac", "specifiers": [ "hmac" ] }, { "source": "hashlib", "specifiers": [ "hashlib" ] }, { "source": "logging", "specifiers": [ "logging" ] }, { "source": "fastapi", "specifiers": [ "APIRouter", "Request", "HTTPException" ] }, { "source": "app.config", "specifiers": [ "settings" ] }, { "source": "app.db", "specifiers": [ "get_conn" ] }, { "source": "app.routers.board", "specifiers": [ "_issue_column" ] } ], "exports": [ "verify_signature", "receive_webhook", "_handle_issue_event", "_handle_pr_event", "_handle_repo_event", "register_webhook", "webhook_status" ], "totalLines": 182, "hasStructuralAnalysis": true }, "app/routers/workspace.py": { "filePath": "app/routers/workspace.py", "contentHash": "7acfeec409fcaa2f1d4bf88c2133990a746b82afbe3ef215e279aed58bd70180", "functions": [ { "name": "_current_user", "params": [ "request" ], "returnType": "dict", "exported": true, "lineCount": 3 }, { "name": "list_workspaces", "params": [ "request" ], "exported": true, "lineCount": 4 }, { "name": "create_workspace", "params": [ "request" ], "exported": true, "lineCount": 17 }, { "name": "list_members", "params": [ "request", "ws_id" ], "exported": true, "lineCount": 7 }, { "name": "add_member", "params": [ "request", "ws_id" ], "exported": true, "lineCount": 13 }, { "name": "update_member_role", "params": [ "request", "ws_id", "user_id" ], "exported": true, "lineCount": 10 }, { "name": "remove_member", "params": [ "request", "ws_id", "user_id" ], "exported": true, "lineCount": 5 }, { "name": "list_comments", "params": [ "request", "page_id" ], "exported": true, "lineCount": 7 }, { "name": "add_comment", "params": [ "request", "page_id" ], "exported": true, "lineCount": 15 }, { "name": "update_comment", "params": [ "request", "comment_id" ], "exported": true, "lineCount": 11 }, { "name": "page_history", "params": [ "request", "page_id" ], "exported": true, "lineCount": 7 }, { "name": "record_history", "params": [ "request", "page_id" ], "exported": true, "lineCount": 12 }, { "name": "list_favorites", "params": [ "request" ], "exported": true, "lineCount": 13 }, { "name": "add_favorite", "params": [ "request" ], "exported": true, "lineCount": 14 }, { "name": "remove_favorite", "params": [ "request", "fav_id" ], "exported": true, "lineCount": 5 }, { "name": "list_db_templates", "params": [ "request" ], "exported": true, "lineCount": 4 }, { "name": "create_db_template", "params": [ "request" ], "exported": true, "lineCount": 10 }, { "name": "apply_db_template", "params": [ "request", "tid" ], "exported": true, "lineCount": 17 }, { "name": "list_page_templates", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 6 }, { "name": "create_page_template", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 9 }, { "name": "apply_page_template", "params": [ "request", "collection_id", "tid" ], "exported": true, "lineCount": 15 }, { "name": "import_csv", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 23 }, { "name": "export_csv", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 25 }, { "name": "list_webhooks", "params": [ "request" ], "exported": true, "lineCount": 4 }, { "name": "create_webhook", "params": [ "request" ], "exported": true, "lineCount": 14 }, { "name": "delete_webhook", "params": [ "request", "wh_id" ], "exported": true, "lineCount": 5 }, { "name": "public_view", "params": [ "request", "collection_id" ], "exported": true, "lineCount": 20 } ], "classes": [], "imports": [ { "source": "csv", "specifiers": [ "csv" ] }, { "source": "io", "specifiers": [ "io" ] }, { "source": "json", "specifiers": [ "json" ] }, { "source": "logging", "specifiers": [ "logging" ] }, { "source": "fastapi", "specifiers": [ "APIRouter", "Request", "HTTPException" ] }, { "source": "fastapi.responses", "specifiers": [ "HTMLResponse", "StreamingResponse" ] }, { "source": "app.db", "specifiers": [ "get_conn" ] }, { "source": "app.auth.session", "specifiers": [ "SessionManager" ] } ], "exports": [ "_current_user", "list_workspaces", "create_workspace", "list_members", "add_member", "update_member_role", "remove_member", "list_comments", "add_comment", "update_comment", "page_history", "record_history", "list_favorites", "add_favorite", "remove_favorite", "list_db_templates", "create_db_template", "apply_db_template", "list_page_templates", "create_page_template", "apply_page_template", "import_csv", "export_csv", "list_webhooks", "create_webhook", "delete_webhook", "public_view" ], "totalLines": 412, "hasStructuralAnalysis": true }, "app/schemas/__init__.py": { "filePath": "app/schemas/__init__.py", "contentHash": "94bd9c3218f7f374a4a003bf05bc5582f34e81828c2f574f24277ddd5814fc5b", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 2, "hasStructuralAnalysis": true }, "app/services/__init__.py": { "filePath": "app/services/__init__.py", "contentHash": "958ed8d2ca8109e250dd8e10ba66fa3dd2252f9e27466f5048fedb0a42e00123", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 2, "hasStructuralAnalysis": true }, "app/services/collection_adapter.py": { "filePath": "app/services/collection_adapter.py", "contentHash": "7486fccf6d4e144098e1368f2b607813c806c85232bce6fd796903302d9af99e", "functions": [], "classes": [ { "name": "GiteaBoardCompat", "methods": [ "from_board", "from_card", "list_boards_as_collections", "get_board_as_collection", "get_board_cards", "sync_to_collection" ], "properties": [], "exported": true, "lineCount": 209 } ], "imports": [ { "source": "json", "specifiers": [ "json" ] }, { "source": "typing", "specifiers": [ "Optional" ] }, { "source": "app.db", "specifiers": [ "get_conn" ] } ], "exports": [ "GiteaBoardCompat" ], "totalLines": 223, "hasStructuralAnalysis": true }, "app/services/formula_engine.py": { "filePath": "app/services/formula_engine.py", "contentHash": "8223b1b9ae21c1771df27ef5fe857321fdfd3b65925b1d76ff2615365a0ec810", "functions": [], "classes": [ { "name": "FormulaEngine", "methods": [ "__init__", "evaluate", "_eval_expr", "_parse_args", "_prop", "_now", "_today", "_if", "_concat", "_round", "_contains", "_length", "_to_number", "_format_date", "_date_add", "_date_subtract", "_replace", "_replace_all", "_join", "_empty", "_and", "_or", "_not", "_start", "_end" ], "properties": [], "exported": true, "lineCount": 216 } ], "imports": [ { "source": "datetime", "specifiers": [ "datetime", "date", "timedelta" ] }, { "source": "typing", "specifiers": [ "Any", "Callable", "Optional" ] } ], "exports": [ "FormulaEngine" ], "totalLines": 224, "hasStructuralAnalysis": true }, "app/services/gitea_client.py": { "filePath": "app/services/gitea_client.py", "contentHash": "e77ca458fbb565b6908302964df8d8ecde7d2d7f8b9d103b7a7b6e29814f6911", "functions": [], "classes": [ { "name": "GiteaClient", "methods": [ "__init__", "_cached", "_set_cache", "get_user_repos", "get_org_repos", "get_user_orgs", "get_issues", "get_issue", "create_issue", "update_issue", "update_issue_labels", "close_issue", "reopen_issue", "get_issue_comments", "_invalidate_issue_cache", "get_labels", "get_milestones", "list_webhooks", "create_webhook", "delete_webhook", "get_collaborators" ], "properties": [], "exported": true, "lineCount": 281 } ], "imports": [ { "source": "logging", "specifiers": [ "logging" ] }, { "source": "datetime", "specifiers": [ "datetime", "timedelta" ] }, { "source": "typing", "specifiers": [ "Any" ] }, { "source": "httpx", "specifiers": [ "httpx" ] }, { "source": "app.config", "specifiers": [ "settings" ] } ], "exports": [ "GiteaClient" ], "totalLines": 301, "hasStructuralAnalysis": true }, "app/services/property_types.py": { "filePath": "app/services/property_types.py", "contentHash": "d015fa13b16be6c32f9a421d41fee03b96db73ba2c35e6425522661b58ed9de8", "functions": [ { "name": "validate_property_value", "params": [ "prop_type", "value", "options" ], "returnType": "tuple[bool, str]", "exported": true, "lineCount": 41 }, { "name": "get_auto_property_value", "params": [ "prop_type", "user" ], "returnType": "Any", "exported": true, "lineCount": 9 }, { "name": "get_next_unique_id", "params": [ "collection_id", "conn" ], "returnType": "int", "exported": true, "lineCount": 8 }, { "name": "format_number", "params": [ "value", "fmt" ], "returnType": "str", "exported": true, "lineCount": 15 } ], "classes": [], "imports": [ { "source": "json", "specifiers": [ "json" ] }, { "source": "datetime", "specifiers": [ "datetime", "timezone" ] }, { "source": "typing", "specifiers": [ "Any", "Optional" ] } ], "exports": [ "validate_property_value", "get_auto_property_value", "get_next_unique_id", "format_number" ], "totalLines": 188, "hasStructuralAnalysis": true }, "app/services/rollup_engine.py": { "filePath": "app/services/rollup_engine.py", "contentHash": "e6dc8c61a58f4b5b1b3c7e2b20d94d1b1c18175620f55c6d070af63be69cffc3", "functions": [ { "name": "_safe_avg", "params": [ "values" ], "returnType": "Optional[float]", "exported": true, "lineCount": 3 }, { "name": "_safe_stat", "params": [ "values", "fn" ], "returnType": "Optional[float]", "exported": true, "lineCount": 3 }, { "name": "_numeric", "params": [ "gen" ], "exported": true, "lineCount": 6 }, { "name": "_safe_range", "params": [ "values" ], "returnType": "Optional[float]", "exported": true, "lineCount": 3 }, { "name": "_percent_checked", "params": [ "values" ], "returnType": "Optional[float]", "exported": true, "lineCount": 8 }, { "name": "_percent_per_group", "params": [ "values" ], "returnType": "dict", "exported": true, "lineCount": 10 } ], "classes": [ { "name": "RollupEngine", "methods": [ "compute" ], "properties": [], "exported": true, "lineCount": 79 } ], "imports": [ { "source": "json", "specifiers": [ "json" ] }, { "source": "statistics", "specifiers": [ "statistics" ] }, { "source": "typing", "specifiers": [ "Any", "Optional" ] }, { "source": "app.db", "specifiers": [ "get_conn" ] } ], "exports": [ "RollupEngine", "_safe_avg", "_safe_stat", "_numeric", "_safe_range", "_percent_checked", "_percent_per_group" ], "totalLines": 151, "hasStructuralAnalysis": true }, "app/services/webhook_outbound.py": { "filePath": "app/services/webhook_outbound.py", "contentHash": "b9ccb68b7d18dd529d2509dca71bd0f0b66fb02c023aeb285659adaad82cd0d5", "functions": [ { "name": "fire_event", "params": [ "event", "payload" ], "exported": true, "lineCount": 16 }, { "name": "init_webhook_tables", "params": [], "exported": true, "lineCount": 14 } ], "classes": [], "imports": [ { "source": "json", "specifiers": [ "json" ] }, { "source": "logging", "specifiers": [ "logging" ] }, { "source": "httpx", "specifiers": [ "httpx" ] }, { "source": "app.db", "specifiers": [ "get_conn" ] } ], "exports": [ "fire_event", "init_webhook_tables" ], "totalLines": 52, "hasStructuralAnalysis": true }, "app/templates/accounts.html": { "filePath": "app/templates/accounts.html", "contentHash": "104e075b4278a0fab324bf24d3da4c90bf2dba6f2bce262f2fb045c48bef502d", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 132, "hasStructuralAnalysis": false }, "app/templates/base.html": { "filePath": "app/templates/base.html", "contentHash": "9997b65a9bf013d2a07a201cfafa058b5ca9028fff18b9572595351a9f001a3a", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 599, "hasStructuralAnalysis": false }, "app/templates/board_fragment.html": { "filePath": "app/templates/board_fragment.html", "contentHash": "537ccb9630b60c599a4b421353dcadbf5d6f836012a0d43efb554a1f72881740", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 61, "hasStructuralAnalysis": false }, "app/templates/board.html": { "filePath": "app/templates/board.html", "contentHash": "cfee7222d3bbf81c8b9abcab4e7f48877931d1254ad84bf9dfd59fafdb744186", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 301, "hasStructuralAnalysis": false }, "app/templates/card_detail.html": { "filePath": "app/templates/card_detail.html", "contentHash": "806c6806b76343d7d6822aa16f4b63f81409dd2b957e700a0cbdd98c995a6f3a", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 149, "hasStructuralAnalysis": false }, "app/templates/card.html": { "filePath": "app/templates/card.html", "contentHash": "53030391c81d49b9586de0dd153695f71e1935d6611fcb8a3f266ac8b8e131d6", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 29, "hasStructuralAnalysis": false }, "app/templates/dashboard.html": { "filePath": "app/templates/dashboard.html", "contentHash": "ab756877ed0fd2788bc565e43421c16905488d0f5e2ce18a437b71cfad4e4ba1", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 82, "hasStructuralAnalysis": false }, "app/templates/detailed_board.html": { "filePath": "app/templates/detailed_board.html", "contentHash": "367eff474c8017f33f511d31ff306c90815d6bb27ef11bd740b463b1f93a88a7", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 70, "hasStructuralAnalysis": false }, "app/templates/library.html": { "filePath": "app/templates/library.html", "contentHash": "4d3de3fbb3ad1d9b289815550562cd544c16c0b33d2e2a2c35194c5eb4e990f6", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 122, "hasStructuralAnalysis": false }, "app/templates/notes.html": { "filePath": "app/templates/notes.html", "contentHash": "e530dfbc410cfd6e06f7404c36221a00bafff6e3ef5e423ac59a12013fd571e9", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 31, "hasStructuralAnalysis": false }, "app/templates/page_editor.html": { "filePath": "app/templates/page_editor.html", "contentHash": "2e7a87b2d1daa04fb283020139716d1300124f7e413e17976e9a2d4c7c656234", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 251, "hasStructuralAnalysis": false }, "app/templates/status_overview.html": { "filePath": "app/templates/status_overview.html", "contentHash": "1e3bb60dfb393714d0a2217268e11aec8bc51a48a8876d7a099a37d989da892c", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 44, "hasStructuralAnalysis": false }, "app/templates/table_view.html": { "filePath": "app/templates/table_view.html", "contentHash": "bc1f41147c5874951108686c489ba5355d7f98f48f4f45b6c795da2e93df2c8a", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 133, "hasStructuralAnalysis": false }, "app/templates/team_load.html": { "filePath": "app/templates/team_load.html", "contentHash": "580841d5677fb9c67ff6d0ec9cd4f3c0e5347d45da41348d3c3538c8d3c8482b", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 50, "hasStructuralAnalysis": false }, "app/templates/trash.html": { "filePath": "app/templates/trash.html", "contentHash": "b186beda0c363da4f55cbcf2519dd9e0636d69aeda20dfc2f2055bbb4b86f41f", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 96, "hasStructuralAnalysis": false }, "ARCHITECTURE.md": { "filePath": "ARCHITECTURE.md", "contentHash": "ffa59fc0643beefc9500fb1ed19847fdca84f998f6cbc44bab2e00b84f83a84e", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 1309, "hasStructuralAnalysis": true }, "CHANGELOG.md": { "filePath": "CHANGELOG.md", "contentHash": "b960c52dc284a5ee7e663b86551c78587348b677cfd41bf5cc0a379f3b4f380a", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 87, "hasStructuralAnalysis": true }, "CONTRIBUTING.md": { "filePath": "CONTRIBUTING.md", "contentHash": "79bc0fc36ef57d406ef15c86cc1f1a7bb7c56ea29e024779430a9d6627cb99b4", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 33, "hasStructuralAnalysis": true }, "docker-compose.yml": { "filePath": "docker-compose.yml", "contentHash": "d3ff0b583f596858669ffd241999845bc05abeab5a9e8f7999cd9ae6c53dc72d", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 15, "hasStructuralAnalysis": true }, "Dockerfile": { "filePath": "Dockerfile", "contentHash": "1cbd3170df2d644b369508d5ba9999d920cccc2827f8b7bcb5872df0884b7bdd", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 20, "hasStructuralAnalysis": true }, "docs/NOTION_DATABASE_TASKS_GUIDE.md": { "filePath": "docs/NOTION_DATABASE_TASKS_GUIDE.md", "contentHash": "303c8fcea02592d3087145a10e01b270e492df4f7b251fbc3065e6e712fb7a6e", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 823, "hasStructuralAnalysis": true }, "images/Guide-complet-de-d-veloppement-du-panneau-lat-ral-de-navigat.html": { "filePath": "images/Guide-complet-de-d-veloppement-du-panneau-lat-ral-de-navigat.html", "contentHash": "b34a7ad9815a180f171f8a1ce6f6d4bf9fa43c6ce2f6cac2d50f19fbcc74a398", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 1692, "hasStructuralAnalysis": false }, "images/Guide-pour-d-velopper-un-clone-de-Notion-Bases-de-donn-es-T-.html": { "filePath": "images/Guide-pour-d-velopper-un-clone-de-Notion-Bases-de-donn-es-T-.html", "contentHash": "a8b6cc2381825c9cd47526e56aa0fd53290ba7aab1f8eed837ae5fbc47a9b41a", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 1522, "hasStructuralAnalysis": false }, "images/Guide-Technique-Complet-pour-Recr-er-l-diteur-Notion.html": { "filePath": "images/Guide-Technique-Complet-pour-Recr-er-l-diteur-Notion.html", "contentHash": "3f0c2d4dafa25b71a7749df5ad5bd8a34fbfdd5933687ea9402939d6c5d5fc80", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 1498, "hasStructuralAnalysis": false }, "images/Kanban board - Kanban board.url": { "filePath": "images/Kanban board - Kanban board.url", "contentHash": "a6d96c62b7bfeb9703d030a22337b01c8b3cbf346cb4d6c0920a2c252fd9d004", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 3, "hasStructuralAnalysis": false }, "pyproject.toml": { "filePath": "pyproject.toml", "contentHash": "6d7cd4157ad488b231b3759cd94ef8af8fb2e3599e9e58f030d06e914f5e3b0c", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 4, "hasStructuralAnalysis": true }, "README.md": { "filePath": "README.md", "contentHash": "10093e4adb993a2245387c5ddd69326b2e1ea831f310185c65c3ad9872329f32", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 98, "hasStructuralAnalysis": true }, "requirements.txt": { "filePath": "requirements.txt", "contentHash": "2471698d95faccb5e5af96cf7fd605cb4e9abbd9d15f5fdfefbe60f323149d2b", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 14, "hasStructuralAnalysis": false }, "ROADMAP.md": { "filePath": "ROADMAP.md", "contentHash": "fdc287635aa60eb953cc2a14a2b644309574a9f310cb1102a52b413257b84635", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 204, "hasStructuralAnalysis": true }, "static/css/app.css": { "filePath": "static/css/app.css", "contentHash": "206cd001f892e7546f84fef178f4640bbd1a50e6474d548ae1d8e9f3d5909c0d", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 2162, "hasStructuralAnalysis": false }, "static/js/app.js": { "filePath": "static/js/app.js", "contentHash": "72a3657551ac88b12f3d1242cf85b3437f5b315d693ea7b3325754b931923998", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 124, "hasStructuralAnalysis": true }, "tests/test_app.py": { "filePath": "tests/test_app.py", "contentHash": "de11fa6b658f819e8224cbef753f23bf8a8701f4be4fd1c777612c149cc07855", "functions": [ { "name": "client", "params": [], "exported": true, "lineCount": 17 }, { "name": "test_health", "params": [ "client" ], "exported": true, "lineCount": 7 }, { "name": "test_dashboard", "params": [ "client" ], "exported": true, "lineCount": 5 }, { "name": "test_stats", "params": [ "client" ], "exported": true, "lineCount": 6 }, { "name": "test_projects", "params": [ "client" ], "exported": true, "lineCount": 5 }, { "name": "test_board_404", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_csrf_rejected", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_auth_user", "params": [ "client" ], "exported": true, "lineCount": 4 }, { "name": "test_board_page_renders", "params": [ "client" ], "exported": true, "lineCount": 5 }, { "name": "test_dashboard_notion_ui", "params": [ "client" ], "exported": true, "lineCount": 5 }, { "name": "test_kanban_view", "params": [ "client" ], "exported": true, "lineCount": 4 }, { "name": "test_detailed_view", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_card_detail_html", "params": [ "client" ], "exported": true, "lineCount": 4 }, { "name": "test_create_issue_api", "params": [ "client" ], "exported": true, "lineCount": 4 }, { "name": "test_table_view", "params": [ "client" ], "exported": true, "lineCount": 5 }, { "name": "test_table_view_with_sort", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_kanban_with_status_filter", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_kanban_with_assignee_filter", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_kanban_with_multiple_sorts", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_status_overview", "params": [ "client" ], "exported": true, "lineCount": 5 }, { "name": "test_team_load", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_get_properties", "params": [ "client" ], "exported": true, "lineCount": 5 }, { "name": "test_get_ai_keywords", "params": [ "client" ], "exported": true, "lineCount": 5 }, { "name": "test_csrf_protects_properties_post", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_csrf_protects_sync", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_version_in_health", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_db_tables_exist", "params": [ "client" ], "exported": true, "lineCount": 15 }, { "name": "test_cors_headers", "params": [ "client" ], "exported": true, "lineCount": 6 }, { "name": "test_all_view_endpoints_respond", "params": [ "client" ], "exported": true, "lineCount": 5 }, { "name": "test_collections_api_list_empty", "params": [ "client" ], "exported": true, "lineCount": 7 }, { "name": "test_collections_api_crud", "params": [ "client" ], "exported": true, "lineCount": 48 }, { "name": "test_collections_pages_crud", "params": [ "client" ], "exported": true, "lineCount": 42 }, { "name": "test_collections_api_validation", "params": [ "client" ], "exported": true, "lineCount": 5 }, { "name": "test_collections_db_page_renders", "params": [ "client" ], "exported": true, "lineCount": 12 }, { "name": "test_boards_as_collections", "params": [ "client" ], "exported": true, "lineCount": 7 }, { "name": "test_property_types_api", "params": [ "client" ], "exported": true, "lineCount": 10 }, { "name": "test_collection_properties_crud", "params": [ "client" ], "exported": true, "lineCount": 71 }, { "name": "test_collection_properties_duplicate", "params": [ "client" ], "exported": true, "lineCount": 10 }, { "name": "test_collection_properties_validation", "params": [ "client" ], "exported": true, "lineCount": 9 }, { "name": "test_create_relation_property", "params": [ "client" ], "exported": true, "lineCount": 18 }, { "name": "test_link_pages_via_relation", "params": [ "client" ], "exported": true, "lineCount": 30 }, { "name": "test_rollup_compute", "params": [ "client" ], "exported": true, "lineCount": 42 }, { "name": "test_formula_evaluate", "params": [ "client" ], "exported": true, "lineCount": 32 }, { "name": "test_formula_empty_expression", "params": [ "client" ], "exported": true, "lineCount": 4 }, { "name": "test_views_calendar", "params": [ "client" ], "exported": true, "lineCount": 9 }, { "name": "test_views_gallery", "params": [ "client" ], "exported": true, "lineCount": 9 }, { "name": "test_views_list", "params": [ "client" ], "exported": true, "lineCount": 9 }, { "name": "test_views_timeline", "params": [ "client" ], "exported": true, "lineCount": 9 }, { "name": "test_views_default_table", "params": [ "client" ], "exported": true, "lineCount": 8 }, { "name": "test_views_calendar_navigation", "params": [ "client" ], "exported": true, "lineCount": 8 }, { "name": "test_view_config_update", "params": [ "client" ], "exported": true, "lineCount": 13 }, { "name": "test_save_view_as", "params": [ "client" ], "exported": true, "lineCount": 15 }, { "name": "test_list_views", "params": [ "client" ], "exported": true, "lineCount": 8 }, { "name": "test_sub_items_crud", "params": [ "client" ], "exported": true, "lineCount": 19 }, { "name": "test_status_aggregate", "params": [ "client" ], "exported": true, "lineCount": 17 }, { "name": "test_dependencies_check", "params": [ "client" ], "exported": true, "lineCount": 19 }, { "name": "test_dependencies_blocked", "params": [ "client" ], "exported": true, "lineCount": 16 }, { "name": "test_my_tasks_page", "params": [ "client" ], "exported": true, "lineCount": 5 }, { "name": "test_my_tasks_api", "params": [ "client" ], "exported": true, "lineCount": 13 }, { "name": "test_my_tasks_view_today", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_my_tasks_view_overdue", "params": [ "client" ], "exported": true, "lineCount": 3 }, { "name": "test_workspace_crud", "params": [ "client" ], "exported": true, "lineCount": 13 }, { "name": "test_comments_crud", "params": [ "client" ], "exported": true, "lineCount": 14 }, { "name": "test_favorites_crud", "params": [ "client" ], "exported": true, "lineCount": 14 }, { "name": "test_csv_import_export", "params": [ "client" ], "exported": true, "lineCount": 14 }, { "name": "test_public_view", "params": [ "client" ], "exported": true, "lineCount": 8 }, { "name": "test_db_templates", "params": [ "client" ], "exported": true, "lineCount": 13 }, { "name": "test_page_history", "params": [ "client" ], "exported": true, "lineCount": 12 }, { "name": "test_public_api_token", "params": [ "client" ], "exported": true, "lineCount": 6 }, { "name": "test_public_api_with_default_key", "params": [ "client" ], "exported": true, "lineCount": 8 }, { "name": "test_public_api_unauthorized", "params": [ "client" ], "exported": true, "lineCount": 4 }, { "name": "test_public_api_pages", "params": [ "client" ], "exported": true, "lineCount": 9 }, { "name": "test_webhooks_crud", "params": [ "client" ], "exported": true, "lineCount": 11 }, { "name": "test_pwa_manifest", "params": [ "client" ], "exported": true, "lineCount": 6 } ], "classes": [], "imports": [ { "source": "json", "specifiers": [ "json" ] }, { "source": "os", "specifiers": [ "os" ] }, { "source": "tempfile", "specifiers": [ "tempfile" ] }, { "source": "pytest", "specifiers": [ "pytest" ] }, { "source": "fastapi.testclient", "specifiers": [ "TestClient" ] } ], "exports": [ "client", "test_health", "test_dashboard", "test_stats", "test_projects", "test_board_404", "test_csrf_rejected", "test_auth_user", "test_board_page_renders", "test_dashboard_notion_ui", "test_kanban_view", "test_detailed_view", "test_card_detail_html", "test_create_issue_api", "test_table_view", "test_table_view_with_sort", "test_kanban_with_status_filter", "test_kanban_with_assignee_filter", "test_kanban_with_multiple_sorts", "test_status_overview", "test_team_load", "test_get_properties", "test_get_ai_keywords", "test_csrf_protects_properties_post", "test_csrf_protects_sync", "test_version_in_health", "test_db_tables_exist", "test_cors_headers", "test_all_view_endpoints_respond", "test_collections_api_list_empty", "test_collections_api_crud", "test_collections_pages_crud", "test_collections_api_validation", "test_collections_db_page_renders", "test_boards_as_collections", "test_property_types_api", "test_collection_properties_crud", "test_collection_properties_duplicate", "test_collection_properties_validation", "test_create_relation_property", "test_link_pages_via_relation", "test_rollup_compute", "test_formula_evaluate", "test_formula_empty_expression", "test_views_calendar", "test_views_gallery", "test_views_list", "test_views_timeline", "test_views_default_table", "test_views_calendar_navigation", "test_view_config_update", "test_save_view_as", "test_list_views", "test_sub_items_crud", "test_status_aggregate", "test_dependencies_check", "test_dependencies_blocked", "test_my_tasks_page", "test_my_tasks_api", "test_my_tasks_view_today", "test_my_tasks_view_overdue", "test_workspace_crud", "test_comments_crud", "test_favorites_crud", "test_csv_import_export", "test_public_view", "test_db_templates", "test_page_history", "test_public_api_token", "test_public_api_with_default_key", "test_public_api_unauthorized", "test_public_api_pages", "test_webhooks_crud", "test_pwa_manifest" ], "totalLines": 997, "hasStructuralAnalysis": true }, "WORKLOAD.md": { "filePath": "WORKLOAD.md", "contentHash": "fdc7f59e5ae150d94ea90bc3b1b9c159ab4ec443fd13947b7338f0d56173a86f", "functions": [], "classes": [], "imports": [], "exports": [], "totalLines": 60, "hasStructuralAnalysis": true } } }