{"adoption": {"forks": 100, "observed_at": "2026-08-28T04:05:24.252419+00:00", "stars": 1700}, "canonical_url": "https://ross.abutalabs.com/products/timestrap", "card": {"archived": true, "artifact_type": "application", "description": "Time tracking you can host anywhere. Full export support in multiple formats and easily extensible.", "domain": ["developer-tools", "self-hosted", "web-development"], "enriched": true, "function": ["self-hosted", "developer-tools", "analytics"], "health_score": 10, "homepage": "https://timestrap.bythewood.me", "language": "Python", "license": "BSD-2-Clause", "license_family": "permissive", "maturity": "experimental", "member_repos": ["overshard/timestrap"], "name": "overshard/timestrap", "platform": ["self-hosted", "python"], "pushed_at": "2023-04-03T23:30:00+00:00", "repo": "overshard/timestrap", "stars": 1700, "tags": ["time-tracking", "django", "timetracker", "docker-compose", "postgresql", "export", "docker", "web-server"], "topics": ["python", "django", "docker", "self-hosted", "timetracker"], "urls": [], "use_cases": ["track billable hours for freelance clients", "self-host a time tracker instead of using a SaaS", "export timesheets to CSV or other formats", "track time across multiple projects and tasks", "run a team time tracking tool on my own server"], "what_it_is": "Timestrap is a self-hosted time tracking web application built with Python and Django, deployable anywhere via Docker. It supports exporting time tracking data in multiple formats and is designed to be easily extensible.", "when_to_avoid": ["you need a stable, production-ready tool with guaranteed upgrade paths (the project warns it is unstable pre-1.0)", "you want a polished mobile or desktop time tracking app", "you need active maintenance and frequent releases (latest release was April 2023)", "you want a zero-setup hosted solution"], "when_to_choose": ["you want a self-hosted, open-source time tracker you fully control", "you need flexible export of time data in multiple formats", "you are comfortable with Docker and Django deployments", "you want an extensible codebase to customize time tracking features"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/timestrap", "repo": "overshard/timestrap", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.252419+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:37:46.379046+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e60ca1e21fd66bc0e630802c4a466850e324422a1e1201836bec2d2a508dd542", "fetched_at": "2026-08-28T04:05:24.252419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/overshard/timestrap"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.252419+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:37:46.379046+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e60ca1e21fd66bc0e630802c4a466850e324422a1e1201836bec2d2a508dd542", "fetched_at": "2026-08-28T04:05:24.252419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/overshard/timestrap"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:37:46.379046+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e60ca1e21fd66bc0e630802c4a466850e324422a1e1201836bec2d2a508dd542", "fetched_at": "2026-08-28T04:05:24.252419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/overshard/timestrap"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.252419+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.252419+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.252419+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:37:46.379046+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e60ca1e21fd66bc0e630802c4a466850e324422a1e1201836bec2d2a508dd542", "fetched_at": "2026-08-28T04:05:24.252419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/overshard/timestrap"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.252419+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.252419+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:37:46.379046+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e60ca1e21fd66bc0e630802c4a466850e324422a1e1201836bec2d2a508dd542", "fetched_at": "2026-08-28T04:05:24.252419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/overshard/timestrap"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.252419+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.252419+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.252419+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:37:46.379046+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e60ca1e21fd66bc0e630802c4a466850e324422a1e1201836bec2d2a508dd542", "fetched_at": "2026-08-28T04:05:24.252419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/overshard/timestrap"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.252419+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.252419+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:37:46.379046+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e60ca1e21fd66bc0e630802c4a466850e324422a1e1201836bec2d2a508dd542", "fetched_at": "2026-08-28T04:05:24.252419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/overshard/timestrap"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:37:46.379046+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e60ca1e21fd66bc0e630802c4a466850e324422a1e1201836bec2d2a508dd542", "fetched_at": "2026-08-28T04:05:24.252419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/overshard/timestrap"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:37:46.379046+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e60ca1e21fd66bc0e630802c4a466850e324422a1e1201836bec2d2a508dd542", "fetched_at": "2026-08-28T04:05:24.252419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/overshard/timestrap"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:37:46.379046+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e60ca1e21fd66bc0e630802c4a466850e324422a1e1201836bec2d2a508dd542", "fetched_at": "2026-08-28T04:05:24.252419+00:00", "kind": "readme", "missing": false, "url": "https://github.com/overshard/timestrap"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3421, "days_push": 1248, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}