Git Product home page Git Product logo

daily-api's Introduction

Daily API V2

Provide the daily.dev feed and engagement layer

Build Status License StackShare

The project started as a monolith service for everything the extension needed (thus Daily API). Safely and slowly it was tore apart to other services to make every service has only one responsibility. The so called Daily API kept to itself the content domain. The feed you know very well is delivered from here, along with other very useful endpoints.

Stack

  • Node v18 (a .nvmrc is presented for nvm users).
  • NPM for managing dependencies.
  • Fastify as the web framework
  • Apollo for GraphQL
  • Typeorm as a database layer

Project structure

  • __tests__ - There you can find all the tests and fixtures. Tests are written using jest.
  • bin - Folder with utilities and executables.
  • helm - The home of the service helm chart for easily deploying it to kubernetes.
  • seeds - JSON files with seed data for local development.
  • src - This is obviously the place where you can find the source files.
    • common - Utility functions that are used across the project.
    • compatibility - Fastify routes to keep backwards compatibility with API v1.
    • cron - Tasks that will be deployed as cron jobs.
    • directive - GraphQL schema directives.
    • entity - Typeorm entities that are used to communicate with the database and sync its schema.
    • migration - Typeorm migrations folder to update the database schema.
    • schema - Apollo GraphQL resolvers, including also types.
    • workers - Pub/Sub message handlers that are deployed as part of the background processor.

Local environment

Daily API requires a running instance of PostgreSQL, you can easily set it up using the provided docker-compose file. Check out this guide of how to install Docker Compose. Once installed, you can run docker-compose up -d and viola!

Make sure to apply the latest migrations by running: npm run db:migrate:latest

.env is used to set the required environment variables. It is loaded automatically by the project.

If you want some seed data you can run: npm run db:seed:import

Finally run npm run dev to run the service and listen to port 5000.

Caveat

Currently, there is no staging environment for Algolia so there is no search functionality for local development.

GraphORM

We have an internal solution to tackle problems we have encountered along the way. The 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: https://github.com/dailydotdev/daily-api/wiki/GraphORM

Want to Help?

So you want to contribute to Daily API and make an impact, we are glad to hear it. ๐Ÿ˜

Before you proceed we have a few guidelines for contribution that will make everything much easier. We would appreciate if you dedicate the time and read them carefully: https://github.com/dailydotdev/.github/blob/master/CONTRIBUTING.md

daily-api's People

Contributors

andrei0872 avatar chetanbasuray avatar dependabot-preview[bot] avatar dependabot[bot] avatar idoshamun avatar nimrodkra avatar ombratteng avatar prateek3255 avatar qaoo8 avatar rebelchris avatar sshanzel avatar vpol avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.