{"id":50969293,"url":"https://github.com/cannlytics/cannlytics-api","last_synced_at":"2026-06-19T00:03:56.962Z","repository":{"id":48377035,"uuid":"335072931","full_name":"cannlytics/cannlytics-api","owner":"cannlytics","description":"The interface 🌐 to the logic of 🔥 Cannlytics.","archived":false,"fork":false,"pushed_at":"2021-08-03T04:11:19.000Z","size":178,"stargazers_count":8,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-11T18:25:35.566Z","etag":null,"topics":["api","cannabis","cannabis-api","cannabis-app","cannabis-data","cannabisapp","django","metrc","python"],"latest_commit_sha":null,"homepage":"https://cannlytics.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cannlytics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-01T20:18:19.000Z","updated_at":"2024-10-02T14:04:08.000Z","dependencies_parsed_at":"2022-09-21T15:14:10.574Z","dependency_job_id":null,"html_url":"https://github.com/cannlytics/cannlytics-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cannlytics/cannlytics-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cannlytics%2Fcannlytics-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cannlytics%2Fcannlytics-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cannlytics%2Fcannlytics-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cannlytics%2Fcannlytics-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cannlytics","download_url":"https://codeload.github.com/cannlytics/cannlytics-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cannlytics%2Fcannlytics-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34511622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","cannabis","cannabis-api","cannabis-app","cannabis-data","cannabisapp","django","metrc","python"],"created_at":"2026-06-19T00:03:56.113Z","updated_at":"2026-06-19T00:03:56.951Z","avatar_url":"https://github.com/cannlytics.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg height=\"32\" alt=\"\" src=\"https://cannlytics.com/static/cannlytics_website/images/logos/cannlytics_calyx_detailed.svg\"\u003e Cannlytics API\n\n[![license](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)\n[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)](https://github.com/cannlytics/cannlytics-api/fork)\n\n\nThe Cannlytics API provides an interface to quickly receive samples, perform analyses, collect and review results, and publish certificates of analysis (CoAs). There are also logistics, CRM (client relationship management), inventory management, and invoicing tools. The Cannlytics API comes with [**batteries included**](https://cannlytics.com/support/), but you are always welcome to supercharge your setup with custom modifications.\n\n- [Installation](#installation)\n- [Development](#development)\n- [Testing](#testing)\n- [Publishing](#publishing)\n- [License](#license)\n\n## Installation\u003ca name=\"installation\"\u003e\u003c/a\u003e\n\nInstalling the Cannlytics API is simple.\n\n```shell\ngit clone https://github.com/cannlytics.com/cannlytics-api\n```\n\n## Development\u003ca name=\"development\"\u003e\u003c/a\u003e\n\nRunning the Cannlytics API locally for development is easy.\n\n```shell\npython manage.py runserver 4200\n```\n\nor\n\n```shell\nnpm run dev\n```\n\n\u003e Note that the API is run on port 4200 to allow for simultaneous development with other pieces of the Cannlytics engine.\n\n## Testing\u003ca name=\"testing\"\u003e\u003c/a\u003e\n\nTests are performed with [`pytest`](https://docs.pytest.org/en/stable/). You can perform the tests by executing the `pytest` command from the `tests` directory.\n\n```shell\ncd tests\npytest\n```\n\n## Publishing\u003ca name=\"publishing\"\u003e\u003c/a\u003e\n\nSee [`docs/publishing.md`](docs/publishing.md) for instructions on how to publish the API. Publishing entails containerizing the API, deploying the container to Cloud Run, and directing hosting requests to the containerized app from Firebase Hosting. You can publish using Node.js with one quick command:\n\n```shell\nnpm run publish\n```\n\n## License \u003ca name=\"license\"\u003e\u003c/a\u003e\n\nThis application is released under the [MIT license](LICENSE.md). You can use the code for any purpose, including commercial projects.\n\n[![license](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)\n\nMade with 💖 by Cannlytics.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcannlytics%2Fcannlytics-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcannlytics%2Fcannlytics-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcannlytics%2Fcannlytics-api/lists"}