{"id":14007183,"url":"https://github.com/dailydotdev/daily-api","last_synced_at":"2025-05-15T14:05:27.138Z","repository":{"id":36969932,"uuid":"109269038","full_name":"dailydotdev/daily-api","owner":"dailydotdev","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-09T23:22:42.000Z","size":23612,"stargazers_count":443,"open_issues_count":4,"forks_count":101,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-05-10T00:26:32.010Z","etag":null,"topics":["apollo","daily","fastify","graphql","nodejs","postgresql","typeorm"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dailydotdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-11-02T13:34:09.000Z","updated_at":"2025-05-09T10:43:37.000Z","dependencies_parsed_at":"2023-09-26T19:12:41.704Z","dependency_job_id":"48c804ba-807a-4b4f-9953-460723c8e1a7","html_url":"https://github.com/dailydotdev/daily-api","commit_stats":{"total_commits":2479,"total_committers":33,"mean_commits":75.12121212121212,"dds":0.8172650262202501,"last_synced_commit":"8087a9020c7e2ad321138e3e5079114e7c3249f6"},"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dailydotdev%2Fdaily-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dailydotdev%2Fdaily-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dailydotdev%2Fdaily-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dailydotdev%2Fdaily-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dailydotdev","download_url":"https://codeload.github.com/dailydotdev/daily-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254355334,"owners_count":22057354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["apollo","daily","fastify","graphql","nodejs","postgresql","typeorm"],"created_at":"2024-08-10T10:01:53.217Z","updated_at":"2025-05-15T14:05:22.100Z","avatar_url":"https://github.com/dailydotdev.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eDaily API V2\u003c/h1\u003e\n  \u003cstrong\u003eProvide the daily.dev feed and engagement layer\u003c/strong\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://circleci.com/gh/dailydotdev/daily-api\"\u003e\n    \u003cimg src=\"https://img.shields.io/circleci/build/github/dailydotdev/daily-api/master.svg\" alt=\"Build Status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/dailydotdev/daily-api/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/dailydotdev/daily-api.svg\" alt=\"License\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://stackshare.io/daily/daily\"\u003e\n    \u003cimg src=\"http://img.shields.io/badge/tech-stack-0690fa.svg?style=flat\" alt=\"StackShare\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nThe project started as a monolith service for everything the extension needed (thus Daily API).\nSafely and slowly it was torn apart to other services to make every service have only one responsibility.\nThe so called Daily API kept to itself the content domain. The feed you know very well is delivered from here,\nalong with other very useful endpoints.\n\n## Stack\n\n- Node v22 (a `.nvmrc` is presented for [nvm](https://github.com/nvm-sh/nvm) users).\n- pnpm for managing dependencies.\n- Fastify as the web framework\n- Apollo for GraphQL\n- Typeorm as a database layer\n\n## Project structure\n\n- `__tests__` - There you can find all the tests and fixtures. Tests are written using `jest`.\n- `bin` - Folder with utilities and executables.\n- `helm` - The home of the service helm chart for easily deploying it to kubernetes.\n- `seeds` - JSON files with seed data for local development.\n- `src` - This is obviously the place where you can find the source files.\n  - `common` - Utility functions that are used across the project.\n  - `compatibility` - Fastify routes to keep backwards compatibility with API v1.\n  - `cron` - Tasks that will be deployed as cron jobs.\n  - `directive` - GraphQL schema directives.\n  - `entity` - Typeorm entities that are used to communicate with the database and sync its schema.\n  - `migration` - Typeorm migrations folder to update the database schema.\n  - `schema` - Apollo GraphQL resolvers, including also types.\n  - `workers` - Pub/Sub message handlers that are deployed as part of the background processor.\n\n## Local environment\n\nDaily API requires a running instance of PostgreSQL, you can easily set it up using the provided [`docker-compose`](docker-compose.yml) file.\n[Check out this guide](https://docs.docker.com/compose/install/) of how to install Docker Compose. Once installed, you can run `docker-compose up -d` and viola!\n\nMake sure to apply the latest migrations by running:\n`pnpm run db:migrate:latest`\n\n[.env](.env) is used to set the required environment variables. It is loaded automatically by the project.\n\nIf you want some seed data you can run:\n`pnpm run db:seed:import`\n\nFinally run `pnpm run dev` to run the service and listen to port `5000`.\n\n### Caveat\n\nCurrently, there is no staging environment for Algolia so there is no search functionality for local development.\n\n## GraphORM\n\nWe have an internal solution to tackle problems we have encountered along the way.\nThe library is in its early stages so we are continually writing the documentation to provide better developer experience. Have a look at the link below:\nhttps://github.com/dailydotdev/daily-api/wiki/GraphORM\n\n## Want to Help?\n\nSo you want to contribute to Daily API and make an impact, we are glad to hear it. :heart_eyes:\n\nBefore you proceed we have a few guidelines for contribution that will make everything much easier.\nWe would appreciate if you dedicate the time and read them carefully:\nhttps://github.com/dailydotdev/.github/blob/master/CONTRIBUTING.md\n","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdailydotdev%2Fdaily-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdailydotdev%2Fdaily-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdailydotdev%2Fdaily-api/lists"}