{"id":38706632,"url":"https://github.com/keesey/phylopic","last_synced_at":"2026-01-17T10:56:56.407Z","repository":{"id":43267473,"uuid":"474539819","full_name":"keesey/phylopic","owner":"keesey","description":"Central repository for PhyloPic","archived":false,"fork":false,"pushed_at":"2025-09-25T18:17:18.000Z","size":7562,"stargazers_count":24,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-25T19:28:16.420Z","etag":null,"topics":["aws","biology","crowdsourcing","illustration","nextjs","phylogeny","phylopic","sciart","serverless","typescript"],"latest_commit_sha":null,"homepage":"https://www.phylopic.org/","language":"TypeScript","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/keesey.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-03-27T05:03:33.000Z","updated_at":"2025-09-25T18:09:59.000Z","dependencies_parsed_at":"2023-02-06T07:17:00.293Z","dependency_job_id":"5fde97f9-f8a9-491e-a13a-ecf5d56ca611","html_url":"https://github.com/keesey/phylopic","commit_stats":{"total_commits":875,"total_committers":1,"mean_commits":875.0,"dds":0.0,"last_synced_commit":"9ea3dfa13f46866915acefd5317ce4ac8414aacb"},"previous_names":[],"tags_count":242,"template":false,"template_full_name":null,"purl":"pkg:github/keesey/phylopic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keesey%2Fphylopic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keesey%2Fphylopic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keesey%2Fphylopic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keesey%2Fphylopic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keesey","download_url":"https://codeload.github.com/keesey/phylopic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keesey%2Fphylopic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28506593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T10:25:30.148Z","status":"ssl_error","status_checked_at":"2026-01-17T10:25:29.718Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["aws","biology","crowdsourcing","illustration","nextjs","phylogeny","phylopic","sciart","serverless","typescript"],"created_at":"2026-01-17T10:56:55.820Z","updated_at":"2026-01-17T10:56:56.399Z","avatar_url":"https://github.com/keesey.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PhyloPic\n\n_[PhyloPic](https://www.phylopic.org)_ is an open database of freely reusable silhouettes of life forms. Code for _PhyloPic_ resides in this [monorepo](https://turborepo.org/docs).\n\nMost of the code for _PhyloPic_ is [TypeScript](https://www.typescriptlang.org/).\n\n## Projects\n\n### Apps\n\n| Project Path                    | Description                                                                                          |\n| ------------------------------- | ---------------------------------------------------------------------------------------------------- |\n| [api](./apps/api)               | Serverless API for accessing _PhyloPic_ data                                                         |\n| [api-docs](./apps/api-docs)     | Documentation for the _PhyloPic_ API                                                                 |\n| [contribute](./apps/contribute) | Public webapp for contributing silhouette images                                                     |\n| [edit](./apps/edit)             | Private webapp (run locally) for managing _PhyloPic_, including contribution review and data editing |\n| [publish](./apps/publish)       | Code for administrating _PhyloPic_, including publishing releases and managing source files          |\n| [www](./apps/www)               | Public webapp for searching for and viewing silhouette images                                        |\n\n### Packages\n\n| Project Path                                                | Description                                                                   |\n| ----------------------------------------------------------- | ----------------------------------------------------------------------------- |\n| [api-models](./packages/api-models)                         | Type declarations and utility files for data models used by the API           |\n| [eslint-config-phylopic](./packages/eslint-config-phylopic) | ESLint configurations used throughout the project                             |\n| [source-client](./packages/source-client)                   | Client object for reading and writing source models and files                 |\n| [source-models](./packages/source-models)                   | Type declarations and utility files for data models used in the source bucket |\n| [styles](./packages/styles)                                 | Stylesheet values and mixins                                                  |\n| [tsconfig](./packages/tsconfig)                             | Typescript configurations used throughout the project                         |\n| [ui](./packages/ui)                                         | Commonly-used React components for user interfaces                            |\n| [utils](./packages/utils)                                   | Common code                                                                   |\n| [utils-api](./packages/utils-api)                           | Common code related to using the API in a webapp                              |\n| [utils-aws](./packages/utils-aws)                           | Common code related to Amazon Web Services                                    |\n\n### Database scripts\n\nThe scripts for creating the project's Postgres databases are in [sql](./sql/README.md).\n\n## Getting started\n\n[Yarn](https://classic.yarnpkg.com/) (v1.22 or higher) is required for this monorepo project. [Node.js](https://nodejs.org/en/download/) (v20 or higher) is also required for most apps.\n\nRun `yarn` from the project root to install dependencies.\n\n### Prerequisites\n\nRunning the scripts in the [publish](./apps/publish) project requires additional prerequisites. See [the documentation](./apps/publish/README.md#prerequisites) for details.\n\n## Formatting and linting\n\nTo clean up formatting for all source files in all projects, run:\n\n```sh\nyarn format\n```\n\nTo lint all source files and automatically fix certain issues:\n\n```sh\nyarn lint\n```\n\n## Testing\n\nTo run unit tests in all projects that have them:\n\n```sh\nyarn test\n```\n\n## Running locally\n\nIf you are running against your own databases, you will need to set those up. _PhyloPic_ uses [Postgres](https://www.postgresql.org/) databases. Scripts for creating them are listed in the [sql](./sql/README.md) documentation.\n\nCertain apps require environment variables to be set before they can be run locally. See each app's documentation for details:\n\n- [api](./apps/api/README.md#environment-variables)\n- [contribute](./apps/contribute/README.md#environment-variables)\n- [edit](./apps/edit/README.md#environment-variables)\n- [publish](./apps/publish/README.md#environment-variables)\n- [www](./apps/www/README.md#environment-variables)\n\nIt may be easiest to focus on setting up a particular app and running it on its own. But, if you have them all set up, you can run them all locally at the same time with this command:\n\n```sh\nyarn dev\n```\n\nApps will run on the following ports:\n\n| App Project                     | Port   |\n| ------------------------------- | ------ |\n| [api](./apps/api)               | `3003` |\n| [contribute](./apps/contribute) | `3002` |\n| [edit](./apps/edit)             | `3001` |\n| [www](./apps/www)               | `3000` |\n\n## Releasing versions\n\nThe [semantic versioning](https://semver.org/) of the monorepo is only updated when root dependencies are updated (for example, `turborepo`), or potentially when major changes are made. To create a new version:\n\n- Update `version` in [`package.json`](./package.json).\n- Update [`CHANGELOG.md`](./CHANGELOG.md), moving all `[Unreleased]` items into a new entry for the new version.\n- Commit the changes.\n- Tag the commit with `@phylopic/v[M].[m].[p]`, where `[M]`, `[m]`, and `[p]` are integers denoting the major version, minor version, and patch version, respectively. Example: `@phylopic/v2.0.9`. Push the tag to `origin`.\n\n## Apps and packages\n\nEach subproject (app or package) has its own [semantic versioning](https://semver.org/). To release a new version:\n\n- Update `version` in the subproject's `package.json`.\n- Update the subproject's `CHANGELOG.md`, moving all `[Unreleased]` items into a new entry for the new version.\n- Commit the changes.\n- Tag the commit with `@phylopic/[subproject]/v[M].[m].[p]`, where `[subproject]` is the name of the project (for example, `www`) and `[M]`, `[m]`, and `[p]` are integers denoting the major version, minor version, and patch version, respectively. Example: `@phylopic/www/v2.6.12`. Push the tag to `origin`.\n- For apps, publish the new version:\n    - For `api` or `api-docs`, run `yarn deploy`.\n    - For `contribute`, reset the `@phylopic/contribute/prod` branch to the release's commit and push to `origin`. Deployment can be monitored in Vercel.\n    - For `www`, reset the `@phylopic/www/prod` branch to the release's commit and push to `origin`. Deployment can be monitored in Vercel.\n    - No action is necessary for `edit` or `publish`, which are only run locally.\n\n## Contributing\n\nTo contribute to the development of _PhyloPic_, please read the guidelines in [`CONTRIBUTING.md`](./CONTRIBUTING.md) and contact Mike Keesey ([`keesey+phylopic@gmail.com`](mailto:keesey+phylopic@gmail.com)). The repository is open and may be forked, with pull requests made back into the original repository.\n\n## Further documentation\n\n- [Contributing](./CONTRIBUTING.md)\n- [AWS S3 Bucket Structure](./S3.md)\n- [Subdomains](./SUBDOMAINS.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeesey%2Fphylopic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeesey%2Fphylopic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeesey%2Fphylopic/lists"}