Skip to content

Tutorial Follow-Up Tasks #916

Open
Open
@n1ru4l

Description

@n1ru4l

Enhancements

Additional Content

1. Codebase architecture and tools

  • Split schema into reusable modules
    Show-case type merging, by refactoring the current monolith schema into modules. Mention server preset's
  • Integrating graphql-eslint

2. Production usage

  • Production deployment
    A guide for deploying the app to production. Platform to be determined.
  • Rate Limiting.
    Implement rate-limiting for commenting and posting.

3. Abstract types

  • Advanced Error Handling using Union and Interface Types
  • Interface Types for Feed Items
    Introduce a new feed item type called Image. Change feed to return FeedItem interface type. Database migrations? 🤔

4. Integrating with 3rd party APIs

  • Integrate another third party API
    • Call a REST API from within GraphQL Resolvers
    • Call a GraphQL API from within GraphQL Resolvers
    • Merge local GraphQL Schema with a remote GraphQL schema
  • Caching and batching requests to solve N+1 problems
    Revisit mutation fields and change them to use union and interface types for expressing the errors.

5. Pagination

  • Relay Style Pagination
    Explain drawbacks of offset based pagination. Show implementation of relay style pagination. Implement correct indices for doing performant relay-style pagination.
  • Sorting + Indices
    Introduce post flavours using enum type. Filter feed per flavour. Set correct database indices for doing performant post flavour feed look-ups.

6. Subscriptions

7. Auth

  • Authentication with useGenericAuth
    Introduce Prisma model User and add register and logIn mutations. Limit Mutation.postLink and Mutation.postCommentOnLink to authentciated users.

Further thoughts

  • Should we provide a raw SQL non-prisma variant?
  • Should we provide a no-sql (mongodbor similar ) variant?

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions